Esempio n. 1
0
        /// <summary>
        /// Initializes a new instance of the LinkStyle class
        /// </summary>
        /// <param name="xmlStyle">Xml representation of the link style</param>
        /// <param name="assemblyManager">Manager for assembly/name resolution</param>
        public LinkStyle(XElement xmlStyle, ExternalAssemblyManager assemblyManager)
        {
            this.SetDefaultFieldValues();

            // sets the constructor of the LinkView
            XElement constructorXml = xmlStyle.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ClassNameElementOfLinkStyleElementName);
            if (constructorXml != null)
            {
                ConstructorInfo constructor = assemblyManager.SearchLinkViewConstructor(constructorXml.Value);
                if (constructor != null)
                {
                    this.viewConstructor = constructor;
                }
            }

            // set the drawing information to the style
            XElement drawingInformationElement = xmlStyle.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DrawingInformationElementOfLinkStyleElementName);
            if (drawingInformationElement != null)
            {
                this.drawingInformation = drawingInformationElement;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// This function apply the settings in the Xml document to the current instance
        /// </summary>
        /// <param name="document">The xml document</param>
        /// <param name="assemblyManager">the assmbly manager (use to find all custom component)</param>
        public void ApplyXmlStyleFile(XDocument document, ExternalAssemblyManager assemblyManager)
        {
            XElement iceSettings = document.Root;

            // <nodeStyles>
            if (iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NodeStylesElementName) != null)
            {
                XElement nodeStylesElement = iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NodeStylesElementName);

                foreach (XElement nodeStyleElement in nodeStylesElement.Elements(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NodeStyleElementName))
                {
                    this.AddNodeStyle(
                        nodeStyleElement.Attribute(xml.SettingsXmlContent.IDAttributeOfNodeStyleElementName).Value,
                        new NodeStyle(nodeStyleElement, assemblyManager));
                }

                XAttribute defaultNodeStyleAttribute = nodeStylesElement.Attribute(xml.SettingsXmlContent.DefaultAttributeOfNodeStylesElementName);
                if (defaultNodeStyleAttribute != null)
                {
                    NodeStyle old = this.DefaultNodeStyle;
                    this.DefaultNodeStyle = this.nodeStyleList[defaultNodeStyleAttribute.Value];
                    old.RaiseChangeEvent();
                }
            }

            // <linkStyles>
            if (iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.LinkStylesElementName) != null)
            {
                XElement linkStylesElement = iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.LinkStylesElementName);

                foreach (XElement linkStyleElement in linkStylesElement.Elements(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.LinkStyleElementName))
                {
                    this.AddLinkStyle(
                        linkStyleElement.Attribute(xml.SettingsXmlContent.IDAttributeOfLinkStyleElementName).Value,
                        new LinkStyle(linkStyleElement, assemblyManager));
                }

                XAttribute defaultLinkStyle = linkStylesElement.Attribute(xml.SettingsXmlContent.DefaultAttributeOfLinkStylesElementName);
                if (defaultLinkStyle != null)
                {
                    LinkStyle old = this.DefaultLinkStyle;
                    this.DefaultLinkStyle = this.linkStyleList[defaultLinkStyle.Value];
                    old.RaiseChangeEvent();
                }
            }

            XElement actionsElement = iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ActionsElementName);
            if (actionsElement != null)
            {
                foreach (XElement actionElement in actionsElement.Elements())
                {
                    this.AddAction(actionElement.Attribute(xml.SettingsXmlContent.IDAttributeOfActionElementName).Value, new action.Action(actionElement));
                }
            }

            // <mods>
            XElement mods = iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ModesElementOfConstantsElementName);
            if (mods != null)
            {
                XElement multiNodeSelection = mods.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.MultiSelectionElementOfModesElementName);
                this.MultiSelectionNodeMode = multiNodeSelection != null;

                XElement debugModeElement = mods.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DebugElementOfModesElementName);
                this.DebugMode = debugModeElement != null;

                XElement navigationBarModeElement = mods.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NavigationBarElementOfModesElementName);
                this.NavigationBarMode = navigationBarModeElement != null;

                XElement navigationMenuModeElement = mods.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NavigationBarElementOfModesElementName);
                this.NavigationMenuMode = navigationMenuModeElement != null;
            }

            // <constants>
            XElement constantsElement = iceSettings.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ConstantsElementName);
            if (constantsElement != null)
            {
                // <drawingConstant>
                XElement drawingConstantsElement = constantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DrawingContantsElementOfConstantsElementName);
                if (drawingConstantsElement != null)
                {
                    XElement actionsCircleColorElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ActionCircleColorElementOfDrawingContantsElementName);
                    if (actionsCircleColorElement != null)
                    {
                        this.actionsCircleColor = xml.SettingsXmlContent.ParseColor(actionsCircleColorElement);
                    }

                    XElement initialZoomRatioElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.InitialZoomRatioElementOfDrawingContantsElementName);
                    if (initialZoomRatioElement != null)
                    {
                        this.InitialZoomRatio = xml.SettingsXmlContent.ParseToDouble(initialZoomRatioElement.Value);
                    }

                    XElement initialGraphVisibilityDepthElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.InitialGraphVisibilityDepthElementOfDrawingContantsElementName);
                    if (initialGraphVisibilityDepthElement != null)
                    {
                        this.InitialGraphVisibilityDepth = int.Parse(initialGraphVisibilityDepthElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement opacityChangeStepElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.OpacityChangeStepElementOfDrawingContantsElementName);
                    if (opacityChangeStepElement != null)
                    {
                        this.OpacityChangeStep = xml.SettingsXmlContent.ParseToDouble(opacityChangeStepElement.Value);
                    }

                    XElement nodeSizeElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.NodeSizeElementOfDrawingContantsElementName);
                    if (nodeSizeElement != null)
                    {
                        this.NodeSizeRatio = xml.SettingsXmlContent.ParseToDouble(nodeSizeElement.Value);
                    }

                    XElement linkMaximalThickness = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.LinkMaximalThicknessElementOfDrawingContantsElementName);
                    if (linkMaximalThickness != null)
                    {
                        this.LinkMaximalThickness = double.Parse(linkMaximalThickness.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement linkMinimalThickness = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.LinkMinimalThicknessElementOfDrawingContantsElementName);
                    if (linkMinimalThickness != null)
                    {
                        this.LinkMinimalThickness = double.Parse(linkMinimalThickness.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement backgroundElement = drawingConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.BackgroundElementOfDrawingContantsElementName);
                    if (backgroundElement != null)
                    {
                        this.background = new Grid();
                        ViewManager.SetXamlIntoGrid(0, backgroundElement.Value, (Grid)this.background);
                    }
                }

                // <physicsConstants>
                XElement physicsConstantsElement = constantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.PhysicsContantsElementOfConstantsElementName);
                if (physicsConstantsElement != null)
                {
                    XElement gravityElement = physicsConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.GravityElementOfPhysicsContantsElementName);
                    if (gravityElement != null)
                    {
                        this.Gravity = int.Parse(gravityElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement springRestLenghtElement = physicsConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.SpringRestLenghtElementOfPhysicsContantsElementName);
                    if (springRestLenghtElement != null)
                    {
                        this.LinkRestLength = Single.Parse(springRestLenghtElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement repultionForceElement = physicsConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.RepultionStrengthElementOfPhysicsContantsElementName);
                    if (repultionForceElement != null)
                    {
                        this.RepultionForce = Single.Parse(repultionForceElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement dragForceElement = physicsConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DragForceElementOfPhysicsContantsElementName);
                    if (dragForceElement != null)
                    {
                        this.dragForce = Single.Parse(dragForceElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }
                }

                // <modelConstants>
                XElement modelConstantsElement = constantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ModelContantsElementOfConstantsElementName);
                if (modelConstantsElement != null)
                {
                    XElement maximumNodesElement = modelConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.MaximumNodeElementOfModelContantsElementName);
                    if (maximumNodesElement != null)
                    {
                        this.maximumNodes = int.Parse(maximumNodesElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement cleanUpAdditionalDepthElement = modelConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.CleanUpadditionalDepthElementOfModelContantsElementName);
                    if (cleanUpAdditionalDepthElement != null)
                    {
                        this.CleanUpAdditionalDepth = int.Parse(cleanUpAdditionalDepthElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }
                }

                // <download>
                XElement downloadConstantsElement = constantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DownloadConstantsElementOfConstantsElementName);
                if (downloadConstantsElement != null)
                {
                    XElement timeoutElement = downloadConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.TimeoutElementOfDownloadConstantsElementName);
                    if (timeoutElement != null)
                    {
                        this.downloadTimeout = int.Parse(timeoutElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement maximumDownloadPerMinuteElement = downloadConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.MaximumDownloadPerMinuteElementOfDownloadConstantsElementName);
                    if (maximumDownloadPerMinuteElement != null)
                    {
                        this.maximumDownloadPerMinute = int.Parse(maximumDownloadPerMinuteElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }

                    XElement maximumSimultaneousDownloadElement = downloadConstantsElement.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.MaximumSimultaneousDownloadElementOfDownloadConstantsElementName);
                    if (maximumSimultaneousDownloadElement != null)
                    {
                        this.downloadTimeout = int.Parse(maximumSimultaneousDownloadElement.Value, System.Globalization.CultureInfo.InvariantCulture);
                    }
                }
            }

            if (this.Changed != null)
            {
                this.Changed(this, new EventArgs());
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of the NodeStyle class
        /// </summary>
        /// <param name="xmlStyle">Xml representation of the node style</param>
        /// <param name="assemblyManager">Manager for assembly/name resolution</param>
        public NodeStyle(XElement xmlStyle, ExternalAssemblyManager assemblyManager)
        {
            this.SetDefaultFieldValues();

            // set the constructor of the LinkView
            XElement constructorXml = xmlStyle.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.ClassNameElementOfNodeStyleElementName);
            if (constructorXml != null)
            {
                ConstructorInfo constructor = assemblyManager.SearchNodeViewConstructor(constructorXml.Value);
                if (constructor != null)
                {
                    this.viewConstructor = constructor;
                }
            }

            // set the drawing information to the style
            XElement drawingInformationElement = xmlStyle.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.DrawingInformationElementOfNodeStyleElementName);
            if (drawingInformationElement != null)
            {
                this.drawingInformation = drawingInformationElement;
            }

            // set the size coeficient
            XElement relativeSizeElement = xmlStyle.Element(xml.SettingsXmlContent.Namespace + xml.SettingsXmlContent.RelativeSizeElementOfNodeStyleElementName);
            if (relativeSizeElement != null)
            {
                this.relativeSize = xml.SettingsXmlContent.ParseToDouble(relativeSizeElement.Value);
            }
        }