Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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);
            }
        }