/// <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; } }
/// <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()); } }
/// <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); } }