Beispiel #1
0
        //...

        static LayoutGroupControl GetParent(this ILayoutControl input, LayoutGroupControl parent = null)
        {
            if (parent == null)
            {
                if (ReferenceEquals(input.Root.Child, input))
                {
                    return(null);
                }

                if (input.Root.Child is LayoutGroupControl i)
                {
                    return(input.GetParent(i));
                }
            }

            foreach (var i in parent.Children)
            {
                if (ReferenceEquals(i, input))
                {
                    return(parent);
                }

                if (i is LayoutGroupControl j)
                {
                    var result = input.GetParent(j);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }
            return(null);
        }
Beispiel #2
0
        //...

        static void EachControl <T>(ILayoutControl i, Action <T> action) where T : LayoutContentGroupControl
        {
            if (i == null)
            {
                return;
            }

            if (typeof(T).Equals(typeof(LayoutDocumentGroupControl)))
            {
                if (i is LayoutDocumentGroupControl a)
                {
                    action(a as T);
                }
            }
            if (typeof(T).Equals(typeof(LayoutPanelGroupControl)))
            {
                if (i is LayoutPanelGroupControl b)
                {
                    action(b as T);
                }
            }
            if (i is LayoutGroupControl c)
            {
                EachControl(i, action, c);
            }
        }
        protected override void Form_Closing(object sender, FormClosingEventArgs e)
        {
            ILayoutControl lc = this.GetCustomProperty(SearchPanelName, false) as ILayoutControl;

            if (lc != null)
            {
                lc.SaveLayout();
            }

            base.Form_Closing(sender, e);
        }
Beispiel #4
0
        //...

        static void Unsubscribe(ILayoutControl i)
        {
            if (i is LayoutDocumentGroupControl a)
            {
                a.DockView.Unsubscribe(a);
                a.DockView.DocumentGroups.Remove(a);
            }
            if (i is LayoutPanelGroupControl b)
            {
                b.DockView.Unsubscribe(b);
                b.DockView.PanelGroups.Remove(b);
            }
        }
Beispiel #5
0
        public static void EachControl <T>(this ILayoutControl input, Action <T> action, LayoutGroupControl parent = null) where T : LayoutContentGroupControl
        {
            if (parent == null)
            {
                EachControl(input, action);
                return;
            }

            foreach (var i in parent.Children)
            {
                EachControl(i as ILayoutControl, action);
            }
        }
        private static void EnumerateControls(Control parent, Action <ILayoutControl> action)
        {
            ILayoutControl lc = parent as ILayoutControl;

            if (lc != null)
            {
                action(lc);
            }

            foreach (Control c in parent.Controls)
            {
                EnumerateControls(c, action);
            }
        }
Beispiel #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="grid"></param>
        private static void LoadDefaultLayout(this IGrid grid)
        {
            grid.LoadGroupLayout();

            if (!grid.GridHelper.m_firstLoad)
            {
                ILayoutControl layout = grid as ILayoutControl;
                if (layout != null)
                {
                    if (!layout.LoadLayout())
                    {
                        // maybe too slow
                        grid.AutoAdjustColumnWidth();
                    }
                    else
                    {
                        grid.GridHelper.m_firstLoad = true;
                    }
                }
            }
        }
Beispiel #8
0
        //...

        public static Point GetPosition(this ILayoutControl input)
        {
            var x = input.ActualWidth / 2;
            var y = input.ActualHeight / 2;

            UIElement last = input as UIElement;

            while (true)
            {
                var parent = last.FindParent <LayoutGroupControl>();
                if (parent != null)
                {
                    foreach (FrameworkElement i in parent.Children)
                    {
                        if (i.Equals(last))
                        {
                            break;
                        }

                        if (parent.Orientation == Orientation.Horizontal)
                        {
                            x += i.ActualWidth;
                        }

                        if (parent.Orientation == Orientation.Vertical)
                        {
                            y += i.ActualHeight;
                        }
                    }
                    last = parent;
                }
                else
                {
                    break;
                }
            }
            return(new Point(x, y));
        }
Beispiel #9
0
        static List <T> GetAll <T>(ILayoutControl i) where T : Content
        {
            var result = new List <T>();

            if (i == null)
            {
                return(result);
            }

            if (typeof(T).Equals(typeof(Document)))
            {
                if (i is LayoutDocumentGroupControl a)
                {
                    foreach (T j in a.Source)
                    {
                        result.Add(j);
                    }
                }
            }
            if (typeof(T).Equals(typeof(Models.Panel)))
            {
                if (i is LayoutPanelGroupControl b)
                {
                    foreach (T j in b.Source)
                    {
                        result.Add(j);
                    }
                }
            }
            if (i is LayoutGroupControl c)
            {
                foreach (var j in GetAll <T>(i, c))
                {
                    result.Add(j);
                }
            }
            return(result);
        }
Beispiel #10
0
        public static List <T> GetAll <T>(this ILayoutControl input, LayoutGroupControl parent = null) where T : Content
        {
            var result = new List <T>();

            if (parent == null)
            {
                foreach (var i in GetAll <T>(input))
                {
                    result.Add(i);
                }

                return(result);
            }

            foreach (var i in parent.Children)
            {
                foreach (var j in GetAll <T>(i as ILayoutControl))
                {
                    result.Add(j);
                }
            }

            return(result);
        }
Beispiel #11
0
        private void UpdateChildren()
        {
            ILayoutControl[] array = base.Children.OfType <ILayoutControl>().ToArray <ILayoutControl>();
            this.DetachOldSplitters();
            this.DetachPropertChangeHandler();
            base.Children.Clear();
            base.ColumnDefinitions.Clear();
            base.RowDefinitions.Clear();
            if (this._model == null || this._model.Root == null)
            {
                return;
            }
            DockingManager manager = this._model.Root.Manager;

            if (manager == null)
            {
                return;
            }
            foreach (T child in this._model.Children)
            {
                ILayoutElement layoutElement = child;
                ILayoutControl layoutControl = array.FirstOrDefault <ILayoutControl>((ILayoutControl chVM) => chVM.Model == layoutElement);
                if (layoutControl == null)
                {
                    base.Children.Add(manager.CreateUIElementForModel(layoutElement));
                }
                else
                {
                    base.Children.Add(layoutControl as UIElement);
                }
            }
            this.CreateSplitters();
            this.UpdateRowColDefinitions();
            this.AttachNewSplitters();
            this.AttachPropertyChangeHandler();
        }
 public MyFocusHelper(ILayoutControl control)
     : base(control)
 {
 }
 public MyLayoutControlController(ILayoutControl control) : base(control)
 {
 }
Beispiel #14
0
        //...

        public static void Delete(this ILayoutControl input)
        {
            var parent = input.GetParent();

            if (parent == null)
            {
                Unsubscribe(input);
                input.Root.Child = null;
                return;
            }

            var index = input.GetIndex();

            if (index == -1)
            {
                throw new IndexOutOfRangeException();
            }

            Unsubscribe(input);
            parent.Children.RemoveAt(index);

            //Remove the column or row definition
            if (parent.Orientation == Orientation.Horizontal)
            {
                parent.ColumnDefinitions.RemoveAt(index);
            }

            if (parent.Orientation == Orientation.Vertical)
            {
                parent.RowDefinitions.RemoveAt(index);
            }

            if (parent.Children.Count > 0)
            {
                if (index >= parent.Children.Count)
                {
                    index = parent.Children.Count - 1;
                }

                //Remove the grid splitter
                if (index < parent.Children.Count)
                {
                    if (parent.Children[index] is GridSplitter)
                    {
                        parent.Children.RemoveAt(index);
                        //Remove the column or row definition again
                        if (parent.Orientation == Orientation.Horizontal)
                        {
                            parent.ColumnDefinitions.RemoveAt(index);
                        }

                        if (parent.Orientation == Orientation.Vertical)
                        {
                            parent.RowDefinitions.RemoveAt(index);
                        }
                    }
                }
            }

            //Reassign all column or row values
            for (var i = 0; i < parent.Children.Count; i++)
            {
                if (parent.Orientation == Orientation.Horizontal)
                {
                    Grid.SetColumn(parent.Children[i], i);
                }

                if (parent.Orientation == Orientation.Vertical)
                {
                    Grid.SetRow(parent.Children[i], i);
                }
            }

            //Remove the parent from it's own parent to avoid empty LayoutGroupControls
            if (parent.Children.Count == 0)
            {
                parent.Delete();
            }
        }
Beispiel #15
0
 public ControlLayoutMethod(ILayoutControl layoutControl)
 {
     this.LayoutControl = layoutControl;
 }
Beispiel #16
0
        //...

        public static int GetIndex(this ILayoutControl input) => input.GetParent()?.Children.IndexOf(input as UIElement) ?? -1;
Beispiel #17
0
 public static LayoutGroupControl GetParent(this ILayoutControl input) => input.GetParent(null);
Beispiel #18
0
 public ControlLayoutMethod(ILayoutControl layoutControl)
 {
     this.LayoutControl = layoutControl;
 }
 public static ArrayList GetItemsInVisibleOrder(ILayoutControl control)
 {
     return(new MyFocusHelper(control).GetItemsInVisibleOrder());
 }
Beispiel #20
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            // One element should be selected and will be the active element
            Document document = commandData.Application.ActiveUIDocument.Document;

            if (commandData.Application.ActiveUIDocument.Selection.GetElementIds().Count != 1)
            {
                TaskDialog.Show("Error", "One element should be selected");
                return(Result.Cancelled);
            }

            // Check if five rebars are inside the project
            ElementId elementId = (new FilteredElementCollector(document).OfClass(typeof(RebarBarType)).ToElementIds() as List <ElementId>)[4] as ElementId;

            if (elementId == null)
            {
                TaskDialog.Show("Error", "At least five rebars should on this project");
                return(Result.Cancelled);
            }

            Element   activeElement   = null;
            ElementId activeElementId = null;


            foreach (ElementId eId in commandData.Application.ActiveUIDocument.Selection.GetElementIds())
            {
                activeElementId = eId;
            }

            //Create all schema instances associated to tabs instances with default constructor
            var instanceTabTextBox       = new TabTextBoxSchema();
            var instanceTabGrid          = new TabGridSchema();
            var instanceTabKey           = new TabKeySchema();
            var instanceTabNumericUpDown = new TabNumericUpDownSchema();
            var instanceTabComboBox      = new TabComboBoxSchema();
            var instanceTabListTextBox   = new TabListTextBoxSchema(document);
            var instanceTabEnum          = new TabEnumSchema();
            var instanceTabList          = new TabListSchema();
            var instanceTabCategory      = new TabCategorySchema();
            var instanceTabMiscellanious = new TabMiscellaniousSchema();


            // Data preparation
            // initialization of element from the Revit project
            instanceTabComboBox.ComboBoxElementId = elementId;
            instanceTabTextBox.TextBoxElementId   = activeElementId;
            activeElement = commandData.Application.ActiveUIDocument.Document.GetElement(activeElementId);

            rebarList = new FilteredElementCollector(document).OfClass(typeof(RebarBarType)).ToElements().Cast <RebarBarType>().ToList();

            // Check if we are in reading mode by quering active element
            isTabTextBoxSchemaExistsOnElement       = instanceTabTextBox.Exists(activeElement);
            isTabGridSchemaExistsOnElement          = instanceTabGrid.Exists(activeElement);
            isTabKeySchemaExistsOnElement           = instanceTabKey.Exists(activeElement);
            isTabNumericUpDownSchemaExistsOnElement = instanceTabNumericUpDown.Exists(activeElement);
            isTabComboBoxSchemaExistsOnElement      = instanceTabComboBox.Exists(activeElement);
            isTabListTextBoxSchemaExistsOnElement   = instanceTabListTextBox.Exists(activeElement);
            isTabEnumSchemaExistsOnElement          = instanceTabEnum.Exists(activeElement);
            isTabListSchemaExistsOnElement          = instanceTabList.Exists(activeElement);
            isTabCategorySchemaExistsOnElement      = instanceTabCategory.Exists(activeElement);
            isTabMiscellaniousSchemaExistsOnElement = instanceTabMiscellanious.Exists(activeElement);

            //Load data
            instanceTabTextBox.Load(activeElement);
            instanceTabGrid.Load(activeElement);
            instanceTabKey.Load(activeElement);
            instanceTabNumericUpDown.Load(activeElement);
            instanceTabComboBox.Load(activeElement);
            instanceTabListTextBox.Load(activeElement);
            instanceTabEnum.Load(activeElement);
            instanceTabList.Load(activeElement);
            instanceTabCategory.Load(activeElement);
            instanceTabMiscellanious.Load(activeElement);

            //Create all layouts on schema
            Layout layoutTabTextBox       = Layout.Build(typeof(TabTextBoxSchema), this);
            Layout layoutTabGrid          = Layout.Build(typeof(TabGridSchema), this);
            Layout layoutTabKey           = Layout.Build(typeof(TabKeySchema), this);
            Layout layoutTabNumericUpDown = Layout.Build(typeof(TabNumericUpDownSchema), this);
            Layout layoutTabComboBox      = Layout.Build(typeof(TabComboBoxSchema), this);
            Layout layoutTabListTextBox   = Layout.Build(typeof(TabListTextBoxSchema), this);
            Layout layoutTabEnum          = Layout.Build(typeof(TabEnumSchema), this);
            Layout layoutTabList          = Layout.Build(typeof(TabListSchema), this);
            Layout layoutTabCategory      = Layout.Build(typeof(TabCategorySchema), this);
            Layout layoutTabMiscellanious = Layout.Build(typeof(TabMiscellaniousSchema), this);

            // add an image in line on the last tab
            var image = new Image
            {
                Source = new Uri(@"pack://application:,,,/ExtensibleStorageUI;component/Images/bigImage1.png"),
                Index  = 1,
                Key    = "image1"
            };

            layoutTabMiscellanious.Controls.Insert(0, image);

            // add a free text inline
            var textBlock = new TextBlock
            {
                Text  = "This a test of the textblock usage",
                Index = 2,
                Key   = "text"
            };

            layoutTabMiscellanious.Controls.Insert(1, textBlock);


            // build all layout objects
            ILayoutControl layoutCtrTabTextBox       = Layout.BuildControl(this, document, layoutTabTextBox, instanceTabTextBox.GetEntity());
            ILayoutControl layoutCtrTabGrid          = Layout.BuildControl(this, document, layoutTabGrid, instanceTabGrid.GetEntity());
            ILayoutControl layoutCtrTabKey           = Layout.BuildControl(this, document, layoutTabKey, instanceTabKey.GetEntity());
            ILayoutControl layoutCtrTabNumericUpDown = Layout.BuildControl(this, document, layoutTabNumericUpDown, instanceTabNumericUpDown.GetEntity());
            ILayoutControl layoutCtrTabComboBox      = Layout.BuildControl(this, document, layoutTabComboBox, instanceTabComboBox.GetEntity());
            ILayoutControl layoutCtrTabListTextBox   = Layout.BuildControl(this, document, layoutTabListTextBox, instanceTabListTextBox.GetEntity());
            ILayoutControl layoutCtrTabEnum          = Layout.BuildControl(this, document, layoutTabEnum, instanceTabEnum.GetEntity());
            ILayoutControl layoutCtrTabList          = Layout.BuildControl(this, document, layoutTabList, instanceTabList.GetEntity());
            ILayoutControl layoutCtrTabCategory      = Layout.BuildControl(this, document, layoutTabCategory, instanceTabCategory.GetEntity());
            ILayoutControl layoutCtrTabMiscellanious = Layout.BuildControl(this, document, layoutTabMiscellanious, instanceTabMiscellanious);

            //create main window and add all object
            var window = new MainWindows
            {
                Name  = "ExtensibleStorageUIOverview",
                Title = "Extensible Storage UI Overview"
            };
            var layout = new MainLayout
            {
                tabTextBox       = { Content = layoutCtrTabTextBox },
                tabGrid          = { Content = layoutCtrTabGrid },
                tabKey           = { Content = layoutCtrTabKey },
                tabNumericUpDown = { Content = layoutCtrTabNumericUpDown },
                tabComboBox      = { Content = layoutCtrTabComboBox },
                tabListTextBox   = { Content = layoutCtrTabListTextBox },
                tabEnum          = { Content = layoutCtrTabEnum },
                tabList          = { Content = layoutCtrTabList },
                tabCategory      = { Content = layoutCtrTabCategory },
                tabMiscellanious = { Content = layoutCtrTabMiscellanious }
            };

            window.layout.Children.Add(layout);
            window.ShowAndAssignParent();

            //Getting data from UI
            instanceTabTextBox       = new TabTextBoxSchema(layoutCtrTabTextBox.GetEntity(), document);
            instanceTabGrid          = new TabGridSchema(layoutCtrTabGrid.GetEntity(), document);
            instanceTabKey           = new TabKeySchema(layoutCtrTabKey.GetEntity(), document);
            instanceTabNumericUpDown = new TabNumericUpDownSchema(layoutCtrTabNumericUpDown.GetEntity(), document);
            instanceTabComboBox      = new TabComboBoxSchema(layoutCtrTabComboBox.GetEntity(), document);
            instanceTabListTextBox   = new TabListTextBoxSchema(layoutCtrTabListTextBox.GetEntity(), document);
            instanceTabEnum          = new TabEnumSchema(layoutCtrTabEnum.GetEntity(), document);
            instanceTabList          = new TabListSchema(layoutCtrTabList.GetEntity(), document);
            instanceTabCategory      = new TabCategorySchema(layoutCtrTabCategory.GetEntity(), document);
            instanceTabMiscellanious = new TabMiscellaniousSchema(instanceTabMiscellanious.GetEntity(), document);

            //Saving Data into selected element
            if (window.storeSchema)
            {
                var t = new Transaction(document, "Save schemas");
                t.Start();
                instanceTabTextBox.Save(activeElement);
                instanceTabGrid.Save(activeElement);
                instanceTabKey.Save(activeElement);
                instanceTabNumericUpDown.Save(activeElement);
                instanceTabComboBox.Save(activeElement);
                instanceTabListTextBox.Save(activeElement);
                instanceTabEnum.Save(activeElement);
                instanceTabList.Save(activeElement);
                instanceTabCategory.Save(activeElement);
                instanceTabMiscellanious.Save(activeElement);
                t.Commit();
            }
            return(Result.Succeeded);
        }