--- /dev/null
+L0 = <http://www.simantics.org/Layer0-1.1>\r
+ACT = <http://www.simantics.org/Action-1.1>\r
+IMAGE = <http://www.simantics.org/Image2-1.2>\r
+\r
+VP = <http://www.simantics.org/Viewpoint-1.2>\r
+\r
+VP.BrowseContext\r
+ >-- VP.BrowseContext.HasActionContribution --> VP.ActionContribution <R L0.IsRelatedTo\r
+ >-- VP.BrowseContext.HasTestContribution --> VP.TestContribution <R L0.IsRelatedTo\r
+ >-- VP.BrowseContext.SupportsRemovalOf --> L0.Entity <R L0.IsRelatedTo\r
+ >-- VP.BrowseContext.SupportsRenamingOf --> L0.Entity <R L0.IsRelatedTo\r
+ \r
+VP.ActionContribution <T L0.Entity\r
+ >-- VP.ActionContribution.HasNodeType --> L0.Entity <R L0.IsRelatedTo\r
+ >-- VP.ActionContribution.HasCategory --> VP.ActionCategory <R L0.IsRelatedTo : L0.TotalFunction\r
+ >-- VP.ActionContribution.HasAction --> ACT.Action <R L0.IsRelatedTo : L0.FunctionalRelation\r
+ >-- VP.ActionContribution.IsVisibleIf --> VP.Test <R L0.IsRelatedTo : L0.FunctionalRelation\r
+ >-- VP.ActionContribution.IsEnabledIf --> VP.Test <R L0.IsRelatedTo : L0.FunctionalRelation\r
+ >-- VP.ActionContribution.HasImage --> IMAGE.Image <R L0.IsRelatedTo : L0.FunctionalRelation\r
+ \r
+VP.ActionCategory <T L0.Entity\r
+ >-- VP.ActionCategory.HasPriority --> L0.Double <R L0.HasProperty : L0.FunctionalRelation\r
+ >-- VP.ActionCategory.IsSubmenu --> L0.Boolean <R L0.HasProperty : L0.FunctionalRelation\r
+\r
+VP.TestContribution <T L0.Entity\r
+ >-- VP.TestContribution.HasNodeType --> L0.Entity <R L0.IsRelatedTo\r
+ >-- VP.TestContribution.HasTest --> VP.Test <R L0.IsRelatedTo : L0.FunctionalRelation\r
+ >-- VP.TestContribution.HasPriority --> L0.Double <R L0.HasProperty : L0.FunctionalRelation\r
+\r
+VP.RemovalTestContribution <T VP.TestContribution\r
+VP.RenamingTestContribution <T VP.TestContribution\r
+\r
+VP.NewActionCategory : VP.ActionCategory\r
+ L0.HasLabel "New"\r
+ VP.ActionCategory.IsSubmenu L0.True\r
+VP.ImportActionCategory : VP.ActionCategory\r
+ L0.HasLabel "Import"\r
+ VP.ActionCategory.IsSubmenu L0.True\r
+VP.EditActionCategory : VP.ActionCategory\r
+ L0.HasLabel "Edit"\r
+ VP.ActionCategory.IsSubmenu L0.False\r
+ \r
+// Templates\r
+\r
+VP.defineActionContribution: L0.Template\r
+ @template %actionContribution %label %parentType %image %category %action\r
+ %actionContribution : VP.ActionContribution\r
+ L0.HasLabel %label\r
+ VP.ActionContribution.HasImage %image\r
+ VP.ActionContribution.HasCategory %category\r
+ VP.ActionContribution.HasNodeType %parentType\r
+ VP.ActionContribution.HasAction %action\r
+\r
+VP.actionContribution: L0.Template\r
+ @template %actionContext %label %parentType %image %category %action\r
+ %actionContext\r
+ VP.BrowseContext.HasActionContribution _ : VP.ActionContribution\r
+ L0.HasLabel %label\r
+ VP.ActionContribution.HasImage %image\r
+ VP.ActionContribution.HasCategory %category\r
+ VP.ActionContribution.HasNodeType %parentType\r
+ VP.ActionContribution.HasAction %action\r
+\r
+VP.actionContributionWithVisibility: L0.Template\r
+ @template %actionContext %label %parentType %image %category %action %test\r
+ %actionContext\r
+ VP.BrowseContext.HasActionContribution _ : VP.ActionContribution\r
+ L0.HasLabel %label\r
+ VP.ActionContribution.HasImage %image\r
+ VP.ActionContribution.HasCategory %category\r
+ VP.ActionContribution.HasNodeType %parentType\r
+ VP.ActionContribution.HasAction %action\r
+ VP.ActionContribution.IsVisibleIf %test\r
+\r
+VP.removalTestContribution: L0.Template\r
+ @template %actionContext %parentType %test %priority\r
+ %actionContext\r
+ VP.BrowseContext.HasTestContribution _ : VP.RemovalTestContribution\r
+ VP.TestContribution.HasNodeType %parentType\r
+ VP.TestContribution.HasTest %test\r
+ VP.TestContribution.HasPriority %priority\r
+\r
+VP.renamingTestContribution: L0.Template\r
+ @template %actionContext %parentType %test %priority\r
+ %actionContext\r
+ VP.BrowseContext.HasTestContribution _ : VP.RenamingTestContribution\r
+ VP.TestContribution.HasNodeType %parentType\r
+ VP.TestContribution.HasTest %test\r
+ VP.TestContribution.HasPriority %priority\r