Пример #1
0
 internal void OnVisualTreeNodeSelected(VisualTreeNodeSelected args)
 {
     Project.State.SelectedVisualTreeNode = args.Node;
     _dataReceived = PouchTypes.None;
     RefreshWidget(Project.State.SelectedPouch);
 }
Пример #2
0
        protected override Control OnDefineLayout()
        {
            _container = new TableLayout(1, 2);

            var header = new Label
            {
                Text = "Visual Tree"
            };

            var actionBar = new TableLayout(5, 1)
            {
                Spacing = new Size(5, 0),
                Padding = new Padding(0, 0, 0, 5)
            };

            var refreshBtn = new ImageButton
            {
                ToolTip = "Refresh",
                Image   = AppImages.Refresh,
                Width   = 18,
                Height  = 18
            };

            var addBtn = new ImageButton
            {
                ToolTip = "Register New View",
                Image   = AppImages.AddView,
                Width   = 18,
                Height  = 18
            };

            var editBtn = new ButtonMenuList
            {
                ToolTip = "Edit View",
                Image   = AppImages.Edit,
                Width   = 18,
                Height  = 18
            };

            if (_editMenuItems != null)
            {
                editBtn.AddRange(_editMenuItems);
            }

            // visual tree
            _tree = new TreeGridView
            {
                ShowHeader  = false,
                ContextMenu = _contextMenu
            };

            _tree.Columns.Add(new GridColumn {
                DataCell = new VisualTreeCell(), HeaderText = "Image and Text", AutoSize = true, Resizable = true, Editable = false
            });

            _tree.SelectionChanged += (s, e) =>
            {
                // An item has been selected
                var ti = _tree.SelectedItem as TreeGridItem;

                if (ti?.Tag != null)
                {
                    // does this visual tree node have the data we need?
                    var node = (VisualTreeNode)ti.Tag;

                    if (_tree.SelectedRows.Any())
                    {
                        _lastSelected = _tree.SelectedRows.First();

                        // notify outside views
                        var evt = new VisualTreeNodeSelected(node);
                        ToolboxApp.Bus.Notify(evt);
                    }
                }
                else
                {
                    ToolboxApp.Log.Error("The selected node did not have an attached widget.");
                }
            };

            // layout
            actionBar.Add(header, 0, 0, true, false);
            actionBar.Add(addBtn, 1, 0, false, false);
            actionBar.Add(editBtn, 2, 0, false, false);
            actionBar.Add(refreshBtn, 3, 0, false, false);
            actionBar.Add(null, 4, 0, false, false);

            _container.Add(actionBar, 0, 0, false, false);
            _container.Add(_tree, 0, 1, false, true);

            addBtn.Click += OnAddViewClicked;

            refreshBtn.Click += (s, e) =>
            {
                ToolboxApp.Bus.Notify(new ForceVisualTreeRefresh());
                ToolboxApp.Bus.Notify(new ShowStatusMessage("Visual Tree refresh requested"));
            };

            return(_container);
        }