コード例 #1
0
        // metoda pro uložení diagramu do obrázku png
        private void SavePNG_Click(object sender, RoutedEventArgs e)
        {
            DiagramUtils diagramUtils = new DiagramUtils();
            var          diagramBmp   = diagramUtils.MakeBitmap(diagram.Panel);

            diagramUtils.SavePngDialog(diagramBmp, defaultFilename: "ClassDiagram.png");
        }
コード例 #2
0
        // metoda pro serializaci datového modelu grafu do kotr xml
        private void Save_Click(object sender, RoutedEventArgs e)
        {
            if ((diagram.NodesSource as ObservableCollection <ClassDiagramNodeData>).Count == 0)
            {
                return;
            }

            var model = diagram.Model as GraphLinksModel <ClassDiagramNodeData, String, String, ClassDiagramLinkData>;

            if (model == null)
            {
                return;
            }
            XElement root = model.Save <ClassDiagramNodeData, ClassDiagramLinkData>(Constants.UML_CD_XML_ROOT_STRING, Constants.UML_CD_XML_NODE_STRING, Constants.UML_CD_XML_LINK_STRING);

            root.SetAttributeValue(Constants.UML_CD_XML_VALIDATION_ATTRIBUTE_STRING, ValidationComboBox.SelectedIndex);

            DiagramUtils diagramUtils = new DiagramUtils();

            diagramUtils.SaveDiagramDialog(root, "ClassDiagram.kotr");
        }
コード例 #3
0
        // metoda pro deserializaci datového modelu grafu z kotr xml
        private void Load_Click(object sender, RoutedEventArgs e)
        {
            var diagramModel = diagram.Model as GraphLinksModel <ClassDiagramNodeData, String, String, ClassDiagramLinkData>;

            if (diagramModel == null)
            {
                return;
            }

            DiagramUtils diagramUtils = new DiagramUtils();
            var          diagramXml   = diagramUtils.LoadDiagramDialog();

            try
            {
                if (diagramXml == null)
                {
                    return;
                }
                if (diagramXml.Name != Constants.UML_CD_XML_ROOT_STRING)
                {
                    throw new ProcessManagerException("This file cannot be imported, because it contains different diagram type data.");
                }
                //vypnu validaci z UPMM(protože diagram může být uložený jako nevalidovaný)
                var validationAttribute = diagramXml.Attribute(Constants.UML_CD_XML_VALIDATION_ATTRIBUTE_STRING);
                if (validationAttribute != null)
                {
                    ValidationComboBox.SelectedIndex = Int32.Parse(validationAttribute.Value);
                }
                else
                {
                    ValidationComboBox.SelectedIndex = 0;
                }

                //zkontroluju, jestli všechny uzly, které mají IRI mají svůj elemnet v načteném profilu procesu
                var loadedModel = new GraphLinksModel <ClassDiagramNodeData, string, string, ClassDiagramLinkData>();
                loadedModel.Load <ClassDiagramNodeData, ClassDiagramLinkData>(diagramXml, Constants.UML_CD_XML_NODE_STRING, Constants.UML_CD_XML_LINK_STRING);

                string[] categories     = { "Class" };
                int      countOfMissing = 0;
                foreach (string IRI in (loadedModel.NodesSource as ObservableCollection <ClassDiagramNodeData>).Where(x => categories.Contains(x.Category)).Select(x => x.IRI))
                {
                    if (!SoftwareProcessProfile.Any(x => x.IRI == IRI))
                    {
                        countOfMissing++;
                    }
                }

                if (countOfMissing > 0)
                {
                    throw new ProcessManagerException("Diagram can't be loaded, because it does not match your OWL profile.");
                }
                else
                {
                    //pokud všechny uzly s IRI mají své IRI v profilu, přidám diagram,
                    diagramModel.Load <ClassDiagramNodeData, ClassDiagramLinkData>(diagramXml, Constants.UML_CD_XML_NODE_STRING, Constants.UML_CD_XML_LINK_STRING);
                }
            }
            catch (Exception ex)
            {
                new Utils().ShowExceptionMessageBox(ex);
            }
        }