]> gerrit.simantics Code Review - simantics/sysdyn.git/commitdiff
Issue decorations and better error handling
authorlempinen <lempinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Tue, 18 Oct 2011 06:26:29 +0000 (06:26 +0000)
committerlempinen <lempinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Tue, 18 Oct 2011 06:26:29 +0000 (06:26 +0000)
git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@22796 ac1ea38d-2e2b-0410-8846-a27921b304fc

28 files changed:
org.simantics.sysdyn.ontology/graph.tg
org.simantics.sysdyn.ontology/graph/Profiles.pgraph
org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph
org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java
org.simantics.sysdyn.ui/adapters.xml
org.simantics.sysdyn.ui/icons/error.svg [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/fatal.svg [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/warning.svg [new file with mode: 0644]
org.simantics.sysdyn.ui/plugin.xml
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/Activator.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements2/profiles/IssueDecorationStyle.java [new file with mode: 0644]
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements2/profiles/SimulationPlaybackStyle.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewModuleNodeHandler.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/utils/ProfileEntries.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/utils/SheetUtils.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/DependencyFunction.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/ExpressionIssueFunction.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/NoSuchVariableException.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/SyntaxErrorException.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/UndefinedExpressionException.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/UnsupportedCharactersException.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/validation/ValidationUtils.java
org.simantics.sysdyn/META-INF/MANIFEST.MF
org.simantics.sysdyn/src/org/simantics/sysdyn/adapter/SysdynVariableProperties.java
org.simantics.sysdyn/src/org/simantics/sysdyn/adapter/VariableValueSubscription.java
org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java
org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java
org.simantics.sysdyn/src/org/simantics/sysdyn/simulation/SimulationJob.java

index 14b2d4f329d56191a881bd8a7dadcd0dc24db9af..8915d0aee8bdd65e14d131c183beb5c6af328325 100644 (file)
Binary files a/org.simantics.sysdyn.ontology/graph.tg and b/org.simantics.sysdyn.ontology/graph.tg differ
index 40a270f22bbfd4654508eff1373da9ad20b1360a..58ff98d757caebc508c80b051183dc212b62eae9 100644 (file)
@@ -13,14 +13,29 @@ groupStyleEntry : L0.Template
             DIA.ProfileEntry.HasStyle %style\r
             DIA.ProfileEntry.HasGroup %group\r
 \r
+\r
+// PROFILES\r
 SYSDYN.SimulationPlaybackProfile <T DIA.Profile\r
-            \r
+SYSDYN.DefaultProfile <T DIA.Profile\r
+\r
+// STYLES\r
 SYSDYN.SimulationPlaybackStyle : DIA.Style\r
+SYSDYN.IssueStyle : DIA.Style\r
 \r
+// GROUPS\r
 SYSDYN.AllElementsGroup : DIA.TypeGroup\r
     L0.HasLabel "Element"\r
     DIA.HasType DIA.Element\r
-\r
+    \r
+// ENTRIES\r
 PROFILES.SimulationPlaybackColours\r
     L0.HasLabel "Playback colours"\r
-    @groupStyleEntry SYSDYN.SimulationPlaybackStyle SYSDYN.AllElementsGroup
\ No newline at end of file
+    @groupStyleEntry SYSDYN.SimulationPlaybackStyle SYSDYN.AllElementsGroup\r
+    \r
+PROFILES.IssueWarnings\r
+    L0.HasLabel "Issue warnings"\r
+    @groupStyleEntry SYSDYN.IssueStyle SYSDYN.AllElementsGroup\r
+\r
+\r
+      \r
+    
\ No newline at end of file
index 7974a94b5e6c8f17028b2998385ee06286eafd84..397a99be6bb055bc8a4da2ae450261ec96721c88 100644 (file)
@@ -208,10 +208,10 @@ SYSDYN.RefersTo <R L0.IsRelatedTo : L0.FunctionalRelation
 SYSDYN.HasEquation <R L0.HasProperty
     L0.HasRange L0.String  
 
-SYSDYN.HasInitialEquation <T SYSDYN.HasEquation
+SYSDYN.HasInitialEquation <R SYSDYN.HasEquation
     L0.HasRange L0.String
 
-SYSDYN.HasLookup <T SYSDYN.HasEquation
+SYSDYN.HasLookup <R SYSDYN.HasEquation
     L0.HasRange L0.String  
 
 SYSDYN.HasMinX <R L0.HasProperty
index 7d8488e9c7dabf9456fbee64ee01834597f283b9..69d3b6371e9eb89bb6faa436fffaeab8a9052009 100644 (file)
@@ -47,6 +47,7 @@ public class SysdynResource {
     public final Resource ConfigurationDiagram;\r
     public final Resource ConfigurationDiagramTemplate;\r
     public final Resource ConstantExpression;\r
+    public final Resource DefaultProfile;\r
     public final Resource DefaultRealization;\r
     public final Resource DelayExpression;\r
     public final Resource Dependency;\r
@@ -85,7 +86,9 @@ public class SysdynResource {
     public final Resource HasHead;\r
     public final Resource HasHeadTerminal;\r
     public final Resource HasInitialEquation;\r
+    public final Resource HasInitialEquation_Inverse;\r
     public final Resource HasLookup;\r
+    public final Resource HasLookup_Inverse;\r
     public final Resource HasMaxX;\r
     public final Resource HasMaxX_Inverse;\r
     public final Resource HasMaxY;\r
@@ -136,6 +139,7 @@ public class SysdynResource {
     public final Resource IsReplaceable_Inverse;\r
     public final Resource IsTailOf;\r
     public final Resource IsTailOfTerminal;\r
+    public final Resource IssueStyle;\r
     public final Resource LookupExpression;\r
     public final Resource Module;\r
     public final Resource ModuleSymbol;\r
@@ -145,6 +149,7 @@ public class SysdynResource {
     public final Resource Polarity;\r
     public final Resource Polarity_Inverse;\r
     public final Resource Profiles;\r
+    public final Resource Profiles_IssueWarnings;\r
     public final Resource Profiles_SimulationPlaybackColours;\r
     public final Resource ProjectActionContext;\r
     public final Resource ProjectActionContext_Actions;\r
@@ -252,6 +257,7 @@ public class SysdynResource {
         public static final String ConfigurationDiagram = "http://www.simantics.org/Sysdyn-1.0/ConfigurationDiagram";\r
         public static final String ConfigurationDiagramTemplate = "http://www.simantics.org/Sysdyn-1.0/ConfigurationDiagramTemplate";\r
         public static final String ConstantExpression = "http://www.simantics.org/Sysdyn-1.0/ConstantExpression";\r
+        public static final String DefaultProfile = "http://www.simantics.org/Sysdyn-1.0/DefaultProfile";\r
         public static final String DefaultRealization = "http://www.simantics.org/Sysdyn-1.0/DefaultRealization";\r
         public static final String DelayExpression = "http://www.simantics.org/Sysdyn-1.0/DelayExpression";\r
         public static final String Dependency = "http://www.simantics.org/Sysdyn-1.0/Dependency";\r
@@ -290,7 +296,9 @@ public class SysdynResource {
         public static final String HasHead = "http://www.simantics.org/Sysdyn-1.0/HasHead";\r
         public static final String HasHeadTerminal = "http://www.simantics.org/Sysdyn-1.0/HasHeadTerminal";\r
         public static final String HasInitialEquation = "http://www.simantics.org/Sysdyn-1.0/HasInitialEquation";\r
+        public static final String HasInitialEquation_Inverse = "http://www.simantics.org/Sysdyn-1.0/HasInitialEquation/Inverse";\r
         public static final String HasLookup = "http://www.simantics.org/Sysdyn-1.0/HasLookup";\r
+        public static final String HasLookup_Inverse = "http://www.simantics.org/Sysdyn-1.0/HasLookup/Inverse";\r
         public static final String HasMaxX = "http://www.simantics.org/Sysdyn-1.0/HasMaxX";\r
         public static final String HasMaxX_Inverse = "http://www.simantics.org/Sysdyn-1.0/HasMaxX/Inverse";\r
         public static final String HasMaxY = "http://www.simantics.org/Sysdyn-1.0/HasMaxY";\r
@@ -341,6 +349,7 @@ public class SysdynResource {
         public static final String IsReplaceable_Inverse = "http://www.simantics.org/Sysdyn-1.0/IsReplaceable/Inverse";\r
         public static final String IsTailOf = "http://www.simantics.org/Sysdyn-1.0/IsTailOf";\r
         public static final String IsTailOfTerminal = "http://www.simantics.org/Sysdyn-1.0/IsTailOfTerminal";\r
+        public static final String IssueStyle = "http://www.simantics.org/Sysdyn-1.0/IssueStyle";\r
         public static final String LookupExpression = "http://www.simantics.org/Sysdyn-1.0/LookupExpression";\r
         public static final String Module = "http://www.simantics.org/Sysdyn-1.0/Module";\r
         public static final String ModuleSymbol = "http://www.simantics.org/Sysdyn-1.0/ModuleSymbol";\r
@@ -350,6 +359,7 @@ public class SysdynResource {
         public static final String Polarity = "http://www.simantics.org/Sysdyn-1.0/Polarity";\r
         public static final String Polarity_Inverse = "http://www.simantics.org/Sysdyn-1.0/Polarity/Inverse";\r
         public static final String Profiles = "http://www.simantics.org/Sysdyn-1.0/Profiles";\r
+        public static final String Profiles_IssueWarnings = "http://www.simantics.org/Sysdyn-1.0/Profiles/IssueWarnings";\r
         public static final String Profiles_SimulationPlaybackColours = "http://www.simantics.org/Sysdyn-1.0/Profiles/SimulationPlaybackColours";\r
         public static final String ProjectActionContext = "http://www.simantics.org/Sysdyn-1.0/ProjectActionContext";\r
         public static final String ProjectActionContext_Actions = "http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions";\r
@@ -467,6 +477,7 @@ public class SysdynResource {
         ConfigurationDiagram = getResourceOrNull(graph, URIs.ConfigurationDiagram);\r
         ConfigurationDiagramTemplate = getResourceOrNull(graph, URIs.ConfigurationDiagramTemplate);\r
         ConstantExpression = getResourceOrNull(graph, URIs.ConstantExpression);\r
+        DefaultProfile = getResourceOrNull(graph, URIs.DefaultProfile);\r
         DefaultRealization = getResourceOrNull(graph, URIs.DefaultRealization);\r
         DelayExpression = getResourceOrNull(graph, URIs.DelayExpression);\r
         Dependency = getResourceOrNull(graph, URIs.Dependency);\r
@@ -505,7 +516,9 @@ public class SysdynResource {
         HasHead = getResourceOrNull(graph, URIs.HasHead);\r
         HasHeadTerminal = getResourceOrNull(graph, URIs.HasHeadTerminal);\r
         HasInitialEquation = getResourceOrNull(graph, URIs.HasInitialEquation);\r
+        HasInitialEquation_Inverse = getResourceOrNull(graph, URIs.HasInitialEquation_Inverse);\r
         HasLookup = getResourceOrNull(graph, URIs.HasLookup);\r
+        HasLookup_Inverse = getResourceOrNull(graph, URIs.HasLookup_Inverse);\r
         HasMaxX = getResourceOrNull(graph, URIs.HasMaxX);\r
         HasMaxX_Inverse = getResourceOrNull(graph, URIs.HasMaxX_Inverse);\r
         HasMaxY = getResourceOrNull(graph, URIs.HasMaxY);\r
@@ -556,6 +569,7 @@ public class SysdynResource {
         IsReplaceable_Inverse = getResourceOrNull(graph, URIs.IsReplaceable_Inverse);\r
         IsTailOf = getResourceOrNull(graph, URIs.IsTailOf);\r
         IsTailOfTerminal = getResourceOrNull(graph, URIs.IsTailOfTerminal);\r
+        IssueStyle = getResourceOrNull(graph, URIs.IssueStyle);\r
         LookupExpression = getResourceOrNull(graph, URIs.LookupExpression);\r
         Module = getResourceOrNull(graph, URIs.Module);\r
         ModuleSymbol = getResourceOrNull(graph, URIs.ModuleSymbol);\r
@@ -565,6 +579,7 @@ public class SysdynResource {
         Polarity = getResourceOrNull(graph, URIs.Polarity);\r
         Polarity_Inverse = getResourceOrNull(graph, URIs.Polarity_Inverse);\r
         Profiles = getResourceOrNull(graph, URIs.Profiles);\r
+        Profiles_IssueWarnings = getResourceOrNull(graph, URIs.Profiles_IssueWarnings);\r
         Profiles_SimulationPlaybackColours = getResourceOrNull(graph, URIs.Profiles_SimulationPlaybackColours);\r
         ProjectActionContext = getResourceOrNull(graph, URIs.ProjectActionContext);\r
         ProjectActionContext_Actions = getResourceOrNull(graph, URIs.ProjectActionContext_Actions);\r
index 4986006cd6996ed6b28f398e90a9ae8a041616d1..7f8312dbeaebdcd8ae5cf28266b27dc07af09e0d 100644 (file)
@@ -10,5 +10,5 @@
         VTT Technical Research Centre of Finland - initial API and implementation\r
  -->\r
 
-<adapters>\r\r   <target interface="org.simantics.db.layer0.adapter.Realization">\r               <type uri="http://www.simantics.org/Sysdyn-1.0/Module"\r                 class="org.simantics.structural2.realization.StructuralRealization">\r                   <this />\r               </type>\r        </target>\r\r<!-- \r       <target interface="org.simantics.db.layer0.variable.Variable">\r         <type uri="http://www.simantics.org/Sysdyn-1.0/HistoryRealization"\r                     class="org.simantics.sysdyn.ui.project.HistoryVariable" >\r                      <this />\r               </type>\r                <type uri="http://www.simantics.org/Sysdyn-1.0/DefaultRealization"\r                     class="org.simantics.sysdyn.ui.project.DefaultVariable" >\r                      <this />\r               </type>\r        </target>\r -->\r\r        <target interface="org.simantics.layer0.utils.triggers.ITrigger">\r      <type uri = "http://www.simantics.org/Sysdyn-1.0/DiagramToCompositeMapping"\r          class = "org.simantics.sysdyn.ui.editor.DiagramToCompositeMapping3">\r         <graph/>\r           <this />\r       </type>\r        </target>\r      \r       <target interface="org.simantics.structural.ui.modelBrowser.nodes.AbstractNode">\r               <type uri="http://www.simantics.org/Sysdyn-1.0/SysdynModel"\r                    class="org.simantics.structural.ui.modelBrowser.nodes.ModelNode">\r                      <this />\r               </type>\r        </target>               \r               \r\r      <target\r                interface="org.simantics.browsing.ui.common.node.AbstractNode">\r                <type\r                  uri="http://www.simantics.org/Sysdyn-1.0/SysdynModel"\r                  class="org.simantics.sysdyn.ui.browser.nodes.ModelNode">\r                       <this />\r               </type>\r\r               <resource\r                      uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                 class="org.simantics.sysdyn.ui.browser.nodes.SymbolNode">\r                      <this />\r               </resource>\r\r           <type\r                  uri="http://www.simantics.org/Simulation-1.0/Experiment"\r                       class="org.simantics.sysdyn.ui.browser.nodes.ExperimentNode">\r                  <this />\r               </type>\r                \r               <type\r                  uri="http://www.simantics.org/Sysdyn-1.0/Result"\r                       class="org.simantics.sysdyn.ui.browser.nodes.SimulationResultNode">\r                    <this />\r               </type>\r                \r       </target>\r\r     <!-- Inject default connection routing algorithm for sysdyn diagrams -->\r       <target interface="org.simantics.g2d.diagram.DiagramClass">\r            <adapter uri="http://www.simantics.org/Sysdyn-1.0/ConfigurationDiagram"\r                        adapterClass="org.simantics.sysdyn.ui.elements2.ConfigurationDiagramClassAdapter" />\r   </target>\r\r     <!-- Sysdyn symbols -->\r        <target interface="org.simantics.diagram.adapter.ElementFactory">\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/StockSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.StockFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                       class="org.simantics.sysdyn.ui.elements2.ModuleFactory" />\r             <resource uri="http://www.simantics.org/Sysdyn-1.0/ValveSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.ValveFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/AuxiliarySymbol"\r                    class="org.simantics.sysdyn.ui.elements2.AuxiliaryFactory" />\r          <resource uri="http://www.simantics.org/Sysdyn-1.0/CloudSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.CloudFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/InputSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.InputFactory" />\r\r             <type uri="http://www.simantics.org/Sysdyn-1.0/StockSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.StockFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                   class="org.simantics.sysdyn.ui.elements2.ModuleFactory" />\r             <type uri="http://www.simantics.org/Sysdyn-1.0/ValveSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.ValveFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/AuxiliarySymbol"\r                        class="org.simantics.sysdyn.ui.elements2.AuxiliaryFactory" />\r          <type uri="http://www.simantics.org/Sysdyn-1.0/CloudSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.CloudFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/InputSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.InputFactory" />                       \r       </target>\r      \r       <!-- Sysdyn connections -->\r    <target interface="org.simantics.diagram.adapter.ElementFactory">\r              <!-- Edges -->\r         <resource uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                     class="org.simantics.sysdyn.ui.elements2.connections.FlowEdgeFactory" />\r               <resource uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                       class="org.simantics.sysdyn.ui.elements2.connections.DependencyEdgeFactory" />\r         <type uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                 class="org.simantics.sysdyn.ui.elements2.connections.FlowEdgeFactory" />\r               <type uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                   class="org.simantics.sysdyn.ui.elements2.connections.DependencyEdgeFactory" />\r         <!-- : SYSDYN.Connection-->\r            <type uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                 class="org.simantics.sysdyn.ui.elements2.connections.FlowConnectionFactory" />\r         <type uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                   class="org.simantics.sysdyn.ui.elements2.connections.DependencyConnectionFactory" />\r   </target>\r      \r       <target interface="org.simantics.g2d.connection.EdgeVisualsConfigurer">\r          <baseType uri="http://www.simantics.org/Diagram-2.0/HasConnector" />\r   <resource uri="http://www.simantics.org/Diagram-2.0/HasPlainConnector"\r          class="org.simantics.diagram.content.ArrowConfigurer">\r         <string>none 0</string>\r       </resource>\r    <resource uri="http://www.simantics.org/Diagram-2.0/HasArrowConnector"\r          class="org.simantics.diagram.content.ArrowConfigurer">\r         <string>fill 1</string>\r       </resource>\r  </target>\r      \r       <!-- ModelBrowser2 -->\r \r       <target interface="org.simantics.browsing.ui.model.children.ChildRule">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleTypeChildRule"\r            class="org.simantics.sysdyn.ui.browser.childrules.ModuleTypeChildRule"/>\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleContentChildRule"\r            class="org.simantics.sysdyn.ui.browser.childrules.ModuleContentChildRule"/>            \r    </target>\r    \r    <target interface="org.simantics.browsing.ui.model.visuals.VisualsRule">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleTypeLabelRule"\r            class="org.simantics.sysdyn.ui.browser.labelrules.ModuleTypeLabelRule"/>\r    </target>    \r    \r    <target interface="org.simantics.db.layer0.adapter.ActionFactory">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewModuleType"\r            class="org.simantics.sysdyn.ui.browser.actions.NewModuleTypeAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewEnumeration"\r            class="org.simantics.sysdyn.ui.browser.actions.NewEnumerationAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/OpenWorkbook"\r            class="org.simantics.sysdyn.ui.browser.actions.OpenWorkbookAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewFunction"\r            class="org.simantics.sysdyn.ui.browser.actions.NewFunctionAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewFunctionLibrary"\r            class="org.simantics.sysdyn.ui.browser.actions.NewFunctionLibraryAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewSharedFunctionLibrary"\r            class="org.simantics.sysdyn.ui.browser.actions.NewSharedFunctionLibraryAction" />            \r    </target>              \r  \r  <!-- PROFILES -->\r    <target interface="org.simantics.scenegraph.profile.Style">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/SimulationPlaybackStyle"\r            class="org.simantics.sysdyn.ui.elements2.profiles.SimulationPlaybackStyle">\r        </resource>\r    </target>\r
+<adapters>\r\r   <target interface="org.simantics.db.layer0.adapter.Realization">\r               <type uri="http://www.simantics.org/Sysdyn-1.0/Module"\r                 class="org.simantics.structural2.realization.StructuralRealization">\r                   <this />\r               </type>\r        </target>\r\r<!-- \r       <target interface="org.simantics.db.layer0.variable.Variable">\r         <type uri="http://www.simantics.org/Sysdyn-1.0/HistoryRealization"\r                     class="org.simantics.sysdyn.ui.project.HistoryVariable" >\r                      <this />\r               </type>\r                <type uri="http://www.simantics.org/Sysdyn-1.0/DefaultRealization"\r                     class="org.simantics.sysdyn.ui.project.DefaultVariable" >\r                      <this />\r               </type>\r        </target>\r -->\r\r        <target interface="org.simantics.layer0.utils.triggers.ITrigger">\r      <type uri = "http://www.simantics.org/Sysdyn-1.0/DiagramToCompositeMapping"\r          class = "org.simantics.sysdyn.ui.editor.DiagramToCompositeMapping3">\r         <graph/>\r           <this />\r       </type>\r        </target>\r      \r       <target interface="org.simantics.structural.ui.modelBrowser.nodes.AbstractNode">\r               <type uri="http://www.simantics.org/Sysdyn-1.0/SysdynModel"\r                    class="org.simantics.structural.ui.modelBrowser.nodes.ModelNode">\r                      <this />\r               </type>\r        </target>               \r               \r\r      <target\r                interface="org.simantics.browsing.ui.common.node.AbstractNode">\r                <type\r                  uri="http://www.simantics.org/Sysdyn-1.0/SysdynModel"\r                  class="org.simantics.sysdyn.ui.browser.nodes.ModelNode">\r                       <this />\r               </type>\r\r               <resource\r                      uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                 class="org.simantics.sysdyn.ui.browser.nodes.SymbolNode">\r                      <this />\r               </resource>\r\r           <type\r                  uri="http://www.simantics.org/Simulation-1.0/Experiment"\r                       class="org.simantics.sysdyn.ui.browser.nodes.ExperimentNode">\r                  <this />\r               </type>\r                \r               <type\r                  uri="http://www.simantics.org/Sysdyn-1.0/Result"\r                       class="org.simantics.sysdyn.ui.browser.nodes.SimulationResultNode">\r                    <this />\r               </type>\r                \r       </target>\r\r     <!-- Inject default connection routing algorithm for sysdyn diagrams -->\r       <target interface="org.simantics.g2d.diagram.DiagramClass">\r            <adapter uri="http://www.simantics.org/Sysdyn-1.0/ConfigurationDiagram"\r                        adapterClass="org.simantics.sysdyn.ui.elements2.ConfigurationDiagramClassAdapter" />\r   </target>\r\r     <!-- Sysdyn symbols -->\r        <target interface="org.simantics.diagram.adapter.ElementFactory">\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/StockSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.StockFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                       class="org.simantics.sysdyn.ui.elements2.ModuleFactory" />\r             <resource uri="http://www.simantics.org/Sysdyn-1.0/ValveSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.ValveFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/AuxiliarySymbol"\r                    class="org.simantics.sysdyn.ui.elements2.AuxiliaryFactory" />\r          <resource uri="http://www.simantics.org/Sysdyn-1.0/CloudSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.CloudFactory" />\r              <resource uri="http://www.simantics.org/Sysdyn-1.0/InputSymbol"\r                        class="org.simantics.sysdyn.ui.elements2.InputFactory" />\r\r             <type uri="http://www.simantics.org/Sysdyn-1.0/StockSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.StockFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/ModuleSymbol"\r                   class="org.simantics.sysdyn.ui.elements2.ModuleFactory" />\r             <type uri="http://www.simantics.org/Sysdyn-1.0/ValveSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.ValveFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/AuxiliarySymbol"\r                        class="org.simantics.sysdyn.ui.elements2.AuxiliaryFactory" />\r          <type uri="http://www.simantics.org/Sysdyn-1.0/CloudSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.CloudFactory" />\r              <type uri="http://www.simantics.org/Sysdyn-1.0/InputSymbol"\r                    class="org.simantics.sysdyn.ui.elements2.InputFactory" />                       \r       </target>\r      \r       <!-- Sysdyn connections -->\r    <target interface="org.simantics.diagram.adapter.ElementFactory">\r              <!-- Edges -->\r         <resource uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                     class="org.simantics.sysdyn.ui.elements2.connections.FlowEdgeFactory" />\r               <resource uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                       class="org.simantics.sysdyn.ui.elements2.connections.DependencyEdgeFactory" />\r         <type uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                 class="org.simantics.sysdyn.ui.elements2.connections.FlowEdgeFactory" />\r               <type uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                   class="org.simantics.sysdyn.ui.elements2.connections.DependencyEdgeFactory" />\r         <!-- : SYSDYN.Connection-->\r            <type uri="http://www.simantics.org/Sysdyn-1.0/FlowConnection"\r                 class="org.simantics.sysdyn.ui.elements2.connections.FlowConnectionFactory" />\r         <type uri="http://www.simantics.org/Sysdyn-1.0/DependencyConnection"\r                   class="org.simantics.sysdyn.ui.elements2.connections.DependencyConnectionFactory" />\r   </target>\r      \r       <target interface="org.simantics.g2d.connection.EdgeVisualsConfigurer">\r          <baseType uri="http://www.simantics.org/Diagram-2.0/HasConnector" />\r   <resource uri="http://www.simantics.org/Diagram-2.0/HasPlainConnector"\r          class="org.simantics.diagram.content.ArrowConfigurer">\r         <string>none 0</string>\r       </resource>\r    <resource uri="http://www.simantics.org/Diagram-2.0/HasArrowConnector"\r          class="org.simantics.diagram.content.ArrowConfigurer">\r         <string>fill 1</string>\r       </resource>\r  </target>\r      \r       <!-- ModelBrowser2 -->\r \r       <target interface="org.simantics.browsing.ui.model.children.ChildRule">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleTypeChildRule"\r            class="org.simantics.sysdyn.ui.browser.childrules.ModuleTypeChildRule"/>\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleContentChildRule"\r            class="org.simantics.sysdyn.ui.browser.childrules.ModuleContentChildRule"/>            \r    </target>\r    \r    <target interface="org.simantics.browsing.ui.model.visuals.VisualsRule">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectBrowseContext/ModuleTypeLabelRule"\r            class="org.simantics.sysdyn.ui.browser.labelrules.ModuleTypeLabelRule"/>\r    </target>    \r    \r    <target interface="org.simantics.db.layer0.adapter.ActionFactory">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewModuleType"\r            class="org.simantics.sysdyn.ui.browser.actions.NewModuleTypeAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewEnumeration"\r            class="org.simantics.sysdyn.ui.browser.actions.NewEnumerationAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/OpenWorkbook"\r            class="org.simantics.sysdyn.ui.browser.actions.OpenWorkbookAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewFunction"\r            class="org.simantics.sysdyn.ui.browser.actions.NewFunctionAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewFunctionLibrary"\r            class="org.simantics.sysdyn.ui.browser.actions.NewFunctionLibraryAction" />\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/ProjectActionContext/Actions/NewSharedFunctionLibrary"\r            class="org.simantics.sysdyn.ui.browser.actions.NewSharedFunctionLibraryAction" />            \r    </target>              \r  \r  <!-- PROFILES -->\r    <target interface="org.simantics.scenegraph.profile.Style">\r        <resource uri="http://www.simantics.org/Sysdyn-1.0/SimulationPlaybackStyle"\r            class="org.simantics.sysdyn.ui.elements2.profiles.SimulationPlaybackStyle">\r        </resource>\r                <resource uri="http://www.simantics.org/Sysdyn-1.0/IssueStyle"\r            class="org.simantics.sysdyn.ui.elements2.profiles.IssueDecorationStyle">\r        </resource>\r    </target>\r
 </adapters>
\ No newline at end of file
diff --git a/org.simantics.sysdyn.ui/icons/error.svg b/org.simantics.sysdyn.ui/icons/error.svg
new file mode 100644 (file)
index 0000000..e4eb0ab
--- /dev/null
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="error.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata29">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="841"
+     inkscape:window-width="1212"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="7.0241977"
+     inkscape:cx="-17.826432"
+     inkscape:cy="1037.7942"
+     inkscape:window-x="270"
+     inkscape:window-y="71"
+     inkscape:current-layer="svg2"
+     inkscape:window-maximized="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective31" />
+    <linearGradient
+       id="linearGradient3488">
+      <stop
+         id="stop3490"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3492"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3420">
+      <stop
+         id="stop3422"
+         style="stop-color:#ff1e1e;stop-opacity:1;"
+         offset="0" />
+      <stop
+         id="stop3424"
+         style="stop-color:#dc2828;stop-opacity:1;"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       id="linearGradient3426"
+       xlink:href="#linearGradient3420"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       id="linearGradient3494"
+       xlink:href="#linearGradient3488"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3420"
+       id="linearGradient2411"
+       gradientUnits="userSpaceOnUse"
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       gradientTransform="matrix(0,-2.7617189e-2,2.7612784e-2,0,-11.701736,14.171172)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3488"
+       id="linearGradient2413"
+       gradientUnits="userSpaceOnUse"
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       gradientTransform="matrix(0,-2.7617189e-2,2.7612784e-2,0,-11.701736,14.171172)" />
+  </defs>
+  <path
+     style="fill:url(#linearGradient2411);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2413);stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2383"
+     d="M 2.1698824,1.1121873 C 3.3682412,1.1119962 4.3398041,2.0835591 4.3398041,3.2821091 C 4.3398041,4.4806589 3.3682412,5.4522219 2.1698824,5.4520308 C 0.97152351,5.4522219 -3.9437272e-05,4.4806589 -3.9437272e-05,3.2821091 C -3.9437272e-05,2.0835591 0.97152351,1.1119962 2.1698824,1.1121873 L 2.1698824,1.1121873 z" />
+  <g
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     id="g3164"
+     transform="matrix(9.4934061e-2,0,0,1.3562015e-2,-34.990031,-2.4459735)">
+    <rect
+       style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:12.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3166"
+       y="472.36218"
+       x="388.57144"
+       height="40"
+       width="5.7142859" />
+  </g>
+  <path
+     style="opacity:0.8;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.35824198;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2385"
+     d="M 3.8894553,3.2821081 C 3.8894553,4.2317955 3.1195813,5.0016695 2.1698938,5.0016695 C 1.2202064,5.0016695 0.45033238,4.2317955 0.45033238,3.2821081 C 0.45033238,2.3324207 1.2202064,1.5625466 2.1698938,1.5625466 C 3.1195813,1.5625466 3.8894553,2.3324207 3.8894553,3.2821081 z" />
+  <g
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+     id="g3159"
+     transform="matrix(9.4934061e-2,0,0,4.0686044e-2,-34.990031,-17.157021)">
+    <rect
+       style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3157"
+       y="472.36218"
+       x="388.57144"
+       height="40"
+       width="5.7142859" />
+  </g>
+</svg>
diff --git a/org.simantics.sysdyn.ui/icons/fatal.svg b/org.simantics.sysdyn.ui/icons/fatal.svg
new file mode 100644 (file)
index 0000000..5ee4816
--- /dev/null
@@ -0,0 +1,612 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   version="1.0"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <metadata
+     id="metadata29">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3488">
+      <stop
+         id="stop3490"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3492"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3420">
+      <stop
+         id="stop3422"
+         style="stop-color:#ff1e1e;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3424"
+         style="stop-color:#dc2828;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       id="linearGradient3426"
+       xlink:href="#linearGradient3420"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="315.71429"
+       y1="502.36218"
+       x2="472.85712"
+       y2="502.36218"
+       id="linearGradient3494"
+       xlink:href="#linearGradient3488"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="111.7876"
+       y1="230.2852"
+       x2="111.7876"
+       y2="142.84979"
+       id="linearGradient3407"
+       xlink:href="#XMLID_3_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="111.7876"
+       y1="230.2852"
+       x2="111.7876"
+       y2="142.84979"
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3166"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3167"
+         style="stop-color:#fafafa;stop-opacity:1"
+         offset="0.1019" />
+      <stop
+         id="stop3168"
+         style="stop-color:#ebebeb;stop-opacity:1"
+         offset="0.2256" />
+      <stop
+         id="stop3169"
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.36059999" />
+      <stop
+         id="stop3170"
+         style="stop-color:#b0b0b0;stop-opacity:1"
+         offset="0.50370002" />
+      <stop
+         id="stop3171"
+         style="stop-color:#848484;stop-opacity:1"
+         offset="0.65319997" />
+      <stop
+         id="stop3172"
+         style="stop-color:#4e4e4e;stop-opacity:1"
+         offset="0.80809999" />
+      <stop
+         id="stop3173"
+         style="stop-color:#0f0f0f;stop-opacity:1"
+         offset="0.96460003" />
+      <stop
+         id="stop3174"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3175"
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3176"
+         style="stop-color:#FFFFFF"
+         offset="0.6667" />
+      <a:midPointStop
+         id="midPointStop3177"
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="223.2383"
+       cy="994.02441"
+       r="45.424"
+       fx="223.2383"
+       fy="994.02441"
+       id="radialGradient3409"
+       xlink:href="#XMLID_4_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.273125,-0.583125,0.4891875,1.0680937,-219.67181,-763.6707)" />
+    <radialGradient
+       cx="223.2383"
+       cy="994.02441"
+       r="45.424"
+       fx="223.2383"
+       fy="994.02441"
+       id="XMLID_4_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.358,-0.622,0.5218,1.1393,-739.9166,-885.3684)">
+      <stop
+         id="stop3180"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3181"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3182"
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3183"
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3184"
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="131.50101"
+       y1="96.0942"
+       x2="141.1622"
+       y2="105.7555"
+       id="linearGradient3411"
+       xlink:href="#XMLID_5_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="131.50101"
+       y1="96.0942"
+       x2="141.1622"
+       y2="105.7555"
+       id="XMLID_5_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3188"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3189"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3190"
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3191"
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3192"
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="139.91209"
+       y1="98.640602"
+       x2="154.45309"
+       y2="98.640602"
+       id="linearGradient3413"
+       xlink:href="#XMLID_6_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="139.91209"
+       y1="98.640602"
+       x2="154.45309"
+       y2="98.640602"
+       id="XMLID_6_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3196"
+         style="stop-color:#bbbbbb;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3197"
+         style="stop-color:#888888;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3198"
+         style="stop-color:#BBBBBB"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3199"
+         style="stop-color:#BBBBBB"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3200"
+         style="stop-color:#888888"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="145.959"
+       y1="93.064499"
+       x2="166.4863"
+       y2="93.064499"
+       id="linearGradient3415"
+       xlink:href="#XMLID_7_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="145.959"
+       y1="93.064499"
+       x2="166.4863"
+       y2="93.064499"
+       id="XMLID_7_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3203"
+         style="stop-color:#ff9200;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3204"
+         style="stop-color:#ff0000;stop-opacity:1"
+         offset="0.264" />
+      <stop
+         id="stop3205"
+         style="stop-color:#fa0000;stop-opacity:1"
+         offset="0.37470001" />
+      <stop
+         id="stop3206"
+         style="stop-color:#eb0000;stop-opacity:1"
+         offset="0.50889999" />
+      <stop
+         id="stop3207"
+         style="stop-color:#d20000;stop-opacity:1"
+         offset="0.65539998" />
+      <stop
+         id="stop3208"
+         style="stop-color:#b00000;stop-opacity:1"
+         offset="0.81059998" />
+      <stop
+         id="stop3209"
+         style="stop-color:#850000;stop-opacity:1"
+         offset="0.97109997" />
+      <stop
+         id="stop3210"
+         style="stop-color:#7c0000;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3211"
+         style="stop-color:#FF9200"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3212"
+         style="stop-color:#FF9200"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3213"
+         style="stop-color:#FF0000"
+         offset="0.264" />
+      <a:midPointStop
+         id="midPointStop3214"
+         style="stop-color:#FF0000"
+         offset="0.6667" />
+      <a:midPointStop
+         id="midPointStop3215"
+         style="stop-color:#7C0000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="158.666"
+       y1="69.667"
+       x2="171.85741"
+       y2="69.667"
+       id="linearGradient3417"
+       xlink:href="#XMLID_8_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="158.666"
+       y1="69.667"
+       x2="171.85741"
+       y2="69.667"
+       id="XMLID_8_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3218"
+         style="stop-color:#ff6d00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3219"
+         style="stop-color:#ff3300;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3220"
+         style="stop-color:#FF6D00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3221"
+         style="stop-color:#FF6D00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3222"
+         style="stop-color:#FF3300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="160.666"
+       y1="69.8423"
+       x2="168.79691"
+       y2="69.8423"
+       id="linearGradient3419"
+       xlink:href="#XMLID_9_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="160.666"
+       y1="69.8423"
+       x2="168.79691"
+       y2="69.8423"
+       id="XMLID_9_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3225"
+         style="stop-color:#ffae00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3226"
+         style="stop-color:#fff030;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3227"
+         style="stop-color:#FFAE00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3228"
+         style="stop-color:#FFAE00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3229"
+         style="stop-color:#FFF030"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="169.2207"
+       y1="81.175797"
+       x2="193.29491"
+       y2="81.175797"
+       id="linearGradient3421"
+       xlink:href="#XMLID_10_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="169.2207"
+       y1="81.175797"
+       x2="193.29491"
+       y2="81.175797"
+       id="XMLID_10_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3232"
+         style="stop-color:#ff6d00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3233"
+         style="stop-color:#ff3300;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3234"
+         style="stop-color:#FF6D00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3235"
+         style="stop-color:#FF6D00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3236"
+         style="stop-color:#FF3300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="171.38091"
+       y1="80.176804"
+       x2="189.1348"
+       y2="80.176804"
+       id="linearGradient3423"
+       xlink:href="#XMLID_11_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="171.38091"
+       y1="80.176804"
+       x2="189.1348"
+       y2="80.176804"
+       id="XMLID_11_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3239"
+         style="stop-color:#ffae00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3240"
+         style="stop-color:#fff030;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3241"
+         style="stop-color:#FFAE00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3242"
+         style="stop-color:#FFAE00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3243"
+         style="stop-color:#FFF030"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="170.4492"
+       y1="100.71"
+       x2="194.9375"
+       y2="100.71"
+       id="linearGradient3425"
+       xlink:href="#XMLID_12_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="170.4492"
+       y1="100.71"
+       x2="194.9375"
+       y2="100.71"
+       id="XMLID_12_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3246"
+         style="stop-color:#ff6d00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3247"
+         style="stop-color:#ff3300;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3248"
+         style="stop-color:#FF6D00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3249"
+         style="stop-color:#FF6D00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3250"
+         style="stop-color:#FF3300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="172.3457"
+       y1="99.710899"
+       x2="191.03909"
+       y2="99.710899"
+       id="linearGradient3427"
+       xlink:href="#XMLID_13_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+    <linearGradient
+       x1="172.3457"
+       y1="99.710899"
+       x2="191.03909"
+       y2="99.710899"
+       id="XMLID_13_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3253"
+         style="stop-color:#ffae00;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3254"
+         style="stop-color:#fff030;stop-opacity:1"
+         offset="1" />
+      <a:midPointStop
+         id="midPointStop3255"
+         style="stop-color:#FFAE00"
+         offset="0" />
+      <a:midPointStop
+         id="midPointStop3256"
+         style="stop-color:#FFAE00"
+         offset="0.5" />
+      <a:midPointStop
+         id="midPointStop3257"
+         style="stop-color:#FFF030"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="172.3457"
+       y1="99.710899"
+       x2="191.03909"
+       y2="99.710899"
+       id="linearGradient3175"
+       xlink:href="#XMLID_13_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9375,0,0,0.9375,474,66.36218)" />
+  </defs>
+  <g
+     transform="matrix(0.0330998,0,0,0.0330998,-17.583388,-2.9032996)"
+     id="g3390">
+    <path
+       d="m 616.36125,173.18655 c 1.50375,-1.15031 3.06188,-2.51625 4.66781,-4.12125 -0.007,-0.0553 -0.0131,-0.10593 -0.0197,-0.15937 0.21751,-0.11344 0.42657,-0.24938 0.60938,-0.43406 2.15906,-2.15719 -0.615,-6.8625 -4.32281,-10.56844 -3.70406,-3.70406 -8.41219,-6.47813 -10.56657,-4.32281 -0.18656,0.18656 -0.32249,0.3975 -0.43781,0.61875 -0.0534,-0.009 -0.10218,-0.0187 -0.15562,-0.0272 -2.56125,2.56125 -4.515,5.00437 -5.94938,7.28531 -5.8725,-2.595 -12.36281,-4.04625 -19.19437,-4.04625 -26.26313,0 -47.55563,21.29344 -47.55563,47.55469 0,26.26687 21.2925,47.55469 47.55563,47.55469 26.26406,0 47.55375,-21.28782 47.55375,-47.55469 -9.4e-4,-12.2175 -4.61156,-23.35594 -12.18469,-31.77938 z"
+       id="path3163"
+       style="opacity:0.2;stroke:none" />
+    <path
+       d="m 531.24656,202.77499 c 0,26.26688 21.29157,47.55469 47.55469,47.55469 26.26406,0 47.55375,-21.28781 47.55375,-47.55469 0,-26.26125 -21.28969,-47.55281 -47.55375,-47.55281 -26.26312,0 -47.55469,21.29156 -47.55469,47.55281 z"
+       id="path3164"
+       style="stroke:none" />
+    <path
+       d="m 533.96344,202.77499 c 0,24.72469 20.11594,44.83875 44.83687,44.83875 24.72469,0 44.83688,-20.11406 44.83688,-44.83875 0,-24.72281 -20.11219,-44.835 -44.83688,-44.835 -24.72093,0 -44.83687,20.11219 -44.83687,44.835 z"
+       id="path3178"
+       style="opacity:0.6;fill:url(#linearGradient3407);stroke:none" />
+    <path
+       d="m 541.89094,197.46687 c 5.15437,11.25937 20.20875,15.39937 33.62719,9.25406 13.41937,-6.14531 20.11593,-20.25188 14.96062,-31.50656 -5.15719,-11.25563 -20.21062,-15.40313 -33.63,-9.25594 -13.41844,6.14437 -20.115,20.25094 -14.95781,31.50844 z"
+       id="path3185"
+       style="fill:url(#radialGradient3409);stroke:none" />
+    <path
+       d="m 603.94594,151.98124 c -10.05,10.05094 -10.80657,18.28875 -7.10063,21.99469 3.70406,3.70406 11.94375,2.94937 21.99281,-7.09875 -1.03031,-8.7675 -2.1975,-12.69656 -14.89218,-14.89594 z"
+       id="path3186"
+       style="stroke:none" />
+    <path
+       d="m 596.1825,168.56937 c 0,1.90406 0.59156,3.41812 1.62375,4.44562 3.06844,3.07031 10.47937,2.23594 19.59563,-6.65062 -0.97032,-7.86657 -2.22282,-10.90969 -12.98626,-12.89625 -5.87625,6.04031 -8.23312,11.33437 -8.23312,15.10125 z"
+       id="path3193"
+       style="fill:url(#linearGradient3411);stroke:none" />
+    <path
+       d="m 604.5375,151.39155 c -2.15531,2.15532 0.61875,6.86063 4.32469,10.56844 3.70406,3.70594 8.41218,6.48 10.56562,4.32281 2.16094,-2.15906 -0.615,-6.8625 -4.32281,-10.56843 -3.70406,-3.70407 -8.41031,-6.48 -10.5675,-4.32282 z"
+       id="path3194"
+       style="stroke:none" />
+    <path
+       d="m 605.49937,152.35343 c -1.19343,1.19156 0.74344,5.06437 4.32282,8.64656 3.58125,3.58125 7.45218,5.51719 8.64468,4.32281 1.19532,-1.19531 -0.73781,-5.06437 -4.32281,-8.64656 -3.58031,-3.57937 -7.44937,-5.51719 -8.64469,-4.32281 z"
+       id="path3201"
+       style="fill:url(#linearGradient3413);stroke:none" />
+    <path
+       d="m 630.08062,149.90843 c -0.0234,-0.49031 -0.0422,-0.99094 -0.0572,-1.48875 -13.10344,1.08 -17.64,6.04031 -19.18782,8.95406 0.29157,0.46313 0.56626,0.94125 0.83719,1.42594 l 0.63938,-0.28406 c 1.59281,-2.83407 5.97281,-7.34719 17.76843,-8.60719 z"
+       id="path3216"
+       style="fill:url(#linearGradient3415);stroke:none" />
+    <path
+       d="m 628.42219,120.20562 6.69469,1.79625 -5.67282,21.14343 -6.69469,-1.79625 5.67282,-21.14343 z"
+       id="path3223"
+       style="fill:url(#linearGradient3417);stroke:none" />
+    <path
+       d="m 624.62437,140.67968 c 1.15969,0.31125 1.52438,0.41062 2.68313,0.72187 0.89062,-3.31312 4.05,-15.09187 4.93969,-18.405 -1.15875,-0.31125 -1.52438,-0.40875 -2.68313,-0.71906 -0.88969,3.31125 -4.05093,15.09188 -4.93969,18.40219 z"
+       id="path3230"
+       style="fill:url(#linearGradient3419);stroke:none" />
+    <path
+       d="m 651.94031,134.23999 3.27375,6.11063 -19.29562,10.33781 -3.27375,-6.11063 19.29562,-10.33781 z"
+       id="path3237"
+       style="fill:url(#linearGradient3421);stroke:none" />
+    <path
+       d="m 634.66969,144.53655 c 0.52218,0.97407 0.68437,1.27969 1.20656,2.25188 2.77781,-1.48875 12.65813,-6.78188 15.43781,-8.27063 -0.52219,-0.97218 -0.68437,-1.27781 -1.20656,-2.25 -2.77969,1.48782 -12.65812,6.78 -15.43781,8.26875 z"
+       id="path3244"
+       style="fill:url(#linearGradient3423);stroke:none" />
+    <path
+       d="m 656.75437,160.52843 -1.95,6.6525 -21.0075,-6.15281 1.94813,-6.65438 21.00937,6.15469 z"
+       id="path3251"
+       style="fill:url(#linearGradient3425);stroke:none" />
+    <path
+       d="m 635.57438,158.60468 c 3.02718,0.88594 13.78218,4.03781 16.8075,4.92375 0.31124,-1.06031 0.40874,-1.39125 0.71812,-2.44969 -3.02531,-0.88781 -13.78031,-4.03781 -16.8075,-4.92375 -0.31031,1.0575 -0.40688,1.39125 -0.71812,2.44969 z"
+       id="path3258"
+       style="fill:url(#linearGradient3175);stroke:none" />
+  </g>
+</svg>
diff --git a/org.simantics.sysdyn.ui/icons/warning.svg b/org.simantics.sysdyn.ui/icons/warning.svg
new file mode 100644 (file)
index 0000000..1dd13ec
--- /dev/null
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="600"
+   height="500"
+   id="svg2904"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="Nuvola_apps_important_yellow.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1356"
+     inkscape:window-height="874"
+     id="namedview28"
+     showgrid="false"
+     inkscape:zoom="64"
+     inkscape:cx="1.4002934"
+     inkscape:cy="497.30748"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2904" />
+  <metadata
+     id="metadata2950">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs2906">
+    <linearGradient
+       id="Grad1"
+       x1="41.1948738"
+       y1="616.477173"
+       x2="118.931351"
+       y2="527.555115"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.03733917,0,0,-0.03535839,0.20475678,22.530063)">
+      <stop
+         offset="0"
+         id="stop2909"
+         style="stop-color:#f2b600;stop-opacity:1;" />
+      <stop
+         offset="1"
+         id="stop2911"
+         style="stop-color:#f29600;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="Grad2"
+       x1="530.809509"
+       y1="486.631012"
+       x2="174.805481"
+       y2="211.22995"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.00786651,0,0,0.00786651,-0.00679244,0.00631797)">
+      <stop
+         offset="0"
+         id="stop2914"
+         style="stop-color:#d88500;stop-opacity:1;" />
+      <stop
+         offset="1"
+         id="stop2916"
+         style="stop-color:#fc3;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="Grad3"
+       x1="187.873566"
+       y1="224.598923"
+       x2="581.837463"
+       y2="483.100006"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.00786651,0,0,0.00786651,-0.00679244,0.00631791)">
+      <stop
+         offset="0"
+         id="stop2919"
+         style="stop-color:#ffd657;stop-opacity:1;" />
+      <stop
+         offset="1"
+         id="stop2921"
+         style="stop-color:#f2b600;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="Grad4"
+       x1="250.398453"
+       y1="101.536331"
+       x2="412.094299"
+       y2="264.54187"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.00786651,0,0,0.00786651,-0.00679244,0.00631797)">
+      <stop
+         offset="0"
+         id="stop2924"
+         style="stop-color:#fff1c5;stop-opacity:1;" />
+      <stop
+         offset="1"
+         id="stop2926"
+         style="stop-color:#fc3;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       id="Grad5"
+       cx="295.471252"
+       cy="186.096344"
+       r="179.550003"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.01254747,-0.00718228,-1.7748438e-7,3.6893627,-2.0814894)">
+      <stop
+         offset="0"
+         stop-color="#ffffff"
+         id="stop2929" />
+      <stop
+         offset="0.5"
+         stop-color="#ffffff"
+         id="stop2931" />
+      <stop
+         offset="1"
+         stop-color="#d5d5d5"
+         id="stop2933" />
+    </radialGradient>
+  </defs>
+  <path
+     d="m 2.2495975,0.17755318 c 0,0 -2.13182401,3.50059672 -2.13182401,3.50059672 -0.04090583,0.066865 -0.04090583,0.1494635 0,0.2163294 0.0401193,0.066078 0.11563773,0.1077713 0.19744941,0.1077713 l 4.2636484,0 c 0.081025,0 0.1565435,-0.041693 0.197449,-0.1077713 0.040119,-0.066866 0.040119,-0.1494637 0,-0.2163294 L 2.6444965,0.17755318 C 2.6035909,0.11068789 2.528072,0.06899551 2.4470466,0.06899551 c -0.081025,0 -0.1565435,0.04169235 -0.1974491,0.10855767 z"
+     style="fill-opacity:0.17857098"
+     id="path2935"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.1557113,0.11487581 c 0,0 -2.13182443,3.50059629 -2.13182443,3.50059629 -0.04090583,0.066865 -0.04090583,0.1494646 0,0.2163294 0.04011931,0.066079 0.11563774,0.1077714 0.1974494,0.1077714 l 4.26364803,0 c 0.081026,0 0.1565435,-0.041692 0.1974498,-0.1077714 0.040119,-0.066864 0.040119,-0.1494636 0,-0.2163294 L 2.5506094,0.11487581 C 2.5097038,0.04801053 2.4341857,0.006318 2.3531605,0.006318 c -0.081026,0 -0.1565436,0.04169253 -0.1974492,0.10855781 z"
+     style="fill:url(#Grad1)"
+     id="path2937"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.3531605,0.1864611 c -0.013374,0 -0.025959,0.007079 -0.033039,0.018093 L 1.2542088,1.9548528 0.1882969,3.7051507 c -0.007081,0.011014 -0.007081,0.025173 0,0.036186 0.007081,0.011014 0.0196662,0.018093 0.0330394,0.018093 l 4.26364802,0 c 0.013374,0 0.025959,-0.00708 0.03304,-0.018093 0.00708,-0.011014 0.00708,-0.025173 0,-0.036186 L 2.3861996,0.20455409 c -0.00708,-0.0110133 -0.019666,-0.018093 -0.033039,-0.018093 z"
+     style="fill:url(#Grad2)"
+     id="path2939"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.3528655,0.1864611 c -0.013374,0 -0.02596,0.007079 -0.03304,0.018093 L 1.2539138,1.9548528 0.18800176,3.7051507 c -0.007081,0.011014 -0.007081,0.025173 0,0.036186 0.007081,0.011014 0.0196662,0.018093 0.0330394,0.018093 l 4.26364814,0 c 0.013374,0 0.025959,-0.00708 0.033039,-0.018093 0.00708,-0.011014 0.00708,-0.025173 0,-0.036186 L 2.3859045,0.20455409 c -0.00708,-0.0110133 -0.019666,-0.018093 -0.033039,-0.018093 z"
+     style="fill:none;stroke:url(#Grad3);stroke-width:0.09439755;stroke-linejoin:round"
+     id="path2941"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.3537257,0.24950271 c -0.012666,6.1991e-4 -0.024472,0.007694 -0.03122,0.0181914 L 1.2565934,2.0179925 1.1081131,2.2618546 c 0.3616458,0.2170897 0.7847846,0.3421927 1.2370087,0.3421927 0.458646,0 0.8874945,-0.128465 1.2524958,-0.3512883 L 2.3886332,0.26769413 c -0.00708,-0.0110133 -0.019568,-0.0181914 -0.032941,-0.0181914 -6.199e-4,0 -0.00135,-3.07e-5 -0.00197,0 z"
+     style="fill:url(#Grad4);stroke-width:10;stroke-linejoin:round"
+     id="path2943"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.2446032,1.1202159 -1.28774827,2.113732 c -0.0220263,0.036973 -0.0220263,0.082598 0,0.1187843 0.0220272,0.036972 0.0637188,0.059786 0.10855797,0.059786 l 2.57471,0 c 0.044839,0 0.086531,-0.022814 0.1085579,-0.059786 0.022026,-0.036972 0.022026,-0.081811 0,-0.1187843 L 2.4617192,1.1202159 c -0.022026,-0.036972 -0.063719,-0.059785 -0.108558,-0.059785 -0.044839,0 -0.086532,0.022813 -0.108558,0.059785 z"
+     style="fill:url(#Grad5)"
+     id="path2945"
+     inkscape:connector-curvature="0" />
+  <path
+     d="M 2.2852663,3.337518 C 2.2114878,3.3021821 2.1553008,3.2172169 2.1553008,3.1409868 c 0,-0.1419381 0.148319,-0.248858 0.2886484,-0.2080803 0.094669,0.027511 0.1590123,0.1129419 0.1582241,0.2100805 -6.804e-4,0.082516 -0.036387,0.1433023 -0.1092874,0.1860081 -0.055802,0.032689 -0.1491636,0.03652 -0.2076196,0.00852 z M 2.3020353,2.7770489 C 2.2928126,2.7719848 2.2710912,2.7543341 2.2537687,2.737834 2.1932418,2.6801841 2.1933171,2.6806913 2.1538627,2.0638401 2.1187897,1.5155034 2.1184996,1.506983 2.1335493,1.4675949 2.1674053,1.3789769 2.2428431,1.3401722 2.3684515,1.346762 c 0.079842,0.00419 0.1413326,0.032228 0.1813017,0.082674 0.03414,0.043088 0.041563,0.067446 0.041532,0.1362832 -3.36e-5,0.074803 -0.047818,0.9921396 -0.054611,1.0483554 -0.00889,0.073626 -0.05188,0.133375 -0.1148864,0.1596827 -0.036004,0.015035 -0.095413,0.016668 -0.119753,0.00329 z"
+     id="path2947"
+     inkscape:connector-curvature="0" />
+</svg>
index a23cc2f2f71ec6eb3affa1f7ca4212985ce8c87b..a9237d571dbaaa166b179cec62599fa713a8c670 100644 (file)
                relationship="stack"\r
                relative="org.simantics.browsing.ui.graph.propertyView">\r
          </view>\r
+         <view\r
+               id="org.simantics.diagram.profile"\r
+               minimized="false"\r
+               relationship="stack"\r
+               relative="org.simantics.browsing.ui.graph.propertyView">\r
+         </view>\r
          \r
       </perspectiveExtension>\r
    </extension>\r
index e531f9bb6dcdae35362980cf8b6e9895928ce6ff..cb2d6dd3bc116446c40d86df2f7172a7fee8ca9b 100644 (file)
@@ -23,7 +23,9 @@ import org.eclipse.jface.resource.LocalResourceManager;
 import org.eclipse.jface.resource.ResourceManager;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.Bundle;\r
 import org.osgi.framework.BundleContext;\r
+import org.simantics.utils.FileUtils;\r
 \r
 public class Activator extends AbstractUIPlugin {\r
 \r
@@ -34,6 +36,10 @@ public class Activator extends AbstractUIPlugin {
     private static Activator plugin;\r
     \r
     private static LocalResourceManager resourceManager;\r
+    \r
+    public static String          FATAL_SVG_TEXT;\r
+    public static String          ERROR_SVG_TEXT;\r
+    public static String          WARNING_SVG_TEXT;\r
 \r
     @Override\r
     public void start(BundleContext context) throws Exception {\r
@@ -43,6 +49,13 @@ public class Activator extends AbstractUIPlugin {
         BasicConfigurator.configure(appender);\r
         Logger.getRootLogger().setLevel(Level.WARN);\r
         plugin = this;\r
+        \r
+        \r
+        Bundle bundle = context.getBundle();\r
+\r
+        FATAL_SVG_TEXT = FileUtils.getContents(bundle.getResource("icons/fatal.svg"));\r
+        ERROR_SVG_TEXT = FileUtils.getContents(bundle.getResource("icons/error.svg"));\r
+        WARNING_SVG_TEXT = FileUtils.getContents(bundle.getResource("icons/warning.svg"));\r
     }\r
     \r
     @Override\r
diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements2/profiles/IssueDecorationStyle.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements2/profiles/IssueDecorationStyle.java
new file mode 100644 (file)
index 0000000..1912264
--- /dev/null
@@ -0,0 +1,131 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.sysdyn.ui.elements2.profiles;\r
+\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+import java.util.Collections;\r
+import java.util.Set;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.PossibleTypedParent;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.diagram.profile.StyleBase;\r
+import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;\r
+import org.simantics.issues.Issue.Severity;\r
+import org.simantics.issues.common.ErrorIssues;\r
+import org.simantics.issues.common.FatalIssues;\r
+import org.simantics.issues.common.IssueContexts;\r
+import org.simantics.issues.common.WarningIssues;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.modeling.ModelingResources;\r
+import org.simantics.scenegraph.INode;\r
+import org.simantics.scenegraph.g2d.nodes.SVGNode;\r
+import org.simantics.scenegraph.profile.EvaluationContext;\r
+import org.simantics.scenegraph.profile.common.ProfileVariables;\r
+import org.simantics.scenegraph.utils.NodeUtil;\r
+import org.simantics.simulation.ontology.SimulationResource;\r
+import org.simantics.sysdyn.ui.Activator;\r
+import org.simantics.utils.datastructures.map.Tuple;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public class IssueDecorationStyle extends StyleBase<IssueResult> {\r
+\r
+    private static final String DECORATION_NODE_NAME = "issueDecorations";\r
+\r
+    @Override\r
+    public IssueResult calculateStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource module, Variable configuration) throws DatabaseException {\r
+        Layer0 L0 = Layer0.getInstance(graph);\r
+        ModelingResources MOD = ModelingResources.getInstance(graph);\r
+        Resource config = graph.getPossibleObject(module, MOD.ElementToComponent);\r
+        if (config == null)\r
+            return null;\r
+\r
+        AffineTransform transform = DiagramGraphUtil.getAffineTransform(graph, module);\r
+\r
+        Resource model = graph.syncRequest(new PossibleTypedParent(config, SimulationResource.getInstance(graph).Model));\r
+        if (model == null)\r
+            return null;\r
+\r
+        Resource project = graph.getPossibleObject(model, L0.PartOf);\r
+        if (project == null)\r
+            return null;\r
+\r
+        Set<Resource> fatals = graph.syncRequest(new FatalIssues(project, true));\r
+        Set<Resource> fatalContexts = graph.syncRequest(new IssueContexts(fatals));\r
+        if (fatalContexts.contains(config))\r
+            return new IssueResult(Severity.FATAL, transform);\r
+\r
+        Set<Resource> errors = graph.syncRequest(new ErrorIssues(project, true));\r
+        Set<Resource> errorContexts = graph.syncRequest(new IssueContexts(errors));\r
+        if (errorContexts.contains(config))\r
+            return new IssueResult(Severity.ERROR, transform);\r
+\r
+        Set<Resource> warnings = graph.syncRequest(new WarningIssues(project, true));\r
+        Set<Resource> warningContexts = graph.syncRequest(new IssueContexts(warnings));\r
+        if (warningContexts.contains(config))\r
+            return new IssueResult(Severity.WARNING, transform);\r
+\r
+        return null;\r
+    }\r
+\r
+    @Override\r
+    public void applyStyleForNode(EvaluationContext observer, INode node, IssueResult result) {\r
+        if (result == null) {\r
+            ProfileVariables.denyChild(node, "", DECORATION_NODE_NAME);\r
+            return;\r
+        }\r
+\r
+        SVGNode svgNode = ProfileVariables.claimChild(node, "", DECORATION_NODE_NAME, SVGNode.class, observer);\r
+\r
+        Rectangle2D bounds = NodeUtil.getLocalBounds(node, Collections.<INode>singleton(svgNode));\r
+\r
+        double tx = bounds.getMaxX();\r
+        double ty = bounds.getY();\r
+\r
+        svgNode.setZIndex( Integer.MAX_VALUE );\r
+        svgNode.setTransform( AffineTransform.getTranslateInstance(tx-1, ty-1)); \r
+        svgNode.getTransform().scale(0.5, 0.5);\r
+        \r
+\r
+        Severity sev = result.getSeverity();\r
+        if (Severity.FATAL.equals(sev))\r
+            svgNode.setData(Activator.FATAL_SVG_TEXT);\r
+        else if (Severity.ERROR.equals(sev))\r
+            svgNode.setData(Activator.ERROR_SVG_TEXT);\r
+        else if (Severity.WARNING.equals(sev))\r
+            svgNode.setData(Activator.WARNING_SVG_TEXT);\r
+    }\r
+\r
+    @Override\r
+    protected void cleanupStyleForNode(INode node) {\r
+        ProfileVariables.denyChild(node, "", DECORATION_NODE_NAME);\r
+    }\r
+\r
+}\r
+\r
+/**\r
+ * This is needed to keep the issue decoration up-to-date when its parent\r
+ * element moves.\r
+ */\r
+class IssueResult extends Tuple {\r
+    public IssueResult(Severity severity, AffineTransform transform) {\r
+        super(severity, transform);\r
+    }\r
+    public Severity getSeverity() {\r
+        return (Severity) getField(0);\r
+    }\r
+}\r
index 0bdedd0d47d585951049f7e39dc3895bf46f72f8..1dd871655a7030452472778eb7b16076f7c92231 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.elements2.profiles;\r
 \r
 import java.awt.Color;\r
index e6ec15a6a8e86142740873d53bff9e4ad66a3d83..4478bae7c74c1e6a51c2d1e3dbd5f20ef3955fab 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Copyright (c) 2010 Association for Decentralized Information Management in\r
+ * Copyright (c) 2010, 2011 Association for Decentralized Information Management in\r
  * Industry THTH ry.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the terms of the Eclipse Public License v1.0\r
@@ -67,6 +67,8 @@ public class NewModuleNodeHandler extends AbstractHandler {
                 g.claim(moduleType, l0.Inherits, sr.Module);\r
                 g.claim(moduleType, l0.PartOf, model);\r
                 \r
+                \r
+                \r
                 Resource configuration = GraphUtils.create2(g, \r
                         sr.Configuration,\r
                         l0.HasName, name + "Configuration",\r
@@ -88,6 +90,19 @@ public class NewModuleNodeHandler extends AbstractHandler {
                                g.deny(diagram, L0X.HasTrigger, trigger);\r
                        }\r
                 }\r
+                \r
+                GraphUtils.create2(g,\r
+                        sr.Validations_Dependencies_DependencyConnectionsIssueSource,\r
+                        L0X.IsActivatedBy, model,\r
+                        l0.PartOf, moduleType\r
+                        );\r
+                \r
+                GraphUtils.create2(g,\r
+                        sr.Validations_Expressions_ExpressionIssueSource,\r
+                        L0X.IsActivatedBy, model,\r
+                        l0.PartOf, moduleType\r
+                        );\r
+                \r
                 Resource mapping = g.newResource();\r
                 g.claim(mapping, l0.InstanceOf, null, sr.DiagramToCompositeMapping);\r
                 g.claim(diagram, L0X.HasTrigger, mapping);\r
index 265aed911dc91dd0e234a334fef71fba932a2f2a..f568a6ca61d1cc92ae9fe44d0afd2f0ca51f38f5 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.utils;\r
 \r
 import org.simantics.db.Resource;\r
@@ -14,37 +25,37 @@ public class ProfileEntries  {
     public static void createStandardProfiles(WriteGraph graph, final Resource model) throws DatabaseException {\r
 \r
         Layer0 L0 = Layer0.getInstance(graph);\r
+        SysdynResource sr = SysdynResource.getInstance(graph);\r
+\r
         DiagramResource DIA = DiagramResource.getInstance(graph);\r
 \r
-        final Resource a = createSimulationPlaybackProfile(graph);\r
+        Resource simulationPlaybackProfile = createProfile(graph, "Simulation Playback", sr.SimulationPlaybackProfile ,sr.Profiles_SimulationPlaybackColours);\r
 \r
-        Resource plain = Profiles.createProfile(graph, "Plain");\r
+        Resource defaultProfile = createProfile(graph, "Default", sr.DefaultProfile, sr.Profiles_IssueWarnings);\r
 \r
-        graph.claim(model, DIA.HasProfile, plain);\r
-        graph.claim(model, L0.ConsistsOf, a);\r
-        graph.claim(model, L0.ConsistsOf, plain);\r
+        graph.claim(model, DIA.HasProfile, defaultProfile);\r
+        graph.claim(model, L0.ConsistsOf, simulationPlaybackProfile);\r
+        graph.claim(model, L0.ConsistsOf, defaultProfile);\r
 \r
         // FIXME: add virtual graph write back once this is fixed: https://www.simulationsite.net/redmine/issues/3296\r
 //        graph.sync(new WriteRequest(graph.getService(VirtualGraphSupport.class).getWorkspacePersistent("profiles")) {\r
 //            @Override\r
 //            public void perform(WriteGraph graph) throws DatabaseException {\r
 //                DiagramResource DIA = DiagramResource.getInstance(graph);\r
-                graph.claim(model, DIA.HasActiveProfile, plain);\r
+                graph.claim(model, DIA.HasActiveProfile, defaultProfile);\r
 //            }\r
 //        });\r
 \r
     }\r
     \r
-    public static Resource createSimulationPlaybackProfile(WriteGraph graph)\r
-            throws DatabaseException {\r
+    public static Resource createProfile(WriteGraph graph, String name, Resource type, Resource... entries) throws DatabaseException {\r
         Layer0 L0 = Layer0.getInstance(graph);\r
-        SysdynResource sr = SysdynResource.getInstance(graph);\r
         \r
-        Resource profile = Profiles.createProfile(graph, "Simulation Playback",\r
-                sr.Profiles_SimulationPlaybackColours);\r
+        Resource profile = Profiles.createProfile(graph, name,\r
+                entries);\r
         \r
         graph.deny(profile, L0.InstanceOf);\r
-        graph.claim(profile, L0.InstanceOf, null, sr.SimulationPlaybackProfile);\r
+        graph.claim(profile, L0.InstanceOf, null, type);\r
         return profile;\r
     }\r
 \r
index 5360fd838ddb38e4c1dcd981d8b39719a7637208..c593f27847a64a5ad9e03917dacbc261f885a075 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.utils;\r
 \r
 import org.simantics.databoard.Bindings;\r
index a6431ad4f1e30027c7903658fb116d2837730541..ebd5f7adab3a0e6c5eccc1fd16312a8384a16563 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 import java.util.Collection;\r
@@ -13,6 +24,7 @@ import org.simantics.issues.ontology.IssueResource;
 import org.simantics.layer0.Layer0;\r
 import org.simantics.scl.reflection.annotations.SCLValue;\r
 import org.simantics.simulation.ontology.SimulationResource;\r
+import org.simantics.structural.stubs.StructuralResource2;\r
 import org.simantics.sysdyn.SysdynResource;\r
 \r
 public class DependencyFunction {\r
@@ -47,36 +59,44 @@ public class DependencyFunction {
         Resource variable = (Resource)_resource;\r
         Collection<Resource> existing = (Collection<Resource>)_existing;\r
         \r
-        if(!graph.hasStatement(variable) || !graph.hasStatement(variable, Layer0.getInstance(graph).PartOf))\r
+        IssueResource ISSUE = IssueResource.getInstance(graph);\r
+        SysdynResource sr = SysdynResource.getInstance(graph);\r
+        Layer0 l0 = Layer0.getInstance(graph);\r
+        \r
+        if(!graph.isInstanceOf(variable, sr.IndependentVariable)) \r
+            return Boolean.TRUE;\r
+        \r
+        if(!graph.hasStatement(variable) || !graph.hasStatement(variable, l0.PartOf))\r
             return Boolean.FALSE;\r
 \r
         String name = graph.getRelatedValue(variable, Layer0.getInstance(graph).HasName, Bindings.STRING);\r
 \r
-        Set<String> references;\r
-        Set<String> dependencies;\r
+        Set<String> dependencies = ValidationUtils.getDependencies(graph, variable);\r
+\r
+        Set<String> references = null;\r
         try {\r
             references = ValidationUtils.getReferences(graph, variable);\r
-            dependencies = ValidationUtils.getDependencies(graph, variable);\r
-            \r
-            \r
+        } catch (SyntaxErrorException e) {\r
+        } catch (UnsupportedCharactersException e) {\r
+        } catch (UndefinedExpressionException e) {\r
+        }\r
+        \r
+        if(references != null && dependencies != null) {\r
             for(String reference : references) {\r
                 if(!dependencies.contains(reference) && match(graph, existing, variable, getMissingLinkLabel(name, reference)) == null)\r
                     return Boolean.FALSE;\r
             }\r
+        }\r
 \r
+        if(dependencies != null) {\r
             for(String dependency : dependencies) {\r
-                if(!references.contains(dependency) && match(graph, existing, variable, getUnusedDependencyLabel(name, dependency)) == null)\r
+                if(references == null || \r
+                        (!references.contains(dependency) && \r
+                        match(graph, existing, variable, getUnusedDependencyLabel(name, dependency)) == null))\r
                     return Boolean.FALSE;\r
             }\r
-        } catch (SyntaxErrorException e) {\r
-        } catch (UnsupportedCharactersException e) {\r
-        } catch (UndefinedExpressionException e) {\r
         }\r
         \r
-        IssueResource ISSUE = IssueResource.getInstance(graph);\r
-        SysdynResource sr = SysdynResource.getInstance(graph);\r
-        Layer0 l0 = Layer0.getInstance(graph);\r
-        \r
         Resource context;\r
         for(Resource exist : existing) {\r
             context = graph.getSingleObject(exist, ISSUE.HasIssueContext);\r
@@ -108,11 +128,16 @@ public class DependencyFunction {
         Set<String> labels = new HashSet<String>();\r
         String label;\r
         \r
-        Set<String> references;\r
-        Set<String> dependencies;\r
+        Set<String> dependencies = ValidationUtils.getDependencies(graph, variable);\r
+        Set<String> references = null;\r
         try {\r
             references = ValidationUtils.getReferences(graph, variable);\r
-            dependencies = ValidationUtils.getDependencies(graph, variable);\r
+        } catch (SyntaxErrorException e) {\r
+        } catch (UnsupportedCharactersException e) {\r
+        } catch (UndefinedExpressionException e) {\r
+        }\r
+        \r
+        if(references != null && dependencies != null) {\r
             for(String reference : references) {\r
                 if(!dependencies.contains(reference)) {\r
                     if(ValidationUtils.isReachable(graph, variable, reference)) {\r
@@ -130,19 +155,18 @@ public class DependencyFunction {
                     }\r
                 } \r
             }\r
+        }\r
 \r
+        if(dependencies != null) {\r
             for(String dependency : dependencies) {\r
                 label = getUnusedDependencyLabel(name, dependency);\r
-                if(!references.contains(dependency)) {\r
+                if(references == null || !references.contains(dependency)) {\r
                     labels.add(label);\r
                     if(match(graph, existing, variable, label) == null) {\r
                         ValidationUtils.createIssue(graph, model, source, variable, label, ISSUE.Severity_Warning, sr.DependencyIssue);\r
                     }\r
                 }\r
             }\r
-        } catch (SyntaxErrorException e) {\r
-        } catch (UnsupportedCharactersException e) {\r
-        } catch (UndefinedExpressionException e) {\r
         }\r
 \r
         Set<Resource> toBeRemoved = new HashSet<Resource>();\r
@@ -171,7 +195,12 @@ public class DependencyFunction {
     public static Object dependencyBaseRealizationFunction(Object _graph, Object _model) throws DatabaseException {\r
         ReadGraph graph = (ReadGraph)_graph;\r
         Resource model = (Resource)_model;\r
-        return graph.getSingleObject(model, SimulationResource.getInstance(graph).HasConfiguration);\r
+        SysdynResource sr = SysdynResource.getInstance(graph);\r
+        if(graph.isInstanceOf(model, sr.SysdynModel))\r
+            return graph.getSingleObject(model, SimulationResource.getInstance(graph).HasConfiguration);\r
+        else if (graph.isInheritedFrom(model, sr.Module))\r
+            return graph.getSingleObject(model, StructuralResource2.getInstance(graph).IsDefinedBy);\r
+        else return null;\r
 \r
     }\r
 \r
index 344310fbed3f3945beac8864a9f8620b0f44571d..483f2d74d080a374177d08909774ed87c8460824 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 import java.util.Collection;\r
@@ -13,6 +24,7 @@ import org.simantics.issues.ontology.IssueResource;
 import org.simantics.layer0.Layer0;\r
 import org.simantics.scl.reflection.annotations.SCLValue;\r
 import org.simantics.simulation.ontology.SimulationResource;\r
+import org.simantics.structural.stubs.StructuralResource2;\r
 import org.simantics.sysdyn.SysdynResource;\r
 \r
 /**\r
@@ -41,8 +53,17 @@ public class ExpressionIssueFunction {
         ReadGraph graph = (ReadGraph)_graph;\r
         Resource variable = (Resource)_resource;\r
         Collection<Resource> existing = (Collection<Resource>)_existing;\r
-        String name = graph.getRelatedValue(variable, Layer0.getInstance(graph).HasName, Bindings.STRING);\r
-\r
+        \r
+        SysdynResource sr = SysdynResource.getInstance(graph);\r
+        IssueResource ISSUE = IssueResource.getInstance(graph);\r
+        Layer0 l0 = Layer0.getInstance(graph);\r
+        \r
+        if(!graph.isInstanceOf(variable, sr.IndependentVariable)) {\r
+            return Boolean.TRUE;\r
+        }\r
+        \r
+        String name = graph.getRelatedValue(variable, l0.HasName, Bindings.STRING);\r
+System.out.println(name);\r
         // Try if there are any errors while parsing the expressions\r
         try {\r
             ValidationUtils.getReferences(graph, variable);\r
@@ -57,10 +78,6 @@ public class ExpressionIssueFunction {
                 return Boolean.FALSE;\r
         }    \r
         \r
-        SysdynResource sr = SysdynResource.getInstance(graph);\r
-        IssueResource ISSUE = IssueResource.getInstance(graph);\r
-        Layer0 l0 = Layer0.getInstance(graph);\r
-\r
         Resource context;\r
         // There were no errors -> There should be no expression issues for this variable\r
         for(Resource exist : existing) {\r
@@ -133,7 +150,12 @@ public class ExpressionIssueFunction {
     public static Object expressionBaseRealizationFunction(Object _graph, Object _model) throws DatabaseException {\r
         ReadGraph graph = (ReadGraph)_graph;\r
         Resource model = (Resource)_model;\r
-        return graph.getSingleObject(model, SimulationResource.getInstance(graph).HasConfiguration);\r
+        SysdynResource sr = SysdynResource.getInstance(graph);\r
+        if(graph.isInstanceOf(model, sr.SysdynModel))\r
+            return graph.getSingleObject(model, SimulationResource.getInstance(graph).HasConfiguration);\r
+        else if (graph.isInheritedFrom(model, sr.Module)) {\r
+            return graph.getSingleObject(model, StructuralResource2.getInstance(graph).IsDefinedBy);\r
+        } else return null;\r
     }\r
     \r
     \r
index 668ddee49bbdb7288deb6cf5879f9a541c251ee0..4ec11767ad9cf76360941b3b430cccf979257dbf 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 public class NoSuchVariableException extends RuntimeException {\r
index 8d577c98c8bfb29962fe5d73ebff2e70d11c0955..0592a5d79eecf1cb115180c40d53426f78e6803a 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 public class SyntaxErrorException extends RuntimeException {\r
index bffa074ed5423df9db9bbe6c8215150e1a1d3495..1c53cd87f05f9c644196d857e66114faae07a390 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 public class UndefinedExpressionException extends RuntimeException {\r
index e96b6096b54b8c00d4ab7ad972ff3a1b85922e54..b2aa82f416c2efb9f4328ba1b08652c13dfc51cc 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 public class UnsupportedCharactersException extends RuntimeException {\r
index 349e03032737da7b47e74af6f33fc8a3b20de3b5..7659e3d5824b063520464475d40c09d8199d590a 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.ui.validation;\r
 \r
 import java.io.StringReader;\r
@@ -69,7 +80,11 @@ public class ValidationUtils {
         if(expressionList == null || expressionList.isEmpty())\r
             throw new UndefinedExpressionException();\r
         for(Resource expression : expressionList) {\r
-            for(Resource s : graph.syncRequest(new ObjectsWithType(expression, sr.HasEquation, l0.String))) {\r
+            Collection<Resource> equations = graph.syncRequest(new ObjectsWithType(expression, sr.HasEquation, l0.String));\r
+            if(equations.isEmpty())\r
+                throw new UndefinedExpressionException();\r
+            \r
+            for(Resource s : equations) {\r
                 String value = graph.getValue(s, Bindings.STRING);\r
                 if(value.length() == 0)\r
                     throw new UndefinedExpressionException();\r
index 4b4c29984e2228e2b143ec41e84dbb2d59717026..c83f7bdb8a7beb0726dc2794e6cc694e231b7cfe 100644 (file)
@@ -23,7 +23,8 @@ Require-Bundle: org.simantics.objmap;bundle-version="0.1.0",
  org.simantics.scl.runtime;bundle-version="0.1.3",
  org.simantics.db.layer0;bundle-version="1.1.0",
  org.simantics.spreadsheet.common;bundle-version="1.1.0",
- org.simantics.spreadsheet;bundle-version="1.1.0"
+ org.simantics.spreadsheet;bundle-version="1.1.0",
+ org.eclipse.jface.text;bundle-version="3.6.1"
 Export-Package: org.simantics.sysdyn,
  org.simantics.sysdyn.adapter,
  org.simantics.sysdyn.expressionParser,
index 102348c97333f65be76eafeb78db9f0d519be0dc..c21b4a9cbd9da47737d0b8dbcdbd21eddda7490a 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.adapter;\r
 \r
 public class SysdynVariableProperties {\r
index e04aed72ea44c2715e77b4d612cfa058aebd2eca..75a561c1edf35b0d2f700a0f72d0efffe3f22283 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.adapter;\r
 \r
 import java.util.ArrayList;\r
index ee40f1e8c8ab7e49d548872ebbeeb3d0f4ded4c3..725eed58d6b8a14016d573f2f480699707a075b7 100644 (file)
@@ -1,3 +1,14 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
 package org.simantics.sysdyn.manager;\r
 \r
 import java.io.File;\r
index 56bd084a922a5fc294411a006335dc37b78e0d79..0a857906a7b2c4c1db85ecc36849c8a48880685a 100644 (file)
@@ -167,10 +167,23 @@ public class SysdynModel implements IMappingListener, IModel {
        public synchronized void simulate(final IModelicaMonitor monitor, final IProgressMonitor progressMonitor, final Experiment experiment) throws IOException {\r
                canceled = false;\r
                progressMonitor.subTask("Write modelica classes");\r
+               \r
+               // Write Modelica files\r
                ModelicaWriter writer = new ModelicaWriter();\r
-               for(Configuration c : modules) {\r
-                       writer.write(c);\r
+               try {\r
+                   for(Configuration c : modules) {\r
+                       writer.write(c);\r
+                   }\r
+               } catch (Exception e) {\r
+                   setExperimentStopped(experiment);\r
+                   \r
+                   \r
+                   monitor.showConsole();\r
+                   \r
+                   monitor.message("Error when writing Modelica code.");\r
+                   return;\r
                }\r
+               \r
                progressMonitor.worked(1);\r
 \r
                progressMonitor.subTask("Write initial files");\r
@@ -203,7 +216,7 @@ public class SysdynModel implements IMappingListener, IModel {
                final SimulationLocation simulationLocation = ModelicaManager.createInputFiles(\r
                                getSimulationDir(),\r
                                configuration.getName(),\r
-                               writer.toString(),\r
+                               modelText,\r
                                inits,\r
                                functionscript.toString());\r
                \r
@@ -350,10 +363,22 @@ public class SysdynModel implements IMappingListener, IModel {
        public synchronized boolean update(ReadGraph graph) throws DatabaseException {\r
                if(mapping.isDomainModified()) {\r
                        mapping.updateRange(graph);\r
-                       for(Resource config : readModules(graph, configurationResource)) {\r
+                       Set<Resource> configs = readModules(graph, configurationResource); \r
+                       for(Resource config : configs) {\r
                                if(!modules.contains(config))\r
                                        modules.add((Configuration)mapping.map(graph, config));\r
                        }\r
+                       \r
+                       HashSet<Configuration> toBeRemoved = null;\r
+                       for(Configuration module : modules) {\r
+                           if(!configs.contains(mapping.inverseGet(module))) {\r
+                               if(toBeRemoved == null)\r
+                                   toBeRemoved = new HashSet<Configuration>();\r
+                               toBeRemoved.add(module);\r
+                           }\r
+                       }\r
+                       if(toBeRemoved != null)\r
+                           modules.removeAll(toBeRemoved);\r
                        return true;\r
                }\r
                else\r
@@ -366,10 +391,22 @@ public class SysdynModel implements IMappingListener, IModel {
                                @Override\r
                                public void run(ReadGraph graph) throws DatabaseException {\r
                                        mapping.updateRange(graph);\r
-                                       for(Resource config : readModules(graph, configurationResource)) {\r
-                                               if(!modules.contains(config))\r
-                                                       modules.add((Configuration)mapping.map(graph, config));\r
-                                       }\r
+                           Set<Resource> configs = readModules(graph, configurationResource); \r
+                           for(Resource config : configs) {\r
+                               if(!modules.contains(config))\r
+                                   modules.add((Configuration)mapping.map(graph, config));\r
+                           }\r
+                           \r
+                           HashSet<Configuration> toBeRemoved = null;\r
+                           for(Configuration module : modules) {\r
+                               if(!configs.contains(mapping.inverseGet(module))) {\r
+                                   if(toBeRemoved == null)\r
+                                       toBeRemoved = new HashSet<Configuration>();\r
+                                   toBeRemoved.add(module);\r
+                               }\r
+                           }\r
+                           if(toBeRemoved != null)\r
+                               modules.removeAll(toBeRemoved);\r
                                }\r
                        });\r
                        return true;\r
index b2a729b66af31ba9a2517976a4b97925e316f9d6..3d51aa8f348dac49b1a5c90dd550e709e9063ad9 100644 (file)
@@ -18,12 +18,18 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;\r
 import org.eclipse.core.runtime.Status;\r
 import org.eclipse.core.runtime.jobs.Job;\r
-import org.eclipse.ui.console.IConsole;\r
+import org.eclipse.jface.text.BadLocationException;\r
+import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.PlatformUI;\r
 import org.eclipse.ui.console.ConsolePlugin;\r
+import org.eclipse.ui.console.IConsole;\r
 import org.eclipse.ui.console.IConsoleManager;\r
+import org.eclipse.ui.console.IHyperlink;\r
+import org.eclipse.ui.console.IPatternMatchListener;\r
 import org.eclipse.ui.console.MessageConsole;\r
 import org.eclipse.ui.console.MessageConsoleStream;\r
-import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.console.PatternMatchEvent;\r
+import org.eclipse.ui.console.TextConsole;\r
 import org.simantics.modelica.IModelicaMonitor;\r
 import org.simantics.simulation.experiment.Experiment;\r
 import org.simantics.sysdyn.manager.SysdynModel;\r
@@ -39,10 +45,10 @@ public class SimulationJob extends Job {
         this.model = model;\r
         this.experiment = experiment;\r
         if(PlatformUI.isWorkbenchRunning()) {\r
-               this.monitor = new ModelicaMonitor();\r
+            this.monitor = new ModelicaMonitor();\r
         } else {\r
-               // Fallback to headless\r
-               this.monitor = new HeadlessModelicaMonitor();\r
+            // Fallback to headless\r
+            this.monitor = new HeadlessModelicaMonitor();\r
         }\r
     }\r
 \r
@@ -65,7 +71,7 @@ public class SimulationJob extends Job {
         monitor.done(); \r
         return Status.OK_STATUS;\r
     }\r
-    \r
+\r
     @Override\r
     public boolean belongsTo(Object family) {\r
         return "SimulationJob".equals(family);\r
@@ -77,9 +83,9 @@ public class SimulationJob extends Job {
 \r
         @Override\r
         public void message(String message) {\r
-               message(message, "hh:mm:ss");\r
+            message(message, "hh:mm:ss");\r
         }\r
-        \r
+\r
         /**\r
          * Print message to a console with a specified time stamp format\r
          * \r
@@ -90,22 +96,22 @@ public class SimulationJob extends Job {
             Calendar cal = Calendar.getInstance();\r
             SimpleDateFormat sdf = new SimpleDateFormat(timeStampFormat);\r
             String time = sdf.format(cal.getTime());\r
-            \r
+\r
             System.out.println("[" + time +"] " + message);\r
         }\r
 \r
         public void clearConsole() {\r
         }\r
-        \r
+\r
         public void showConsole() {\r
         }\r
 \r
     }\r
-\r
+    //org.simantics.sysdyn.ui.modelicaEditor\r
     private class ModelicaMonitor implements IModelicaMonitor {\r
 \r
         MessageConsole console;\r
-        \r
+\r
         public ModelicaMonitor() {\r
             ConsolePlugin plugin = ConsolePlugin.getDefault();\r
             IConsoleManager conMan = plugin.getConsoleManager();\r
@@ -117,14 +123,103 @@ public class SimulationJob extends Job {
                 MessageConsole myConsole = new MessageConsole("Simulation", null);\r
                 conMan.addConsoles(new IConsole[]{myConsole});\r
                 console = myConsole;\r
+                console.addPatternMatchListener(new IPatternMatchListener() {\r
+\r
+                    @Override\r
+                    public void matchFound(PatternMatchEvent event) {\r
+                        try {\r
+                            console.addHyperlink(new IssueLink(), event.getOffset(), event.getLength());\r
+                        } catch (BadLocationException e) {\r
+                            e.printStackTrace();\r
+                        }\r
+                    }\r
+\r
+                    @Override\r
+                    public void disconnect() {\r
+                    }\r
+\r
+                    @Override\r
+                    public void connect(TextConsole console) {\r
+                    }\r
+\r
+                    @Override\r
+                    public String getPattern() {\r
+                        \r
+                        return "Issues view";\r
+                    }\r
+\r
+                    @Override\r
+                    public String getLineQualifier() {\r
+                        return null;\r
+                    }\r
+\r
+                    @Override\r
+                    public int getCompilerFlags() {\r
+                        return 0;\r
+                    }\r
+                });\r
+                \r
+                /* Link to the modelica document: to be opened to a modelica code viewer.\r
+                console.addPatternMatchListener(new IPatternMatchListener() {\r
+\r
+                    @Override\r
+                    public void matchFound(PatternMatchEvent event) {\r
+                        try {\r
+                            if(event.getSource() instanceof MessageConsole) {\r
+                                MessageConsole console = (MessageConsole) event.getSource();\r
+                                IDocument document = console.getDocument();\r
+                                String s = document.get(event.getOffset(), event.getLength());\r
+                                s = s.substring(s.indexOf(":") + 1, s.lastIndexOf(":"));\r
+                                String[] split = s.split(":|-");\r
+                                \r
+                                //TODO: Find the modelica document and its locations\r
+                                int startOffset = modelicaDocument.getLineOffset(Integer.parseInt(split[0])) + Integer.parseInt(split[1]);\r
+                                int endOffset = modelicaDocument.getLineOffset(Integer.parseInt(split[2])) + Integer.parseInt(split[3]);\r
+                                System.out.println("Open modelica editor for model at: " + startOffset + ", " + (endOffset - startOffset));\r
+                                \r
+                            }\r
+                            \r
+                            console.addHyperlink(new ModelicaLink(), event.getOffset(), event.getLength());\r
+                        } catch (BadLocationException e) {\r
+                            e.printStackTrace();\r
+                        }\r
+                    }\r
+\r
+                    @Override\r
+                    public void disconnect() {\r
+                    }\r
+\r
+                    @Override\r
+                    public void connect(TextConsole console) {\r
+                    }\r
+\r
+                    @Override\r
+                    public String getPattern() {\r
+                        return "\\[[^\\[]*:[\\d]*:[\\d]*\\-[\\d]*:[\\d]*:writable\\]";\r
+\r
+                    }\r
+\r
+                    @Override\r
+                    public String getLineQualifier() {\r
+                        return null;\r
+                    }\r
+\r
+                    @Override\r
+                    public int getCompilerFlags() {\r
+                        return 0;\r
+                    }\r
+                });\r
+                */\r
+\r
+\r
             }\r
         }\r
 \r
         @Override\r
         public void message(String message) {\r
-               message(message, "hh:mm:ss");\r
+            message(message, "hh:mm:ss");\r
         }\r
-        \r
+\r
         /**\r
          * Print message to a console with a specified time stamp format\r
          * \r
@@ -135,18 +230,23 @@ public class SimulationJob extends Job {
             Calendar cal = Calendar.getInstance();\r
             SimpleDateFormat sdf = new SimpleDateFormat(timeStampFormat);\r
             String time = sdf.format(cal.getTime());\r
-            \r
+\r
             MessageConsoleStream out = this.console.newMessageStream();\r
             if(message.length() > 1)\r
-               out.println("[" + time +"] " + message);\r
-            if(message.contains("Error"))\r
-               showConsole();\r
+                out.println("[" + time +"] " + message);\r
+\r
+\r
+\r
+            if(message.contains("Error")) {\r
+                showConsole();\r
+                out.println("See Issues view");\r
+            }\r
         }\r
 \r
         public void clearConsole() {\r
             this.console.clearConsole();\r
         }\r
-        \r
+\r
         public void showConsole() {\r
             ConsolePlugin plugin = ConsolePlugin.getDefault();\r
             IConsoleManager conMan = plugin.getConsoleManager();\r
@@ -154,10 +254,48 @@ public class SimulationJob extends Job {
         }\r
 \r
     }\r
-    \r
+\r
     @Override\r
     protected void canceling() {\r
-        model.cancelSimulation();\r
+\r
+    }\r
+\r
+\r
+    class IssueLink implements IHyperlink {\r
+\r
+        @Override\r
+        public void linkEntered() {\r
+        }\r
+\r
+        @Override\r
+        public void linkExited() {\r
+        }\r
+\r
+        @Override\r
+        public void linkActivated() {\r
+            try {\r
+                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.simantics.issues.ui.issueview");\r
+            } catch (PartInitException e) {\r
+                e.printStackTrace();\r
+            }            \r
+        }\r
+    }\r
+    \r
+    class ModelicaLink implements IHyperlink {\r
+\r
+        @Override\r
+        public void linkEntered() {\r
+        }\r
+\r
+        @Override\r
+        public void linkExited() {\r
+        }\r
+\r
+        @Override\r
+        public void linkActivated() {\r
+            System.out.println("MODELICA LINK");           \r
+        }\r
+\r
     }\r
 \r
 }\r