public override void CalculateMinimumSize(LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; System.Drawing.Size lblSize = new System.Drawing.Size(0, 0); if (labelCIO != null) { labelCIO.UseMinimumLabel(); lblSize = labelCIO.GetMinimumSize(); } System.Drawing.Size cio1Size = stateCIO1.GetMinimumSize(); System.Drawing.Size cio2Size = stateCIO2.GetMinimumSize(); if (_parent.IsVertical()) { _minSize.Height = lblSize.Height + cio1Size.Height + cio2Size.Height + 2 * vars.RowPadding; _minSize.Width = Math.Max(lblSize.Width, Math.Max(cio1Size.Width, cio2Size.Width)); } else { _minSize.Height = Math.Max(cio1Size.Height, cio2Size.Height); _minSize.Width = (int)Math.Ceiling((cio1Size.Width + cio2Size.Width + 2 * vars.RowPadding) / (1.0 - vars.OneColLabelPcnt)); } }
public override void CalculateMinimumSize(LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; ControlBasedCIO stateCIO = (ControlBasedCIO)_CIOs[COMPONENT_INDEX]; System.Drawing.Size cioSize = stateCIO.GetMinimumSize(); if (_parent.IsVertical()) { _minSize = cioSize; if (labelCIO != null) { labelCIO.UseMinimumLabel(); System.Drawing.Size labelSize = labelCIO.GetMinimumSize(); _minSize.Height += labelSize.Height + vars.RowPadding; _minSize.Width = Math.Max(_minSize.Width, labelSize.Width); } } else { _minSize.Height = cioSize.Height; _minSize.Width = vars.RowPadding + (int)Math.Ceiling(cioSize.Width / (1.0 - vars.OneColLabelPcnt)); if (labelCIO != null) { _minSize.Height = Math.Max(_minSize.Height, labelCIO.GetMinimumSize().Height); } } }
/* * Constructor */ public LabeledTwoCompRow(GroupNode g, PanelNode panel, LabelCIO labelCIO, ConcreteInteractionObject cio1, ConcreteInteractionObject cio2) : base(g, panel) { addCIO(labelCIO); addCIO(cio1); addCIO(cio2); }
/* * Member Methods */ public override void AddComponents(ContainerCIO container) { LabelCIO labelCIO1 = (LabelCIO)_CIOs[LABEL1_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; LabelCIO labelCIO2 = (LabelCIO)_CIOs[LABEL2_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; container.AddCIO(labelCIO1); container.AddCIO(stateCIO1); container.AddCIO(labelCIO2); container.AddCIO(stateCIO2); }
public override int DoLayout(ContainerCIO container, int topY, LayoutVariables vars) { LabelCIO labelCIO1 = (LabelCIO)_CIOs[LABEL1_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; LabelCIO labelCIO2 = (LabelCIO)_CIOs[LABEL2_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; System.Windows.Forms.Label label = (Label)labelCIO1.GetControl(); Control control = stateCIO1.GetControl(); System.Drawing.Size prefSize1 = stateCIO1.GetPreferredSize(); System.Drawing.Size prefSize2 = stateCIO2.GetPreferredSize(); int rowHeight = Math.Max(prefSize1.Height, prefSize2.Height); int columnWidth = (container.InternalSize.Width - 3 * vars.RowPadding) / 2; int col1LabelWidth = (int)Math.Round(columnWidth * vars.TwoColLabel1Pcnt); int col1CompWidth = columnWidth - col1LabelWidth; int col2LabelWidth = (int)Math.Round(columnWidth * vars.TwoColLabel2Pcnt); int col2CompWidth = columnWidth = col2LabelWidth; control = stateCIO1.GetControl(); control.Size = new System.Drawing.Size(col1CompWidth, rowHeight); control.Location = new System.Drawing.Point(col1LabelWidth + 2 * vars.RowPadding, topY - stateCIO1.GetControlOffset().Y); if (labelCIO1 != null) { label = (Label)labelCIO1.GetControl(); label.TextAlign = System.Drawing.ContentAlignment.TopRight; label.Size = new System.Drawing.Size(col1LabelWidth, rowHeight); label.Location = new System.Drawing.Point(vars.RowPadding, topY - labelCIO1.GetControlOffset().Y); labelCIO1.SetLabelText(); } control = stateCIO2.GetControl(); control.Size = new System.Drawing.Size(col2CompWidth, rowHeight); control.Location = new System.Drawing.Point(columnWidth + col2LabelWidth + 3 * vars.RowPadding, topY - stateCIO2.GetControlOffset().Y); if (labelCIO2 != null) { label = (Label)labelCIO2.GetControl(); label.TextAlign = System.Drawing.ContentAlignment.TopRight; label.Size = new System.Drawing.Size(col2LabelWidth, rowHeight); label.Location = new System.Drawing.Point(columnWidth + 2 * vars.RowPadding, topY - labelCIO2.GetControlOffset().Y); labelCIO2.SetLabelText(); } return(1); }
public override string ToString() { String ret = "OneColumnRow\r\n"; LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; StateLinkedCIO stateCIO = (StateLinkedCIO)_CIOs[COMPONENT_INDEX]; if (labelCIO != null) { ret += "0. LabelCIO - [" + labelCIO.GetControl().Bounds.X + "," + labelCIO.GetControl().Bounds.Y + "," + labelCIO.GetControl().Bounds.Width + "," + labelCIO.GetControl().Bounds.Height + "]\r\n"; } ret += "1. StateCIO = " + stateCIO.GetApplObj().Name + " - [" + stateCIO.GetControl().Bounds.X + "," + stateCIO.GetControl().Bounds.Y + "," + stateCIO.GetControl().Bounds.Width + "," + stateCIO.GetControl().Bounds.Height + "]\r\n"; return(ret); }
/* * Process Method */ public override PanelNode Process(GroupNode g, PanelNode p) { if (g is BranchGroupNode) { BranchGroupNode bg = (BranchGroupNode)g; if (bg.Children.Count == 2 && !g.ContainsGroups()) { IEnumerator child = bg.Children.GetEnumerator(); while (child.MoveNext()) { if (((ObjectGroupNode)child.Current).Decorations[UnitDecision.DECISION_KEY] == null || ((UnitDecision)((ObjectGroupNode)child.Current).Decorations[UnitDecision.DECISION_KEY]).Handled || ((UnitDecision)((ObjectGroupNode)child.Current).Decorations[UnitDecision.DECISION_KEY]).CIO.HasLabel()) { return(p); } } LabelCIO labelCIO = null; if (g.Labels != null) { labelCIO = new LabelCIO(g.Labels); } UnitDecision d = (UnitDecision)((ObjectGroupNode)bg.Children[0]).Decorations[UnitDecision.DECISION_KEY]; ConcreteInteractionObject cio1 = d.CIO; d.Handled = true; d = (UnitDecision)((ObjectGroupNode)bg.Children[1]).Decorations[UnitDecision.DECISION_KEY]; ConcreteInteractionObject cio2 = d.CIO; d.Handled = true; LabeledTwoCompRow r = new LabeledTwoCompRow(g, p, labelCIO, cio1, cio2); p.AddRow(r); } } return(p); }
public override void CalculatePreferredSize(LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; ControlBasedCIO stateCIO = (ControlBasedCIO)_CIOs[COMPONENT_INDEX]; PreferredSize cioSize = stateCIO.GetPreferredSize(); int prefWidth = cioSize.Width, prefHeight = cioSize.Height; if (_parent.IsVertical()) { if (labelCIO != null) { labelCIO.UseMinimumLabel(); PreferredSize labelSize = labelCIO.GetPreferredSize(); if (prefHeight != PreferredSize.INFINITE) { prefHeight += labelSize.Height + vars.RowPadding; } if (prefWidth != PreferredSize.INFINITE) { prefWidth = Math.Max(prefWidth, labelSize.Width); } } } else { if (prefWidth != PreferredSize.INFINITE) { prefWidth = vars.RowPadding + (int)Math.Ceiling(prefWidth / (1.0 - vars.OneColLabelPcnt)); } if (labelCIO != null && prefHeight != PreferredSize.INFINITE) { prefHeight = Math.Max(labelCIO.GetPreferredSize().Height, prefHeight); } } _prefSize = new PreferredSize(prefWidth, prefHeight); }
/* * Member Methods */ public override void AddComponents(ContainerCIO container, LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; ControlBasedCIO stateCIO = (ControlBasedCIO)_CIOs[COMPONENT_INDEX]; container.AddCIO(labelCIO); container.AddCIO(stateCIO); if (labelCIO != null) { _maxTextOffset = Math.Max(labelCIO.GetControlOffset().Y, stateCIO.GetControlOffset().Y); } else { _maxTextOffset = stateCIO.GetControlOffset().Y; } this.CalculateMinimumSize(vars); this.CalculatePreferredSize(vars); }
public override System.Drawing.Size GetPreferredSize(LayoutVariables vars) { LabelCIO labelCIO1 = (LabelCIO)_CIOs[LABEL1_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; LabelCIO labelCIO2 = (LabelCIO)_CIOs[LABEL2_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; System.Drawing.Size ret = new System.Drawing.Size(0, 0); ret.Height = Math.Max(stateCIO1.GetPreferredSize().Height, stateCIO2.GetPreferredSize().Height); ret.Width = (labelCIO1 != null ? labelCIO1.GetPreferredSize().Width : 0) + stateCIO1.GetPreferredSize().Width + (labelCIO2 != null ? labelCIO2.GetPreferredSize().Width : 0) + stateCIO2.GetPreferredSize().Width; ret.Height += vars.RowPadding; ret.Width += 3 * vars.RowPadding; return(ret); }
/* * Member Methods */ public override void AddComponents(ContainerCIO container, LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; if (labelCIO != null) { container.AddCIO(labelCIO); } container.AddCIO(stateCIO1); container.AddCIO(stateCIO2); _maxTextOffset = Math.Max(stateCIO1.GetControlOffset().Y, stateCIO2.GetControlOffset().Y); if (labelCIO != null) { _maxTextOffset = Math.Max(labelCIO.GetControlOffset().Y, _maxTextOffset); } this.CalculateMinimumSize(vars); this.CalculatePreferredSize(vars); }
/* * Process Method */ public override ConcreteInteractionObject Process(ListItemNode node, ConcreteInteractionObject cio, UIGenerator ui) { if (node.Decorations[ItemDecision.DECISION_KEY] == null && node is CIOListItemNode && cio is ScrollingPanelCIO) { // the item node represents an appliance object and it will be // placed on the ScrollingPanelCIO CIOListItemNode item = (CIOListItemNode)node; ScrollingPanelCIO panel = (ScrollingPanelCIO)cio; LabelDictionary labels; if (item.CIO is StateLinkedCIO) { labels = ((ApplianceState)((StateLinkedCIO)item.CIO).GetApplObj()).Labels; } else if (item.CIO is SmartCIO) { labels = ((SmartCIO)item.CIO).Labels; } // get information about the bottom of the current // panel's layout PanelLayoutDecision panelDecision = (PanelLayoutDecision)node.Parent.Decorations[PanelLayoutDecision.DECISION_KEY]; if (panelDecision == null) { // make one panelDecision = new PanelLayoutDecision(); node.Parent.Decorations.Add(PanelLayoutDecision.DECISION_KEY, panelDecision); } LabelCIO label = null; if (item.CIO.HasLabel()) { label = (LabelCIO)item.CIO.GetLabelCIO(); panel.AddCIO(label); } ControlBasedCIO control = (ControlBasedCIO)item.CIO; panel.AddCIO(control); // do some sizing here int width = ui.Size.Width - 2 * ui.LayoutVars.RowPadding - 5; if (item.CIO.HasLabel()) { // layout label CIO label.GetControl().Location = new System.Drawing.Point(ui.LayoutVars.RowPadding, panelDecision.Bottom); label.GetControl().Size = new System.Drawing.Size(width, label.GetMinimumSize().Height); panelDecision.Bottom += label.GetControl().Size.Height + ui.LayoutVars.RowPadding; label.FinalSizeNotify(); } control.GetControl().Location = new System.Drawing.Point(ui.LayoutVars.RowPadding, panelDecision.Bottom); control.GetControl().Size = new System.Drawing.Size(width, ((ControlBasedCIO)item.CIO).GetMinimumSize().Height); panelDecision.Bottom += ((ControlBasedCIO)item.CIO).GetMinimumSize().Height + 2 * ui.LayoutVars.RowPadding; item.Decorations[ItemDecision.DECISION_KEY] = new PanelItemDecision(item.CIO); } return(cio); }
public override void DoLayout(ContainerCIO container, LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; System.Windows.Forms.Label label = null; if (labelCIO != null) { label = (Label)labelCIO.GetControl(); } Control control1 = stateCIO1.GetControl(); Control control2 = stateCIO2.GetControl(); if (_parent.IsVertical()) { int[] minHeights = null; int[] prefHeights = null; int[] heights = null; if (labelCIO != null) { labelCIO.UseMinimumLabel(); labelCIO.SetAlignment(System.Drawing.ContentAlignment.TopCenter); // determine size allocations based on bounds, and minimum and preferred sizes // Height is the dimension to allocate in this case minHeights = new int[3] { labelCIO.GetMinimumSize().Height, stateCIO1.GetMinimumSize().Height, stateCIO2.GetMinimumSize().Height }; prefHeights = new int[3] { labelCIO.GetPreferredSize().Height, stateCIO1.GetPreferredSize().Height, stateCIO2.GetPreferredSize().Height }; heights = LayoutAlgorithms.AllocateSizeValues(_bounds.Height, minHeights, prefHeights, vars.RowPadding); label.Size = new System.Drawing.Size(_bounds.Width, heights[0]); label.Location = new System.Drawing.Point(_bounds.X, _bounds.Y); labelCIO.SetLabelText(); } else { minHeights = new int[3] { 0, stateCIO1.GetMinimumSize().Height, stateCIO2.GetMinimumSize().Height }; prefHeights = new int[3] { 0, stateCIO1.GetPreferredSize().Height, stateCIO2.GetPreferredSize().Height }; heights = LayoutAlgorithms.AllocateSizeValues(_bounds.Height, minHeights, prefHeights, vars.RowPadding); } control1.Size = new System.Drawing.Size(_bounds.Width, heights[1]); control1.Location = new System.Drawing.Point(_bounds.X, label.Size.Height + label.Location.Y + vars.RowPadding); if (stateCIO1 is LabelLinkedCIO) { ((Label)control1).TextAlign = System.Drawing.ContentAlignment.TopCenter; } control2.Size = new System.Drawing.Size(_bounds.Width, heights[2]); control2.Location = new System.Drawing.Point(_bounds.X, control1.Size.Height + control1.Location.Y + vars.RowPadding); if (stateCIO2 is LabelLinkedCIO) { ((Label)control2).TextAlign = System.Drawing.ContentAlignment.TopCenter; } } else { int labelWidth = (int)Math.Round(vars.OneColLabelPcnt * (_bounds.Width - vars.RowPadding)); int compWidth = (_bounds.Width - labelWidth) / 2 - vars.RowPadding; int[] textOffsets = LayoutAlgorithms.GetTextHeightOffsets(LayoutAlgorithms.GetArrayFromArrayList(_CIOs)); if (labelCIO != null) { label.TextAlign = System.Drawing.ContentAlignment.TopRight; label.Size = new System.Drawing.Size(labelWidth, _bounds.Height); label.Location = new System.Drawing.Point(_bounds.X, _bounds.Y + textOffsets[0]); labelCIO.SetLabelText(); } control1.Size = new System.Drawing.Size(compWidth, _bounds.Height); control1.Location = new System.Drawing.Point(_bounds.X + labelWidth + vars.RowPadding, _bounds.Y + textOffsets[1]); control2.Size = new System.Drawing.Size(compWidth, _bounds.Height); control2.Location = new System.Drawing.Point(control1.Location.X + compWidth + vars.RowPadding, _bounds.Y + textOffsets[2]); } }
public override void CalculatePreferredSize(LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; StateLinkedCIO stateCIO1 = (StateLinkedCIO)_CIOs[COMPONENT1_INDEX]; StateLinkedCIO stateCIO2 = (StateLinkedCIO)_CIOs[COMPONENT2_INDEX]; int prefWidth = 0, prefHeight = 0; PreferredSize lblSize = new PreferredSize(0, 0); if (labelCIO != null) { labelCIO.UseMinimumLabel(); lblSize = labelCIO.GetPreferredSize(); } PreferredSize cio1Size = stateCIO1.GetPreferredSize(); PreferredSize cio2Size = stateCIO2.GetPreferredSize(); if (lblSize.Height == PreferredSize.INFINITE || cio1Size.Height == PreferredSize.INFINITE || cio2Size.Height == PreferredSize.INFINITE) { prefHeight = PreferredSize.INFINITE; } if (lblSize.Width == PreferredSize.INFINITE || cio1Size.Width == PreferredSize.INFINITE || cio2Size.Width == PreferredSize.INFINITE) { prefWidth = PreferredSize.INFINITE; } if (_parent.IsVertical()) { if (prefHeight != PreferredSize.INFINITE) { prefHeight = lblSize.Height + cio1Size.Height + cio2Size.Height + 2 * vars.RowPadding; } if (prefWidth != PreferredSize.INFINITE) { prefWidth = Math.Max(lblSize.Width, Math.Max(cio1Size.Width, cio2Size.Width)); } } else { if (prefHeight != PreferredSize.INFINITE) { prefHeight = Math.Max(cio1Size.Height, cio2Size.Height); } if (prefWidth != PreferredSize.INFINITE) { prefWidth = (int)Math.Ceiling((cio1Size.Width + cio2Size.Width + 2 * vars.RowPadding) / (1.0 - vars.OneColLabelPcnt)); } } _prefSize = new PUC.Layout.PreferredSize(prefWidth, prefHeight); }
public override void DoLayout(ContainerCIO container, LayoutVariables vars) { LabelCIO labelCIO = (LabelCIO)_CIOs[LABEL_INDEX]; ControlBasedCIO stateCIO = (ControlBasedCIO)_CIOs[COMPONENT_INDEX]; System.Windows.Forms.Label label = null; Control control = stateCIO.GetControl(); int topY = 0; if (_parent.IsVertical()) { if (labelCIO != null) { labelCIO.UseMinimumLabel(); label = (Label)labelCIO.GetControl(); labelCIO.SetAlignment(System.Drawing.ContentAlignment.TopCenter); label.Size = new System.Drawing.Size(_bounds.Width, labelCIO.GetMinimumSize().Height); label.Location = new System.Drawing.Point(_bounds.X, _bounds.Y); labelCIO.SetLabelText(); topY = label.Size.Height + vars.RowPadding; } if (stateCIO is LabelLinkedCIO) { ((Label)control).TextAlign = System.Drawing.ContentAlignment.TopCenter; } int[] size = LayoutAlgorithms.AllocateSizeValues( _bounds.Height - topY, new int[1] { stateCIO.GetMinimumSize().Height }, new int[1] { stateCIO.GetPreferredSize().Height }, vars.RowPadding); control.Size = new System.Drawing.Size(_bounds.Width, size[0]); control.Location = new System.Drawing.Point(_bounds.X, _bounds.Y + topY); } else { int labelWidth = (int)Math.Round(vars.OneColLabelPcnt * (_bounds.Width - vars.RowPadding)); int compWidth = _bounds.Width - labelWidth - vars.RowPadding; int[] textOffsets = LayoutAlgorithms.GetTextHeightOffsets(LayoutAlgorithms.GetArrayFromArrayList(_CIOs)); control.Size = new System.Drawing.Size(compWidth, _bounds.Height); control.Location = new System.Drawing.Point(_bounds.X + labelWidth + vars.RowPadding, _bounds.Y + textOffsets[1]); if (labelCIO != null) { labelCIO.UseMinimumLabel(); label = (Label)labelCIO.GetControl(); label.TextAlign = System.Drawing.ContentAlignment.TopRight; label.Size = new System.Drawing.Size(labelWidth, _bounds.Height - textOffsets[0]); label.Location = new System.Drawing.Point(_bounds.X, _bounds.Y + textOffsets[0]); labelCIO.SetLabelText(); } } }