예제 #1
0
파일: TreeView.cs 프로젝트: bartwe/Gearset
        public TreeView()
            : base(GearsetSettings.Instance.TreeViewConfig)
        {
            Config.Cleared += Config_Cleared;
            Config.Filter = String.Empty;

            _root = new TreeViewNode("root");
            #if XBOX
            this.openedTexture = GearsetResources.Content.Load<Texture2D>("close_Xbox360");
            this.closedTexture = GearsetResources.Content.Load<Texture2D>("open_Xbox360");
            #elif WINDOWS_PHONE
            this.openedTexture = GearsetResources.Content.Load<Texture2D>("close_wp");
            this.closedTexture = GearsetResources.Content.Load<Texture2D>("open_wp");
            #else
            _openedTexture = GearsetResources.Content.Load<Texture2D>("close");
            _closedTexture = GearsetResources.Content.Load<Texture2D>("open");
            #endif
            _position = new Vector2(5, 20);
        }
예제 #2
0
파일: TreeView.cs 프로젝트: bartwe/Gearset
        /// <summary>
        ///     Sets the value of a specified key, if the key is not present
        ///     in the tree, then is added.
        /// </summary>
        /// <param name="key"></param>
        public void Set(String key, Object value)
        {
            var foundKey = false;
            var currentNode = _root;
            var remainingName = key;
            while (!foundKey) {
                _iterationCount++;
                String subName;
                var foundSubKey = false;

                var dotIndex = remainingName.IndexOf('.');
                if (dotIndex < 0 || dotIndex >= remainingName.Length) {
                    subName = remainingName;
                    remainingName = "";
                    foundKey = true;
                }
                else {
                    subName = remainingName.Remove(dotIndex, remainingName.Length - dotIndex);
                    remainingName = remainingName.Substring(subName.Length + 1);
                }

                foreach (var node in currentNode.Nodes) {
                    if (node.Name == subName) {
                        currentNode = node;
                        foundSubKey = true; // A part of the key was found.
                        break;
                    }
                }
                if (!foundSubKey) {
                    // If there's no subKey, we create it.
                    var newNode = new TreeViewNode(subName);
                    currentNode.Nodes.Add(newNode);
                    currentNode = newNode;
                    foundSubKey = true; // A part of the key was found (created).
                }
            }
            currentNode.Value = value;
        }
예제 #3
0
파일: TreeView.cs 프로젝트: bartwe/Gearset
 void DrawNode(TreeViewNode node, int position, int level)
 {
     var drawPosition = new Vector2(_position.X + level * 11, _position.Y + position);
     if (node.Nodes.Count == 0) {
         DrawText(node.Name + ": " + TextHelper.FormatForDebug(node.Value), drawPosition);
     }
     else {
         var color = new Color(1, 1, 1, GearsetResources.GlobalAlpha) * GearsetResources.GlobalAlpha;
         if (!node.Open)
             GearsetResources.SpriteBatch.Draw(_closedTexture, drawPosition - new Vector2(12, 0), color);
         else
             GearsetResources.SpriteBatch.Draw(_openedTexture, drawPosition - new Vector2(12, 0), color);
         DrawText(node.Name, drawPosition);
     }
 }
예제 #4
0
파일: TreeView.cs 프로젝트: bartwe/Gearset
 int DrawRecursively(TreeViewNode node, int position, int level)
 {
     var newPosition = position + 12;
     DrawNode(node, position, level);
     if (node.Open) {
         foreach (var n in node.Nodes) {
             newPosition = DrawRecursively(n, newPosition, level + 1);
         }
     }
     return newPosition;
 }
예제 #5
0
파일: TreeView.cs 프로젝트: bartwe/Gearset
        int CheckLeftRecursively(TreeViewNode node, int position, int level, Vector2 clickPos)
        {
            var newPosition = position + 12;

            var rect = new Rectangle((int)_position.X + level * 11 - 12, (int)_position.Y + position, _closedTexture.Width, _closedTexture.Height);
            if (rect.Contains((int)clickPos.X, (int)clickPos.Y)) {
                node.Toggle();
                return newPosition;
            }
            if (node.Open) {
                foreach (var n in node.Nodes) {
                    newPosition = CheckLeftRecursively(n, newPosition, level + 1, clickPos);
                }
            }
            return newPosition;
        }