void InitializePlotGroupView() { bool bStandard = true; bool bSerial = false; bool color = false; bool linestyle = false; bool symbol = false; if (_groupStyles != null) { color = _groupStyles.ContainsType(typeof(ColorGroupStyle)); linestyle = _groupStyles.ContainsType(typeof(LineStyleGroupStyle)); symbol = _groupStyles.ContainsType(typeof(SymbolShapeStyleGroupStyle)); if (_groupStyles.Count != (color ? 1 : 0) + (linestyle ? 1 : 0) + (symbol ? 1 : 0)) { bStandard = false; } if (color && linestyle && typeof(LineStyleGroupStyle) == _groupStyles.GetChildTypeOf(typeof(ColorGroupStyle))) { bSerial = true; } if ((linestyle && symbol) && typeof(SymbolShapeStyleGroupStyle) == _groupStyles.GetChildTypeOf(typeof(LineStyleGroupStyle))) { if (color && !bSerial) { bStandard = false; } else { bSerial = true; } } if (color && !((ColorGroupStyle)_groupStyles.GetPlotGroupStyle(typeof(ColorGroupStyle))).IsStepEnabled) { bStandard = false; } if (linestyle && !((LineStyleGroupStyle)_groupStyles.GetPlotGroupStyle(typeof(LineStyleGroupStyle))).IsStepEnabled) { bStandard = false; } if (symbol && !((SymbolShapeStyleGroupStyle)_groupStyles.GetPlotGroupStyle(typeof(SymbolShapeStyleGroupStyle))).IsStepEnabled) { bStandard = false; } if (_groupStyles.CoordinateTransformingStyle != null) { bStandard = false; } } if (bStandard && _groupStyles != null) { _plotGroupView = (IXYPlotGroupView)Current.Gui.FindAndAttachControlTo(this, typeof(IXYPlotGroupView)); _plotGroupView.InitializePlotGroupConditions( color, linestyle, symbol, !bSerial, //_parentPlotGroup.ChangeStylesConcurrently, PlotGroupStrictness.Normal //_parentPlotGroup.ChangeStylesStrictly ); _plotGroupView.AdvancedPlotGroupControl += EhAdvancedPlotGroupControlRequired; } else if (_groupStyles != null) { _plotGroupController = (IMVCAController)Current.Gui.GetControllerAndControl(new object[] { _groupStyles }, typeof(IMVCAController)); } }
void Initialize(bool initDoc) { if (initDoc) { // available Update modes _availableUpdateModes = new SelectableListNodeList(); foreach (object obj in Enum.GetValues(typeof(PlotGroupStrictness))) { _availableUpdateModes.Add(new SelectableListNode(obj.ToString(), obj, ((PlotGroupStrictness)obj) == PlotGroupStrictness.Normal)); } Type[] types; // Transfo-Styles _currentTransfoStyle = _doc.CoordinateTransformingStyle == null ? null : _doc.CoordinateTransformingStyle.GetType(); _availableTransfoStyles = new SelectableListNodeList(); _availableTransfoStyles.Add(new SelectableListNode("None", null, null == _currentTransfoStyle)); types = ReflectionService.GetNonAbstractSubclassesOf(typeof(ICoordinateTransformingGroupStyle)); foreach (Type t in types) { _availableTransfoStyles.Add(new SelectableListNode(Current.Gui.GetUserFriendlyClassName(t), t, t == _currentTransfoStyle)); } // Normal Styles _availableNormalStyles = new SelectableListNodeList(); if (_parent != null) // if possible, collect only those styles that are applicable { PlotGroupStyleCollection avstyles = new PlotGroupStyleCollection(); _parent.CollectStyles(avstyles); foreach (IPlotGroupStyle style in avstyles) { if (!_doc.ContainsType(style.GetType())) { _availableNormalStyles.Add(new SelectableListNode(Current.Gui.GetUserFriendlyClassName(style.GetType()), style.GetType(), false)); } } } else // or else, find all available styles { types = ReflectionService.GetNonAbstractSubclassesOf(typeof(IPlotGroupStyle)); foreach (Type t in types) { if (!_doc.ContainsType(t)) { _availableNormalStyles.Add(new SelectableListNode(Current.Gui.GetUserFriendlyClassName(t), t, false)); } } } _currentNormalStyles = new CheckableSelectableListNodeList(); _currentStepItems = 0; // first those items that have no childs foreach (IPlotGroupStyle s in _doc) { CheckableSelectableListNode node = new CheckableSelectableListNode(Current.Gui.GetUserFriendlyClassName(s.GetType()), s.GetType(), false, false); if (s.CanHaveChilds()) { node.Checked = s.IsStepEnabled; _currentNormalStyles.Insert(_currentStepItems, node); _currentStepItems++; } else { node.Checked = s.IsStepEnabled; _currentNormalStyles.Add(node); } } UpdateCurrentNormalOrder(); // bring the items in the right order } if (_view != null) { _view.InitializeAvailableCoordinateTransformingGroupStyles(_availableTransfoStyles); _view.InitializeAvailableNormalGroupStyles(_availableNormalStyles); _view.InitializeCurrentNormalGroupStyles(_currentNormalStyles); _view.InitializeUpdateMode(_availableUpdateModes, _doc.InheritFromParentGroups, _doc.DistributeToChildGroups); } }