private void ReArrange(VisualItem aVisualItem) { if (!aVisualItem.IsFiltered || aVisualItem.Item.type == "root") { if (aVisualItem.controlsGroup != null) { aVisualItem.controlsGroup.Visible = false; } return; } aVisualItem.controlsGroup.Visible = true; ItemTree aItem = aVisualItem.Item; DataViewPlacement p = fParams.placement; bool isMenu = aItem.type == "menu"; //Create parent container ItemControlsGroup group = aVisualItem.controlsGroup; Control parent = aVisualItem.controlsGroup.parentContainer; parent.Width = p.TitleMaxWidth + p.TitleSpacing + p.ControlMaxWidth + p.ControlSpacing + p.DefaultButtonWidth; parent.Height = p.LineSpacing; aVisualItem.PanelBackgroundColor = isMenu ? Color.DarkBlue : fCurrentRow % 2 == 0 ? Color.White : Color.LightGray; parent.BackColor = aVisualItem.PanelBackgroundColor; fCurrentPanelPosition.X = p.HorizontalMArgin * fNesting; parent.Location = fCurrentPanelPosition; fCurrentPanelPosition.Y += p.LineSpacing; Point controlPosition = new Point(0, (p.LineSpacing - p.LineHeight) / 2); LabelSingleClick label = group.label; label.Width = p.TitleMaxWidth; label.Height = p.LineHeight; label.Location = controlPosition; controlPosition.X = p.TitleMaxWidth + p.TitleSpacing; Control control = group.control; control.Location = controlPosition; control.Height = p.LineHeight; control.Width = p.ControlMaxWidth; controlPosition.X += p.ControlMaxWidth + p.ControlSpacing; //Add a default button if (!isMenu) { Button button = group.defaultButton; button.Width = p.DefaultButtonWidth; button.Height = p.LineHeight; button.Location = controlPosition; fCurrentRow++; } }
private void AddControl(VisualItem aVisualItem, Type aType) { ItemTree aItem = aVisualItem.Item; bool isMenu = aItem.type == "menu"; bool isBool = aItem.type == "bool"; //Create parent container ItemControlsGroup group = new ItemControlsGroup(); Control parent = group.parentContainer = new Control(); fParams.container.Controls.Add(parent); parent.Tag = aVisualItem; //Add label describing the entry LabelSingleClick label = group.label = new LabelSingleClick(!isBool); label.Font = GetLabelFont(aVisualItem); label.Text = aItem.displayname; label.Tag = aVisualItem; parent.Controls.Add(label); //Add the control itself Control control = group.control = Activator.CreateInstance(aType) as Control; parent.Controls.Add(control); control.Tag = aVisualItem; //Add reference from the menu item to the control holding the values. aVisualItem.controlsGroup = group; //Add a default button if (!isMenu) { Button button = group.defaultButton = new Button(); parent.Controls.Add(button); button.Text = "Default"; button.Click += button_Click; button.Tag = aVisualItem; button.FlatStyle = FlatStyle.Popup; button.BackColor = System.Drawing.SystemColors.Control; fCurrentRow++; } MouseEnterLeave l = new MouseEnterLeave(parent); l.MouseEnter += l_MouseEnter; l.MouseLeave += panel_MouseLeave; ProceeControl(aVisualItem); }