Browse Source

added powerbonds and editor to solve crashing reflective editor

Claudio Gomes 5 years ago
parent
commit
a6460bd560
100 changed files with 8986 additions and 613 deletions
  1. 8 0
      HintCO.edit/.classpath
  2. 28 0
      HintCO.edit/.project
  3. 19 0
      HintCO.edit/META-INF/MANIFEST.MF
  4. 10 0
      HintCO.edit/build.properties
  5. BIN
      HintCO.edit/icons/full/ctool16/CreateCandidateScenario_cosimunits_CosimUnitInstance.gif
  6. BIN
      HintCO.edit/icons/full/ctool16/CreateCandidates_candidates_CandidateScenario.gif
  7. BIN
      HintCO.edit/icons/full/ctool16/CreateCandidates_csuDeclarations_CosimUnitDeclaration.gif
  8. BIN
      HintCO.edit/icons/full/ctool16/CreateCandidates_csuDeclarations_HierarchicalCosimUnitDeclaration.gif
  9. BIN
      HintCO.edit/icons/full/ctool16/CreateCandidates_nodes_VariantDiagram.gif
  10. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitDeclaration_ports_InputPortDeclaration.gif
  11. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitDeclaration_ports_OutputPortDeclaration.gif
  12. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_CombineAdaptation.gif
  13. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_MultiRateAdaptation.gif
  14. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_PowerBondAdaptation.gif
  15. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_XorUnitAdaptation.gif
  16. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_ports_InputPortInstance.gif
  17. BIN
      HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_ports_OutputPortInstance.gif
  18. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_ExtrapolationAdaptation.gif
  19. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_InterpolationAdaptation.gif
  20. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_XorPortAdaptation.gif
  21. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_CombineAdaptation.gif
  22. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_MultiRateAdaptation.gif
  23. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_PowerBondAdaptation.gif
  24. BIN
      HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_XorUnitAdaptation.gif
  25. BIN
      HintCO.edit/icons/full/ctool16/CreateHierarchicalCosimUnitDeclaration_children_CosimUnitInstance.gif
  26. BIN
      HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_ExtrapolationAdaptation.gif
  27. BIN
      HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_InterpolationAdaptation.gif
  28. BIN
      HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_XorPortAdaptation.gif
  29. BIN
      HintCO.edit/icons/full/obj16/CandidateScenario.gif
  30. BIN
      HintCO.edit/icons/full/obj16/Candidates.gif
  31. BIN
      HintCO.edit/icons/full/obj16/CombineAdaptation.gif
  32. BIN
      HintCO.edit/icons/full/obj16/CosimUnitDeclaration.gif
  33. BIN
      HintCO.edit/icons/full/obj16/CosimUnitInstance.gif
  34. BIN
      HintCO.edit/icons/full/obj16/ExtrapolationAdaptation.gif
  35. BIN
      HintCO.edit/icons/full/obj16/HierarchicalCosimUnitDeclaration.gif
  36. BIN
      HintCO.edit/icons/full/obj16/InputPortDeclaration.gif
  37. BIN
      HintCO.edit/icons/full/obj16/InputPortInstance.gif
  38. BIN
      HintCO.edit/icons/full/obj16/InterpolationAdaptation.gif
  39. BIN
      HintCO.edit/icons/full/obj16/MultiRateAdaptation.gif
  40. BIN
      HintCO.edit/icons/full/obj16/OutputPortDeclaration.gif
  41. BIN
      HintCO.edit/icons/full/obj16/OutputPortInstance.gif
  42. BIN
      HintCO.edit/icons/full/obj16/PowerBondAdaptation.gif
  43. BIN
      HintCO.edit/icons/full/obj16/VariantDiagram.gif
  44. BIN
      HintCO.edit/icons/full/obj16/XorPortAdaptation.gif
  45. BIN
      HintCO.edit/icons/full/obj16/XorUnitAdaptation.gif
  46. 98 0
      HintCO.edit/plugin.properties
  47. 22 0
      HintCO.edit/plugin.xml
  48. 86 0
      HintCO.edit/src/ua/ansymo/hintco/provider/AdaptationItemProvider.java
  49. 192 0
      HintCO.edit/src/ua/ansymo/hintco/provider/AlternativeItemProvider.java
  50. 119 0
      HintCO.edit/src/ua/ansymo/hintco/provider/ApproximationAdaptationItemProvider.java
  51. 316 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CandidateScenarioItemProvider.java
  52. 107 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CandidatesEditPlugin.java
  53. 211 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CandidatesItemProvider.java
  54. 99 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CombineAdaptationItemProvider.java
  55. 202 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CosimUnitDeclarationItemProvider.java
  56. 288 0
      HintCO.edit/src/ua/ansymo/hintco/provider/CosimUnitInstanceItemProvider.java
  57. 172 0
      HintCO.edit/src/ua/ansymo/hintco/provider/DecompositionPortAdaptationItemProvider.java
  58. 177 0
      HintCO.edit/src/ua/ansymo/hintco/provider/DecompositionUnitAdaptationItemProvider.java
  59. 132 0
      HintCO.edit/src/ua/ansymo/hintco/provider/ExtrapolationAdaptationItemProvider.java
  60. 145 0
      HintCO.edit/src/ua/ansymo/hintco/provider/HierarchicalCosimUnitDeclarationItemProvider.java
  61. 583 0
      HintCO.edit/src/ua/ansymo/hintco/provider/HintcoItemProviderAdapterFactory.java
  62. 147 0
      HintCO.edit/src/ua/ansymo/hintco/provider/IDedItemProvider.java
  63. 99 0
      HintCO.edit/src/ua/ansymo/hintco/provider/InputPortDeclarationItemProvider.java
  64. 147 0
      HintCO.edit/src/ua/ansymo/hintco/provider/InputPortInstanceItemProvider.java
  65. 132 0
      HintCO.edit/src/ua/ansymo/hintco/provider/InterpolationAdaptationItemProvider.java
  66. 156 0
      HintCO.edit/src/ua/ansymo/hintco/provider/MultiRateAdaptationItemProvider.java
  67. 99 0
      HintCO.edit/src/ua/ansymo/hintco/provider/OutputPortDeclarationItemProvider.java
  68. 147 0
      HintCO.edit/src/ua/ansymo/hintco/provider/OutputPortInstanceItemProvider.java
  69. 134 0
      HintCO.edit/src/ua/ansymo/hintco/provider/PortAdaptationItemProvider.java
  70. 88 0
      HintCO.edit/src/ua/ansymo/hintco/provider/PortDeclarationItemProvider.java
  71. 195 0
      HintCO.edit/src/ua/ansymo/hintco/provider/PortInstanceItemProvider.java
  72. 178 0
      HintCO.edit/src/ua/ansymo/hintco/provider/PowerBondAdaptationItemProvider.java
  73. 204 0
      HintCO.edit/src/ua/ansymo/hintco/provider/PrecendenceNodeItemProvider.java
  74. 134 0
      HintCO.edit/src/ua/ansymo/hintco/provider/UnitAdaptationItemProvider.java
  75. 178 0
      HintCO.edit/src/ua/ansymo/hintco/provider/VariantDiagramItemProvider.java
  76. 99 0
      HintCO.edit/src/ua/ansymo/hintco/provider/XorPortAdaptationItemProvider.java
  77. 99 0
      HintCO.edit/src/ua/ansymo/hintco/provider/XorUnitAdaptationItemProvider.java
  78. 9 0
      HintCO.editor/.classpath
  79. 28 0
      HintCO.editor/.project
  80. 21 0
      HintCO.editor/META-INF/MANIFEST.MF
  81. 10 0
      HintCO.editor/build.properties
  82. BIN
      HintCO.editor/icons/full/obj16/HintcoModelFile.gif
  83. BIN
      HintCO.editor/icons/full/wizban/NewHintco.gif
  84. 53 0
      HintCO.editor/plugin.properties
  85. 37 0
      HintCO.editor/plugin.xml
  86. 94 0
      HintCO.editor/src/ua/ansymo/hintco/presentation/CandidatesEditorPlugin.java
  87. 435 0
      HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoActionBarContributor.java
  88. 1911 0
      HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoEditor.java
  89. 627 0
      HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoModelWizard.java
  90. 71 0
      HintCO/instances/case_study_double_loop_pbond.hintco
  91. 147 0
      HintCO/model/Candidates.genmodel
  92. 34 1
      HintCO/model/Candidates.xcore
  93. 0 321
      HintCO/model/ContractLang.ecore
  94. 0 269
      HintCO/model/ContractLang.genmodel
  95. 217 0
      HintCO/model/hintco.ecore
  96. 3 21
      HintCO/pom.xml
  97. 7 0
      HintCO/src-gen/ua/ansymo/hintco/.gitignore
  98. 3 1
      HintCO/src-gen/ua/ansymo/hintco/CandidateScenario.java
  99. 29 0
      HintCO/src-gen/ua/ansymo/hintco/CosimUnitInstance.java
  100. 0 0
      HintCO/src-gen/ua/ansymo/hintco/HintcoFactory.java

+ 8 - 0
HintCO.edit/.classpath

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/HintCO"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 28 - 0
HintCO.edit/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>HintCO.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>

+ 19 - 0
HintCO.edit/META-INF/MANIFEST.MF

@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: HintCO.edit;singleton:=true
+Automatic-Module-Name: HintCO.edit
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: HintCO.edit.jar
+Bundle-Activator: ua.ansymo.hintco.provider.CandidatesEditPlugin$Implementation$Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: ua.ansymo.hintco.provider
+Require-Bundle: org.eclipse.core.runtime;resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ ua.ansymo.HintCO;bundle-version="0.0.1"
+Import-Package: org.osgi.framework
+Bundle-ActivationPolicy: lazy

+ 10 - 0
HintCO.edit/build.properties

@@ -0,0 +1,10 @@
+#
+
+bin.includes = HintCO.edit.jar,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = HintCO.edit.jar
+source.HintCO.edit.jar = src/
+output.HintCO.edit.jar = bin/

BIN
HintCO.edit/icons/full/ctool16/CreateCandidateScenario_cosimunits_CosimUnitInstance.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCandidates_candidates_CandidateScenario.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCandidates_csuDeclarations_CosimUnitDeclaration.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCandidates_csuDeclarations_HierarchicalCosimUnitDeclaration.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCandidates_nodes_VariantDiagram.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitDeclaration_ports_InputPortDeclaration.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitDeclaration_ports_OutputPortDeclaration.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_CombineAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_MultiRateAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_PowerBondAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_adaptation_XorUnitAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_ports_InputPortInstance.gif


BIN
HintCO.edit/icons/full/ctool16/CreateCosimUnitInstance_ports_OutputPortInstance.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_ExtrapolationAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_InterpolationAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionPortAdaptation_children_XorPortAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_CombineAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_MultiRateAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_PowerBondAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateDecompositionUnitAdaptation_children_XorUnitAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreateHierarchicalCosimUnitDeclaration_children_CosimUnitInstance.gif


BIN
HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_ExtrapolationAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_InterpolationAdaptation.gif


BIN
HintCO.edit/icons/full/ctool16/CreatePortInstance_adaptation_XorPortAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/CandidateScenario.gif


BIN
HintCO.edit/icons/full/obj16/Candidates.gif


BIN
HintCO.edit/icons/full/obj16/CombineAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/CosimUnitDeclaration.gif


BIN
HintCO.edit/icons/full/obj16/CosimUnitInstance.gif


BIN
HintCO.edit/icons/full/obj16/ExtrapolationAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/HierarchicalCosimUnitDeclaration.gif


BIN
HintCO.edit/icons/full/obj16/InputPortDeclaration.gif


BIN
HintCO.edit/icons/full/obj16/InputPortInstance.gif


BIN
HintCO.edit/icons/full/obj16/InterpolationAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/MultiRateAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/OutputPortDeclaration.gif


BIN
HintCO.edit/icons/full/obj16/OutputPortInstance.gif


BIN
HintCO.edit/icons/full/obj16/PowerBondAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/VariantDiagram.gif


BIN
HintCO.edit/icons/full/obj16/XorPortAdaptation.gif


BIN
HintCO.edit/icons/full/obj16/XorUnitAdaptation.gif


+ 98 - 0
HintCO.edit/plugin.properties

@@ -0,0 +1,98 @@
+#
+
+pluginName = HintCO Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_IDed_type = IDed
+_UI_Candidates_type = Candidates
+_UI_VariantDiagram_type = Variant Diagram
+_UI_PrecendenceNode_type = Precendence Node
+_UI_CandidateScenario_type = Candidate Scenario
+_UI_CosimUnitDeclaration_type = Cosim Unit Declaration
+_UI_HierarchicalCosimUnitDeclaration_type = Hierarchical Cosim Unit Declaration
+_UI_CosimUnitInstance_type = Cosim Unit Instance
+_UI_PortDeclaration_type = Port Declaration
+_UI_InputPortDeclaration_type = Input Port Declaration
+_UI_OutputPortDeclaration_type = Output Port Declaration
+_UI_PortInstance_type = Port Instance
+_UI_InputPortInstance_type = Input Port Instance
+_UI_OutputPortInstance_type = Output Port Instance
+_UI_Alternative_type = Alternative
+_UI_Adaptation_type = Adaptation
+_UI_PortAdaptation_type = Port Adaptation
+_UI_DecompositionPortAdaptation_type = Decomposition Port Adaptation
+_UI_UnitAdaptation_type = Unit Adaptation
+_UI_DecompositionUnitAdaptation_type = Decomposition Unit Adaptation
+_UI_XorUnitAdaptation_type = Xor Unit Adaptation
+_UI_XorPortAdaptation_type = Xor Port Adaptation
+_UI_CombineAdaptation_type = Combine Adaptation
+_UI_ApproximationAdaptation_type = Approximation Adaptation
+_UI_MultiRateAdaptation_type = Multi Rate Adaptation
+_UI_ExtrapolationAdaptation_type = Extrapolation Adaptation
+_UI_InterpolationAdaptation_type = Interpolation Adaptation
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_IDed_identifier_feature = Identifier
+_UI_Candidates_candidates_feature = Candidates
+_UI_Candidates_csuDeclarations_feature = Csu Declarations
+_UI_Candidates_root_feature = Root
+_UI_Candidates_nodes_feature = Nodes
+_UI_VariantDiagram_children_feature = Children
+_UI_VariantDiagram_alternative_feature = Alternative
+_UI_VariantDiagram_name_feature = Name
+_UI_PrecendenceNode_precedes_feature = Precedes
+_UI_PrecendenceNode_succeeds_feature = Succeeds
+_UI_PrecendenceNode_before_feature = Before
+_UI_PrecendenceNode_after_feature = After
+_UI_CandidateScenario_cosimunits_feature = Cosimunits
+_UI_CandidateScenario_name_feature = Name
+_UI_CandidateScenario_stopTime_feature = Stop Time
+_UI_CandidateScenario_stepSize_feature = Step Size
+_UI_CandidateScenario_outputStepSize_feature = Output Step Size
+_UI_CosimUnitDeclaration_ports_feature = Ports
+_UI_CosimUnitDeclaration_path_feature = Path
+_UI_CosimUnitDeclaration_guid_feature = Guid
+_UI_HierarchicalCosimUnitDeclaration_children_feature = Children
+_UI_CosimUnitInstance_adaptation_feature = Adaptation
+_UI_CosimUnitInstance_declaration_feature = Declaration
+_UI_CosimUnitInstance_ports_feature = Ports
+_UI_PortInstance_unit_feature = Unit
+_UI_PortInstance_adaptation_feature = Adaptation
+_UI_InputPortInstance_declaration_feature = Declaration
+_UI_InputPortInstance_valueFrom_feature = Value From
+_UI_OutputPortInstance_valueTo_feature = Value To
+_UI_OutputPortInstance_declaration_feature = Declaration
+_UI_Alternative_weight_feature = Weight
+_UI_Alternative_selected_feature = Selected
+_UI_Alternative_implies_feature = Implies
+_UI_PortAdaptation_port_feature = Port
+_UI_PortAdaptation_parent_feature = Parent
+_UI_DecompositionPortAdaptation_children_feature = Children
+_UI_DecompositionPortAdaptation_name_feature = Name
+_UI_UnitAdaptation_unit_feature = Unit
+_UI_UnitAdaptation_parent_feature = Parent
+_UI_DecompositionUnitAdaptation_children_feature = Children
+_UI_DecompositionUnitAdaptation_name_feature = Name
+_UI_ApproximationAdaptation_order_feature = Order
+_UI_MultiRateAdaptation_rate_feature = Rate
+_UI_MultiRateAdaptation_name_feature = Name
+_UI_ExtrapolationAdaptation_name_feature = Name
+_UI_InterpolationAdaptation_name_feature = Name
+_UI_Unknown_feature = Unspecified
+
+_UI_PowerBondAdaptation_type = Power Bond Adaptation
+_UI_CosimUnitInstance_scenario_feature = Scenario
+_UI_PowerBondAdaptation_effort_feature = Effort
+_UI_PowerBondAdaptation_flow_feature = Flow
+_UI_PowerBondAdaptation_name_feature = Name

+ 22 - 0
HintCO.edit/plugin.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated Candidates -->
+      <factory
+            uri="ua.ansymo.hintco"
+            class="ua.ansymo.hintco.provider.HintcoItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>

+ 86 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/AdaptationItemProvider.java

@@ -0,0 +1,86 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.Adaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.Adaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationItemProvider extends AlternativeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Adaptation adaptation = (Adaptation)object;
+		return getString("_UI_Adaptation_type") + " " + adaptation.getWeight();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 192 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/AlternativeItemProvider.java

@@ -0,0 +1,192 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.Alternative;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.Alternative} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AlternativeItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AlternativeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addWeightPropertyDescriptor(object);
+			addSelectedPropertyDescriptor(object);
+			addImpliesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Weight feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_weight_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_weight_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__WEIGHT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_selected_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_selected_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__SELECTED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Implies feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImpliesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_implies_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_implies_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__IMPLIES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Alternative alternative = (Alternative)object;
+		return getString("_UI_Alternative_type") + " " + alternative.getWeight();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Alternative.class)) {
+			case HintcoPackage.ALTERNATIVE__WEIGHT:
+			case HintcoPackage.ALTERNATIVE__SELECTED:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CandidatesEditPlugin.INSTANCE;
+	}
+
+}

+ 119 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/ApproximationAdaptationItemProvider.java

@@ -0,0 +1,119 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.ApproximationAdaptation;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.ApproximationAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApproximationAdaptationItemProvider extends PortAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApproximationAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOrderPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Order feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOrderPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ApproximationAdaptation_order_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ApproximationAdaptation_order_feature", "_UI_ApproximationAdaptation_type"),
+				 HintcoPackage.Literals.APPROXIMATION_ADAPTATION__ORDER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ApproximationAdaptation approximationAdaptation = (ApproximationAdaptation)object;
+		return getString("_UI_ApproximationAdaptation_type") + " " + approximationAdaptation.getWeight();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ApproximationAdaptation.class)) {
+			case HintcoPackage.APPROXIMATION_ADAPTATION__ORDER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 316 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CandidateScenarioItemProvider.java

@@ -0,0 +1,316 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.CandidateScenario;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.CandidateScenario} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CandidateScenarioItemProvider extends IDedItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CandidateScenarioItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addWeightPropertyDescriptor(object);
+			addSelectedPropertyDescriptor(object);
+			addImpliesPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addStopTimePropertyDescriptor(object);
+			addStepSizePropertyDescriptor(object);
+			addOutputStepSizePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Weight feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_weight_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_weight_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__WEIGHT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Selected feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSelectedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_selected_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_selected_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__SELECTED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Implies feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImpliesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Alternative_implies_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Alternative_implies_feature", "_UI_Alternative_type"),
+				 HintcoPackage.Literals.ALTERNATIVE__IMPLIES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CandidateScenario_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CandidateScenario_name_feature", "_UI_CandidateScenario_type"),
+				 HintcoPackage.Literals.CANDIDATE_SCENARIO__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Stop Time feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStopTimePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CandidateScenario_stopTime_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CandidateScenario_stopTime_feature", "_UI_CandidateScenario_type"),
+				 HintcoPackage.Literals.CANDIDATE_SCENARIO__STOP_TIME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Step Size feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStepSizePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CandidateScenario_stepSize_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CandidateScenario_stepSize_feature", "_UI_CandidateScenario_type"),
+				 HintcoPackage.Literals.CANDIDATE_SCENARIO__STEP_SIZE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Output Step Size feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOutputStepSizePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CandidateScenario_outputStepSize_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CandidateScenario_outputStepSize_feature", "_UI_CandidateScenario_type"),
+				 HintcoPackage.Literals.CANDIDATE_SCENARIO__OUTPUT_STEP_SIZE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.CANDIDATE_SCENARIO__COSIMUNITS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CandidateScenario.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CandidateScenario"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CandidateScenario)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CandidateScenario_type") :
+			getString("_UI_CandidateScenario_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CandidateScenario.class)) {
+			case HintcoPackage.CANDIDATE_SCENARIO__WEIGHT:
+			case HintcoPackage.CANDIDATE_SCENARIO__SELECTED:
+			case HintcoPackage.CANDIDATE_SCENARIO__NAME:
+			case HintcoPackage.CANDIDATE_SCENARIO__STOP_TIME:
+			case HintcoPackage.CANDIDATE_SCENARIO__STEP_SIZE:
+			case HintcoPackage.CANDIDATE_SCENARIO__OUTPUT_STEP_SIZE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case HintcoPackage.CANDIDATE_SCENARIO__COSIMUNITS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.CANDIDATE_SCENARIO__COSIMUNITS,
+				 HintcoFactory.eINSTANCE.createCosimUnitInstance()));
+	}
+
+}

+ 107 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CandidatesEditPlugin.java

@@ -0,0 +1,107 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+import org.osgi.framework.BundleActivator;
+
+/**
+ * This is the central singleton for the Candidates edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class CandidatesEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final CandidatesEditPlugin INSTANCE = new CandidatesEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CandidatesEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     EcoreEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	
+		/**
+		 * The actual implementation of the purely OSGi-compatible <b>Bundle Activator</b>.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final class Activator extends EMFPlugin.OSGiDelegatingBundleActivator {
+			@Override
+			protected BundleActivator createBundle() {
+				return new Implementation();
+			}
+		}
+	}
+
+}

+ 211 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CandidatesItemProvider.java

@@ -0,0 +1,211 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.Candidates;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.Candidates} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CandidatesItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CandidatesItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRootPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Root feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRootPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Candidates_root_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Candidates_root_feature", "_UI_Candidates_type"),
+				 HintcoPackage.Literals.CANDIDATES__ROOT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.CANDIDATES__CANDIDATES);
+			childrenFeatures.add(HintcoPackage.Literals.CANDIDATES__CSU_DECLARATIONS);
+			childrenFeatures.add(HintcoPackage.Literals.CANDIDATES__NODES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Candidates.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Candidates"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Candidates_type");
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Candidates.class)) {
+			case HintcoPackage.CANDIDATES__CANDIDATES:
+			case HintcoPackage.CANDIDATES__CSU_DECLARATIONS:
+			case HintcoPackage.CANDIDATES__NODES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.CANDIDATES__CANDIDATES,
+				 HintcoFactory.eINSTANCE.createCandidateScenario()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.CANDIDATES__CSU_DECLARATIONS,
+				 HintcoFactory.eINSTANCE.createCosimUnitDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.CANDIDATES__CSU_DECLARATIONS,
+				 HintcoFactory.eINSTANCE.createHierarchicalCosimUnitDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.CANDIDATES__NODES,
+				 HintcoFactory.eINSTANCE.createVariantDiagram()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CandidatesEditPlugin.INSTANCE;
+	}
+
+}

+ 99 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CombineAdaptationItemProvider.java

@@ -0,0 +1,99 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.CombineAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.CombineAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CombineAdaptationItemProvider extends DecompositionUnitAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CombineAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns CombineAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CombineAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CombineAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CombineAdaptation_type") :
+			getString("_UI_CombineAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 202 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CosimUnitDeclarationItemProvider.java

@@ -0,0 +1,202 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.CosimUnitDeclaration;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.CosimUnitDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CosimUnitDeclarationItemProvider extends IDedItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CosimUnitDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPathPropertyDescriptor(object);
+			addGuidPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Path feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CosimUnitDeclaration_path_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CosimUnitDeclaration_path_feature", "_UI_CosimUnitDeclaration_type"),
+				 HintcoPackage.Literals.COSIM_UNIT_DECLARATION__PATH,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Guid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGuidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CosimUnitDeclaration_guid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CosimUnitDeclaration_guid_feature", "_UI_CosimUnitDeclaration_type"),
+				 HintcoPackage.Literals.COSIM_UNIT_DECLARATION__GUID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.COSIM_UNIT_DECLARATION__PORTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CosimUnitDeclaration.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CosimUnitDeclaration"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CosimUnitDeclaration)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CosimUnitDeclaration_type") :
+			getString("_UI_CosimUnitDeclaration_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CosimUnitDeclaration.class)) {
+			case HintcoPackage.COSIM_UNIT_DECLARATION__PATH:
+			case HintcoPackage.COSIM_UNIT_DECLARATION__GUID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case HintcoPackage.COSIM_UNIT_DECLARATION__PORTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_DECLARATION__PORTS,
+				 HintcoFactory.eINSTANCE.createInputPortDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_DECLARATION__PORTS,
+				 HintcoFactory.eINSTANCE.createOutputPortDeclaration()));
+	}
+
+}

+ 288 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/CosimUnitInstanceItemProvider.java

@@ -0,0 +1,288 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.CosimUnitInstance;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.CosimUnitInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CosimUnitInstanceItemProvider extends IDedItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CosimUnitInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPrecedesPropertyDescriptor(object);
+			addSucceedsPropertyDescriptor(object);
+			addBeforePropertyDescriptor(object);
+			addAfterPropertyDescriptor(object);
+			addDeclarationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Precedes feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPrecedesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_precedes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_precedes_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__PRECEDES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Succeeds feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSucceedsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_succeeds_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_succeeds_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__SUCCEEDS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Before feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBeforePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_before_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_before_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__BEFORE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the After feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAfterPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_after_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_after_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__AFTER,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Declaration feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeclarationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CosimUnitInstance_declaration_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CosimUnitInstance_declaration_feature", "_UI_CosimUnitInstance_type"),
+				 HintcoPackage.Literals.COSIM_UNIT_INSTANCE__DECLARATION,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__ADAPTATION);
+			childrenFeatures.add(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__PORTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CosimUnitInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CosimUnitInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CosimUnitInstance)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CosimUnitInstance_type") :
+			getString("_UI_CosimUnitInstance_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CosimUnitInstance.class)) {
+			case HintcoPackage.COSIM_UNIT_INSTANCE__ADAPTATION:
+			case HintcoPackage.COSIM_UNIT_INSTANCE__PORTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createXorUnitAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createCombineAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createMultiRateAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createPowerBondAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__PORTS,
+				 HintcoFactory.eINSTANCE.createInputPortInstance()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.COSIM_UNIT_INSTANCE__PORTS,
+				 HintcoFactory.eINSTANCE.createOutputPortInstance()));
+	}
+
+}

+ 172 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/DecompositionPortAdaptationItemProvider.java

@@ -0,0 +1,172 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.DecompositionPortAdaptation;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.DecompositionPortAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DecompositionPortAdaptationItemProvider extends PortAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DecompositionPortAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DecompositionPortAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DecompositionPortAdaptation_name_feature", "_UI_DecompositionPortAdaptation_type"),
+				 HintcoPackage.Literals.DECOMPOSITION_PORT_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.DECOMPOSITION_PORT_ADAPTATION__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((DecompositionPortAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DecompositionPortAdaptation_type") :
+			getString("_UI_DecompositionPortAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DecompositionPortAdaptation.class)) {
+			case HintcoPackage.DECOMPOSITION_PORT_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case HintcoPackage.DECOMPOSITION_PORT_ADAPTATION__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_PORT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createXorPortAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_PORT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createExtrapolationAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_PORT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createInterpolationAdaptation()));
+	}
+
+}

+ 177 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/DecompositionUnitAdaptationItemProvider.java

@@ -0,0 +1,177 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.DecompositionUnitAdaptation;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.DecompositionUnitAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DecompositionUnitAdaptationItemProvider extends UnitAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DecompositionUnitAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DecompositionUnitAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DecompositionUnitAdaptation_name_feature", "_UI_DecompositionUnitAdaptation_type"),
+				 HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((DecompositionUnitAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DecompositionUnitAdaptation_type") :
+			getString("_UI_DecompositionUnitAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DecompositionUnitAdaptation.class)) {
+			case HintcoPackage.DECOMPOSITION_UNIT_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case HintcoPackage.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createXorUnitAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createCombineAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createMultiRateAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.DECOMPOSITION_UNIT_ADAPTATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createPowerBondAdaptation()));
+	}
+
+}

+ 132 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/ExtrapolationAdaptationItemProvider.java

@@ -0,0 +1,132 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.ExtrapolationAdaptation;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.ExtrapolationAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExtrapolationAdaptationItemProvider extends ApproximationAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExtrapolationAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExtrapolationAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExtrapolationAdaptation_name_feature", "_UI_ExtrapolationAdaptation_type"),
+				 HintcoPackage.Literals.EXTRAPOLATION_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ExtrapolationAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExtrapolationAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ExtrapolationAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ExtrapolationAdaptation_type") :
+			getString("_UI_ExtrapolationAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExtrapolationAdaptation.class)) {
+			case HintcoPackage.EXTRAPOLATION_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 145 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/HierarchicalCosimUnitDeclarationItemProvider.java

@@ -0,0 +1,145 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HierarchicalCosimUnitDeclaration;
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.HierarchicalCosimUnitDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HierarchicalCosimUnitDeclarationItemProvider extends CosimUnitDeclarationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HierarchicalCosimUnitDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.HIERARCHICAL_COSIM_UNIT_DECLARATION__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns HierarchicalCosimUnitDeclaration.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HierarchicalCosimUnitDeclaration"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((HierarchicalCosimUnitDeclaration)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_HierarchicalCosimUnitDeclaration_type") :
+			getString("_UI_HierarchicalCosimUnitDeclaration_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(HierarchicalCosimUnitDeclaration.class)) {
+			case HintcoPackage.HIERARCHICAL_COSIM_UNIT_DECLARATION__CHILDREN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.HIERARCHICAL_COSIM_UNIT_DECLARATION__CHILDREN,
+				 HintcoFactory.eINSTANCE.createCosimUnitInstance()));
+	}
+
+}

+ 583 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/HintcoItemProviderAdapterFactory.java

@@ -0,0 +1,583 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import ua.ansymo.hintco.util.HintcoAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HintcoItemProviderAdapterFactory extends HintcoAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HintcoItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.Candidates} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CandidatesItemProvider candidatesItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.Candidates}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCandidatesAdapter() {
+		if (candidatesItemProvider == null) {
+			candidatesItemProvider = new CandidatesItemProvider(this);
+		}
+
+		return candidatesItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.VariantDiagram} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected VariantDiagramItemProvider variantDiagramItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.VariantDiagram}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createVariantDiagramAdapter() {
+		if (variantDiagramItemProvider == null) {
+			variantDiagramItemProvider = new VariantDiagramItemProvider(this);
+		}
+
+		return variantDiagramItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.CandidateScenario} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CandidateScenarioItemProvider candidateScenarioItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.CandidateScenario}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCandidateScenarioAdapter() {
+		if (candidateScenarioItemProvider == null) {
+			candidateScenarioItemProvider = new CandidateScenarioItemProvider(this);
+		}
+
+		return candidateScenarioItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.CosimUnitDeclaration} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CosimUnitDeclarationItemProvider cosimUnitDeclarationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.CosimUnitDeclaration}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCosimUnitDeclarationAdapter() {
+		if (cosimUnitDeclarationItemProvider == null) {
+			cosimUnitDeclarationItemProvider = new CosimUnitDeclarationItemProvider(this);
+		}
+
+		return cosimUnitDeclarationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.HierarchicalCosimUnitDeclaration} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HierarchicalCosimUnitDeclarationItemProvider hierarchicalCosimUnitDeclarationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.HierarchicalCosimUnitDeclaration}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createHierarchicalCosimUnitDeclarationAdapter() {
+		if (hierarchicalCosimUnitDeclarationItemProvider == null) {
+			hierarchicalCosimUnitDeclarationItemProvider = new HierarchicalCosimUnitDeclarationItemProvider(this);
+		}
+
+		return hierarchicalCosimUnitDeclarationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.CosimUnitInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CosimUnitInstanceItemProvider cosimUnitInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.CosimUnitInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCosimUnitInstanceAdapter() {
+		if (cosimUnitInstanceItemProvider == null) {
+			cosimUnitInstanceItemProvider = new CosimUnitInstanceItemProvider(this);
+		}
+
+		return cosimUnitInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.InputPortDeclaration} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InputPortDeclarationItemProvider inputPortDeclarationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.InputPortDeclaration}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInputPortDeclarationAdapter() {
+		if (inputPortDeclarationItemProvider == null) {
+			inputPortDeclarationItemProvider = new InputPortDeclarationItemProvider(this);
+		}
+
+		return inputPortDeclarationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.OutputPortDeclaration} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OutputPortDeclarationItemProvider outputPortDeclarationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.OutputPortDeclaration}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createOutputPortDeclarationAdapter() {
+		if (outputPortDeclarationItemProvider == null) {
+			outputPortDeclarationItemProvider = new OutputPortDeclarationItemProvider(this);
+		}
+
+		return outputPortDeclarationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.InputPortInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InputPortInstanceItemProvider inputPortInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.InputPortInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInputPortInstanceAdapter() {
+		if (inputPortInstanceItemProvider == null) {
+			inputPortInstanceItemProvider = new InputPortInstanceItemProvider(this);
+		}
+
+		return inputPortInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.OutputPortInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OutputPortInstanceItemProvider outputPortInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.OutputPortInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createOutputPortInstanceAdapter() {
+		if (outputPortInstanceItemProvider == null) {
+			outputPortInstanceItemProvider = new OutputPortInstanceItemProvider(this);
+		}
+
+		return outputPortInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.XorUnitAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected XorUnitAdaptationItemProvider xorUnitAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.XorUnitAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createXorUnitAdaptationAdapter() {
+		if (xorUnitAdaptationItemProvider == null) {
+			xorUnitAdaptationItemProvider = new XorUnitAdaptationItemProvider(this);
+		}
+
+		return xorUnitAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.XorPortAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected XorPortAdaptationItemProvider xorPortAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.XorPortAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createXorPortAdaptationAdapter() {
+		if (xorPortAdaptationItemProvider == null) {
+			xorPortAdaptationItemProvider = new XorPortAdaptationItemProvider(this);
+		}
+
+		return xorPortAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.CombineAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CombineAdaptationItemProvider combineAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.CombineAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCombineAdaptationAdapter() {
+		if (combineAdaptationItemProvider == null) {
+			combineAdaptationItemProvider = new CombineAdaptationItemProvider(this);
+		}
+
+		return combineAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.MultiRateAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiRateAdaptationItemProvider multiRateAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.MultiRateAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createMultiRateAdaptationAdapter() {
+		if (multiRateAdaptationItemProvider == null) {
+			multiRateAdaptationItemProvider = new MultiRateAdaptationItemProvider(this);
+		}
+
+		return multiRateAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.PowerBondAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerBondAdaptationItemProvider powerBondAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.PowerBondAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPowerBondAdaptationAdapter() {
+		if (powerBondAdaptationItemProvider == null) {
+			powerBondAdaptationItemProvider = new PowerBondAdaptationItemProvider(this);
+		}
+
+		return powerBondAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.ExtrapolationAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExtrapolationAdaptationItemProvider extrapolationAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.ExtrapolationAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExtrapolationAdaptationAdapter() {
+		if (extrapolationAdaptationItemProvider == null) {
+			extrapolationAdaptationItemProvider = new ExtrapolationAdaptationItemProvider(this);
+		}
+
+		return extrapolationAdaptationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link ua.ansymo.hintco.InterpolationAdaptation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InterpolationAdaptationItemProvider interpolationAdaptationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link ua.ansymo.hintco.InterpolationAdaptation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInterpolationAdaptationAdapter() {
+		if (interpolationAdaptationItemProvider == null) {
+			interpolationAdaptationItemProvider = new InterpolationAdaptationItemProvider(this);
+		}
+
+		return interpolationAdaptationItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (candidatesItemProvider != null) candidatesItemProvider.dispose();
+		if (variantDiagramItemProvider != null) variantDiagramItemProvider.dispose();
+		if (candidateScenarioItemProvider != null) candidateScenarioItemProvider.dispose();
+		if (cosimUnitDeclarationItemProvider != null) cosimUnitDeclarationItemProvider.dispose();
+		if (hierarchicalCosimUnitDeclarationItemProvider != null) hierarchicalCosimUnitDeclarationItemProvider.dispose();
+		if (cosimUnitInstanceItemProvider != null) cosimUnitInstanceItemProvider.dispose();
+		if (inputPortDeclarationItemProvider != null) inputPortDeclarationItemProvider.dispose();
+		if (outputPortDeclarationItemProvider != null) outputPortDeclarationItemProvider.dispose();
+		if (inputPortInstanceItemProvider != null) inputPortInstanceItemProvider.dispose();
+		if (outputPortInstanceItemProvider != null) outputPortInstanceItemProvider.dispose();
+		if (xorUnitAdaptationItemProvider != null) xorUnitAdaptationItemProvider.dispose();
+		if (xorPortAdaptationItemProvider != null) xorPortAdaptationItemProvider.dispose();
+		if (combineAdaptationItemProvider != null) combineAdaptationItemProvider.dispose();
+		if (multiRateAdaptationItemProvider != null) multiRateAdaptationItemProvider.dispose();
+		if (powerBondAdaptationItemProvider != null) powerBondAdaptationItemProvider.dispose();
+		if (extrapolationAdaptationItemProvider != null) extrapolationAdaptationItemProvider.dispose();
+		if (interpolationAdaptationItemProvider != null) interpolationAdaptationItemProvider.dispose();
+	}
+
+}

+ 147 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/IDedItemProvider.java

@@ -0,0 +1,147 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.IDed;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.IDed} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IDedItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IDedItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdentifierPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Identifier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdentifierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IDed_identifier_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IDed_identifier_feature", "_UI_IDed_type"),
+				 HintcoPackage.Literals.IDED__IDENTIFIER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((IDed)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IDed_type") :
+			getString("_UI_IDed_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IDed.class)) {
+			case HintcoPackage.IDED__IDENTIFIER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CandidatesEditPlugin.INSTANCE;
+	}
+
+}

+ 99 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/InputPortDeclarationItemProvider.java

@@ -0,0 +1,99 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.InputPortDeclaration;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.InputPortDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InputPortDeclarationItemProvider extends PortDeclarationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPortDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns InputPortDeclaration.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InputPortDeclaration"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InputPortDeclaration)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InputPortDeclaration_type") :
+			getString("_UI_InputPortDeclaration_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 147 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/InputPortInstanceItemProvider.java

@@ -0,0 +1,147 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.InputPortInstance;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.InputPortInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InputPortInstanceItemProvider extends PortInstanceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPortInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDeclarationPropertyDescriptor(object);
+			addValueFromPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Declaration feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeclarationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InputPortInstance_declaration_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InputPortInstance_declaration_feature", "_UI_InputPortInstance_type"),
+				 HintcoPackage.Literals.INPUT_PORT_INSTANCE__DECLARATION,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value From feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValueFromPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InputPortInstance_valueFrom_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InputPortInstance_valueFrom_feature", "_UI_InputPortInstance_type"),
+				 HintcoPackage.Literals.INPUT_PORT_INSTANCE__VALUE_FROM,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InputPortInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InputPortInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InputPortInstance)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InputPortInstance_type") :
+			getString("_UI_InputPortInstance_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 132 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/InterpolationAdaptationItemProvider.java

@@ -0,0 +1,132 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.InterpolationAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.InterpolationAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterpolationAdaptationItemProvider extends ApproximationAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterpolationAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InterpolationAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InterpolationAdaptation_name_feature", "_UI_InterpolationAdaptation_type"),
+				 HintcoPackage.Literals.INTERPOLATION_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InterpolationAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InterpolationAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterpolationAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterpolationAdaptation_type") :
+			getString("_UI_InterpolationAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InterpolationAdaptation.class)) {
+			case HintcoPackage.INTERPOLATION_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 156 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/MultiRateAdaptationItemProvider.java

@@ -0,0 +1,156 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.MultiRateAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.MultiRateAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MultiRateAdaptationItemProvider extends UnitAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MultiRateAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRatePropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MultiRateAdaptation_rate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiRateAdaptation_rate_feature", "_UI_MultiRateAdaptation_type"),
+				 HintcoPackage.Literals.MULTI_RATE_ADAPTATION__RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_MultiRateAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiRateAdaptation_name_feature", "_UI_MultiRateAdaptation_type"),
+				 HintcoPackage.Literals.MULTI_RATE_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns MultiRateAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiRateAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((MultiRateAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_MultiRateAdaptation_type") :
+			getString("_UI_MultiRateAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(MultiRateAdaptation.class)) {
+			case HintcoPackage.MULTI_RATE_ADAPTATION__RATE:
+			case HintcoPackage.MULTI_RATE_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 99 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/OutputPortDeclarationItemProvider.java

@@ -0,0 +1,99 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.OutputPortDeclaration;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.OutputPortDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OutputPortDeclarationItemProvider extends PortDeclarationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OutputPortDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns OutputPortDeclaration.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OutputPortDeclaration"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((OutputPortDeclaration)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_OutputPortDeclaration_type") :
+			getString("_UI_OutputPortDeclaration_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 147 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/OutputPortInstanceItemProvider.java

@@ -0,0 +1,147 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.OutputPortInstance;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.OutputPortInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OutputPortInstanceItemProvider extends PortInstanceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OutputPortInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValueToPropertyDescriptor(object);
+			addDeclarationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value To feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValueToPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_OutputPortInstance_valueTo_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_OutputPortInstance_valueTo_feature", "_UI_OutputPortInstance_type"),
+				 HintcoPackage.Literals.OUTPUT_PORT_INSTANCE__VALUE_TO,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Declaration feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeclarationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_OutputPortInstance_declaration_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_OutputPortInstance_declaration_feature", "_UI_OutputPortInstance_type"),
+				 HintcoPackage.Literals.OUTPUT_PORT_INSTANCE__DECLARATION,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns OutputPortInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OutputPortInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((OutputPortInstance)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_OutputPortInstance_type") :
+			getString("_UI_OutputPortInstance_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 134 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/PortAdaptationItemProvider.java

@@ -0,0 +1,134 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.PortAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.PortAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PortAdaptationItemProvider extends AdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PortAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPortPropertyDescriptor(object);
+			addParentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Port feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPortPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PortAdaptation_port_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PortAdaptation_port_feature", "_UI_PortAdaptation_type"),
+				 HintcoPackage.Literals.PORT_ADAPTATION__PORT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PortAdaptation_parent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PortAdaptation_parent_feature", "_UI_PortAdaptation_type"),
+				 HintcoPackage.Literals.PORT_ADAPTATION__PARENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		PortAdaptation portAdaptation = (PortAdaptation)object;
+		return getString("_UI_PortAdaptation_type") + " " + portAdaptation.getWeight();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 88 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/PortDeclarationItemProvider.java

@@ -0,0 +1,88 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.PortDeclaration;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.PortDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PortDeclarationItemProvider extends IDedItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PortDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PortDeclaration)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PortDeclaration_type") :
+			getString("_UI_PortDeclaration_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 195 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/PortInstanceItemProvider.java

@@ -0,0 +1,195 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.PortInstance;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.PortInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PortInstanceItemProvider extends PrecendenceNodeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PortInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdentifierPropertyDescriptor(object);
+			addUnitPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Identifier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdentifierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IDed_identifier_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IDed_identifier_feature", "_UI_IDed_type"),
+				 HintcoPackage.Literals.IDED__IDENTIFIER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Unit feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUnitPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PortInstance_unit_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PortInstance_unit_feature", "_UI_PortInstance_type"),
+				 HintcoPackage.Literals.PORT_INSTANCE__UNIT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(HintcoPackage.Literals.PORT_INSTANCE__ADAPTATION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PortInstance)object).getIdentifier();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PortInstance_type") :
+			getString("_UI_PortInstance_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PortInstance.class)) {
+			case HintcoPackage.PORT_INSTANCE__IDENTIFIER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case HintcoPackage.PORT_INSTANCE__ADAPTATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.PORT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createXorPortAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.PORT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createExtrapolationAdaptation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HintcoPackage.Literals.PORT_INSTANCE__ADAPTATION,
+				 HintcoFactory.eINSTANCE.createInterpolationAdaptation()));
+	}
+
+}

+ 178 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/PowerBondAdaptationItemProvider.java

@@ -0,0 +1,178 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.PowerBondAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.PowerBondAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PowerBondAdaptationItemProvider extends UnitAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PowerBondAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addEffortPropertyDescriptor(object);
+			addFlowPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Effort feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEffortPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PowerBondAdaptation_effort_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PowerBondAdaptation_effort_feature", "_UI_PowerBondAdaptation_type"),
+				 HintcoPackage.Literals.POWER_BOND_ADAPTATION__EFFORT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Flow feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFlowPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PowerBondAdaptation_flow_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PowerBondAdaptation_flow_feature", "_UI_PowerBondAdaptation_type"),
+				 HintcoPackage.Literals.POWER_BOND_ADAPTATION__FLOW,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PowerBondAdaptation_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PowerBondAdaptation_name_feature", "_UI_PowerBondAdaptation_type"),
+				 HintcoPackage.Literals.POWER_BOND_ADAPTATION__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns PowerBondAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PowerBondAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PowerBondAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PowerBondAdaptation_type") :
+			getString("_UI_PowerBondAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PowerBondAdaptation.class)) {
+			case HintcoPackage.POWER_BOND_ADAPTATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 204 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/PrecendenceNodeItemProvider.java

@@ -0,0 +1,204 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import ua.ansymo.hintco.HintcoPackage;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.PrecendenceNode} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PrecendenceNodeItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PrecendenceNodeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPrecedesPropertyDescriptor(object);
+			addSucceedsPropertyDescriptor(object);
+			addBeforePropertyDescriptor(object);
+			addAfterPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Precedes feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPrecedesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_precedes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_precedes_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__PRECEDES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Succeeds feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSucceedsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_succeeds_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_succeeds_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__SUCCEEDS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Before feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBeforePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_before_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_before_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__BEFORE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the After feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAfterPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrecendenceNode_after_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrecendenceNode_after_feature", "_UI_PrecendenceNode_type"),
+				 HintcoPackage.Literals.PRECENDENCE_NODE__AFTER,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_PrecendenceNode_type");
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CandidatesEditPlugin.INSTANCE;
+	}
+
+}

+ 134 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/UnitAdaptationItemProvider.java

@@ -0,0 +1,134 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.UnitAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.UnitAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnitAdaptationItemProvider extends AdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnitAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addUnitPropertyDescriptor(object);
+			addParentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Unit feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUnitPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UnitAdaptation_unit_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_UnitAdaptation_unit_feature", "_UI_UnitAdaptation_type"),
+				 HintcoPackage.Literals.UNIT_ADAPTATION__UNIT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UnitAdaptation_parent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_UnitAdaptation_parent_feature", "_UI_UnitAdaptation_type"),
+				 HintcoPackage.Literals.UNIT_ADAPTATION__PARENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		UnitAdaptation unitAdaptation = (UnitAdaptation)object;
+		return getString("_UI_UnitAdaptation_type") + " " + unitAdaptation.getWeight();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 178 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/VariantDiagramItemProvider.java

@@ -0,0 +1,178 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.VariantDiagram;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.VariantDiagram} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VariantDiagramItemProvider extends IDedItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VariantDiagramItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addChildrenPropertyDescriptor(object);
+			addAlternativePropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Children feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addChildrenPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_VariantDiagram_children_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_VariantDiagram_children_feature", "_UI_VariantDiagram_type"),
+				 HintcoPackage.Literals.VARIANT_DIAGRAM__CHILDREN,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Alternative feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAlternativePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_VariantDiagram_alternative_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_VariantDiagram_alternative_feature", "_UI_VariantDiagram_type"),
+				 HintcoPackage.Literals.VARIANT_DIAGRAM__ALTERNATIVE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_VariantDiagram_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_VariantDiagram_name_feature", "_UI_VariantDiagram_type"),
+				 HintcoPackage.Literals.VARIANT_DIAGRAM__NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns VariantDiagram.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/VariantDiagram"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((VariantDiagram)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_VariantDiagram_type") :
+			getString("_UI_VariantDiagram_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(VariantDiagram.class)) {
+			case HintcoPackage.VARIANT_DIAGRAM__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 99 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/XorPortAdaptationItemProvider.java

@@ -0,0 +1,99 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.XorPortAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.XorPortAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XorPortAdaptationItemProvider extends DecompositionPortAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XorPortAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns XorPortAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/XorPortAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((XorPortAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_XorPortAdaptation_type") :
+			getString("_UI_XorPortAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 99 - 0
HintCO.edit/src/ua/ansymo/hintco/provider/XorUnitAdaptationItemProvider.java

@@ -0,0 +1,99 @@
+/**
+ */
+package ua.ansymo.hintco.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import ua.ansymo.hintco.XorUnitAdaptation;
+
+/**
+ * This is the item provider adapter for a {@link ua.ansymo.hintco.XorUnitAdaptation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XorUnitAdaptationItemProvider extends DecompositionUnitAdaptationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XorUnitAdaptationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns XorUnitAdaptation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/XorUnitAdaptation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((XorUnitAdaptation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_XorUnitAdaptation_type") :
+			getString("_UI_XorUnitAdaptation_type") + " " + label;
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 9 - 0
HintCO.editor/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/HintCO"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/HintCO.edit"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 28 - 0
HintCO.editor/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>HintCO.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>

+ 21 - 0
HintCO.editor/META-INF/MANIFEST.MF

@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: HintCO.editor;singleton:=true
+Automatic-Module-Name: HintCO.editor
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: HintCO.editor.jar
+Bundle-Activator: ua.ansymo.hintco.presentation.CandidatesEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: ua.ansymo.hintco.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ HintCO.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.jface.text,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy

+ 10 - 0
HintCO.editor/build.properties

@@ -0,0 +1,10 @@
+#
+
+bin.includes = HintCO.editor.jar,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = HintCO.editor.jar
+source.HintCO.editor.jar = src/
+output.HintCO.editor.jar = bin

BIN
HintCO.editor/icons/full/obj16/HintcoModelFile.gif


BIN
HintCO.editor/icons/full/wizban/NewHintco.gif


+ 53 - 0
HintCO.editor/plugin.properties

@@ -0,0 +1,53 @@
+#
+
+pluginName = HintCO Editor
+providerName = www.example.org
+
+_UI_HintcoEditor_menu = &Hintco Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = Example EMF Model Creation Wizards
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_HintcoModelWizard_label = Hintco Model
+_UI_HintcoModelWizard_description = Create a new Hintco model
+
+_UI_HintcoEditor_label = Hintco Model Editor
+
+_UI_HintcoEditorFilenameDefaultBase = My
+_UI_HintcoEditorFilenameExtensions = hintco
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+

+ 37 - 0
HintCO.editor/plugin.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated Candidates -->
+      <category
+            id="org.eclipse.emf.ecore.Wizard.category.ID"
+            name="%_UI_Wizard_category"/>
+      <wizard
+            id="ua.ansymo.hintco.presentation.HintcoModelWizardID"
+            name="%_UI_HintcoModelWizard_label"
+            class="ua.ansymo.hintco.presentation.HintcoModelWizard"
+            category="org.eclipse.emf.ecore.Wizard.category.ID"
+            icon="icons/full/obj16/HintcoModelFile.gif">
+         <description>%_UI_HintcoModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated Candidates -->
+      <editor
+            id="ua.ansymo.hintco.presentation.HintcoEditorID"
+            name="%_UI_HintcoEditor_label"
+            icon="icons/full/obj16/HintcoModelFile.gif"
+            extensions="hintco"
+            class="ua.ansymo.hintco.presentation.HintcoEditor"
+            contributorClass="ua.ansymo.hintco.presentation.HintcoActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>

+ 94 - 0
HintCO.editor/src/ua/ansymo/hintco/presentation/CandidatesEditorPlugin.java

@@ -0,0 +1,94 @@
+/**
+ */
+package ua.ansymo.hintco.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+/**
+ * This is the central singleton for the Candidates editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class CandidatesEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final CandidatesEditorPlugin INSTANCE = new CandidatesEditorPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CandidatesEditorPlugin() {
+		super
+			(new ResourceLocator [] {
+				EcoreEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}

+ 435 - 0
HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoActionBarContributor.java

@@ -0,0 +1,435 @@
+/**
+ */
+package ua.ansymo.hintco.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.CollapseAllAction;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.ExpandAllAction;
+import org.eclipse.emf.edit.ui.action.FindAction;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.RevertAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Hintco model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HintcoActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(CandidatesEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					CandidatesEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(CandidatesEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HintcoActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		liveValidationAction = new DiagnosticDecorator.LiveValidator.LiveValidationAction(CandidatesEditorPlugin.getPlugin().getDialogSettings());
+		controlAction = new ControlAction();
+		findAction = FindAction.create();
+		revertAction = new RevertAction();
+		expandAllAction = new ExpandAllAction();
+		collapseAllAction = new CollapseAllAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		super.contributeToToolBar(toolBarManager);
+		toolBarManager.add(new Separator("hintco-settings"));
+		toolBarManager.add(new Separator("hintco-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoEditor_menu"), "ua.ansymo.hintcoMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(CandidatesEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(CandidatesEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(CandidatesEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(CandidatesEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}

File diff suppressed because it is too large
+ 1911 - 0
HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoEditor.java


+ 627 - 0
HintCO.editor/src/ua/ansymo/hintco/presentation/HintcoModelWizard.java

@@ -0,0 +1,627 @@
+/**
+ */
+package ua.ansymo.hintco.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import ua.ansymo.hintco.HintcoFactory;
+import ua.ansymo.hintco.HintcoPackage;
+import ua.ansymo.hintco.provider.CandidatesEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HintcoModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HintcoPackage hintcoPackage = HintcoPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HintcoFactory hintcoFactory = hintcoPackage.getHintcoFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HintcoModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HintcoModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(CandidatesEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(CandidatesEditorPlugin.INSTANCE.getImage("full/wizban/NewHintco")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : hintcoPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)hintcoPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = hintcoFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							CandidatesEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), CandidatesEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			CandidatesEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class HintcoModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public HintcoModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(CandidatesEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class HintcoModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public HintcoModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(CandidatesEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(CandidatesEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return CandidatesEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				CandidatesEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(CandidatesEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new HintcoModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoModelWizard_label"));
+		newFileCreationPage.setDescription(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoModelWizard_description"));
+		newFileCreationPage.setFileName(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new HintcoModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(CandidatesEditorPlugin.INSTANCE.getString("_UI_HintcoModelWizard_label"));
+		initialObjectCreationPage.setDescription(CandidatesEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}

+ 71 - 0
HintCO/instances/case_study_double_loop_pbond.hintco

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
+  <candidates identifier="Original" stopTime="10.0" stepSize="0.001" outputStepSize="0.001">
+    <cosimunits identifier="Scenario" declaration="//@csuDeclarations.0">
+      <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.1" declaration="//@csuDeclarations.0/@ports.0"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2" declaration="//@csuDeclarations.0/@ports.1"/>
+    </cosimunits>
+    <cosimunits identifier="DLoopController_FixedEuler_1Em6" declaration="//@csuDeclarations.1">
+      <ports xsi:type="hintco:InputPortInstance" identifier="VEL_FB@expseu_" declaration="//@csuDeclarations.1/@ports.0" valueFrom="//@candidates.0/@cosimunits.2/@ports.4">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="POS_FB@expseu_" declaration="//@csuDeclarations.1/@ports.1" valueFrom="//@candidates.0/@cosimunits.3/@ports.1">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="REFERENCE@expseu_" declaration="//@csuDeclarations.1/@ports.2" valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.0" declaration="//@csuDeclarations.1/@ports.3"/>
+    </cosimunits>
+    <cosimunits identifier="EMAPlantNoLoad_FixedEuler_1Em6" declaration="//@csuDeclarations.2">
+      <adaptation xsi:type="hintco:PowerBondAdaptation" effort="//@candidates.0/@cosimunits.2/@ports.5" flow="//@candidates.0/@cosimunits.2/@ports.2"/>
+      <ports xsi:type="hintco:InputPortInstance" identifier="torque_input@expseu_" declaration="//@csuDeclarations.2/@ports.0" valueFrom="//@candidates.0/@cosimunits.1/@ports.3">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="psu_vol_input_v@expseu_" declaration="//@csuDeclarations.2/@ports.1" valueFrom="//@candidates.0/@cosimunits.0/@ports.0">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="V_IN@expseu_" declaration="//@csuDeclarations.2/@ports.2" valueFrom="//@candidates.0/@cosimunits.3/@ports.2">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="X_IN@expseu_" declaration="//@csuDeclarations.2/@ports.3" valueFrom="//@candidates.0/@cosimunits.3/@ports.3">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="ang_vel_out_rpm@expseu_" valueTo="//@candidates.0/@cosimunits.1/@ports.0" declaration="//@csuDeclarations.2/@ports.4"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="F_OUT@expseu_" valueTo="//@candidates.0/@cosimunits.3/@ports.0" declaration="//@csuDeclarations.2/@ports.5"/>
+    </cosimunits>
+    <cosimunits identifier="LoadNSensor_FixedEuler_1Em6" declaration="//@csuDeclarations.3">
+      <adaptation xsi:type="hintco:PowerBondAdaptation" effort="//@candidates.0/@cosimunits.3/@ports.0" flow="//@candidates.0/@cosimunits.3/@ports.2"/>
+      <ports xsi:type="hintco:InputPortInstance" identifier="F_INPUT@expseu_" declaration="//@csuDeclarations.3/@ports.0" valueFrom="//@candidates.0/@cosimunits.2/@ports.5">
+        <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="X_AFTER_LOAD@expseu_" valueTo="//@candidates.0/@cosimunits.1/@ports.1" declaration="//@csuDeclarations.3/@ports.1"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="V_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.2" declaration="//@csuDeclarations.3/@ports.2"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="X_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.3" declaration="//@csuDeclarations.3/@ports.3"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations identifier="Scenario" path="resources/Scenario.fmu" guid="{a174734c-d15f-4ef0-838d-06526230b19e}">
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="psuvolt"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="ref"/>
+  </csuDeclarations>
+  <csuDeclarations identifier="DLoopController_FixedEuler_1Em6" path="resources/DLoopController_FixedEuler_1Em6.fmu" guid="2761528305">
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="VEL_FB@expseu_"/>
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="POS_FB@expseu_"/>
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="REFERENCE@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="OUTPUT@expseu_"/>
+  </csuDeclarations>
+  <csuDeclarations identifier="EMAPlantNoLoad_FixedEuler_1Em6" path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu" guid="698567049">
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="torque_input@expseu_"/>
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="psu_vol_input_v@expseu_"/>
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="V_IN@expseu_"/>
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="X_IN@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="ang_vel_out_rpm@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="F_OUT@expseu_"/>
+  </csuDeclarations>
+  <csuDeclarations identifier="LoadNSensor_FixedEuler_1Em6" path="resources/LoadNSensor_FixedEuler_1Em6.fmu" guid="2810456241">
+    <ports xsi:type="hintco:InputPortDeclaration" identifier="F_INPUT@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="X_AFTER_LOAD@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="V_OUTPUT@expseu_"/>
+    <ports xsi:type="hintco:OutputPortDeclaration" identifier="X_OUTPUT@expseu_"/>
+  </csuDeclarations>
+</hintco:Candidates>

File diff suppressed because it is too large
+ 147 - 0
HintCO/model/Candidates.genmodel


+ 34 - 1
HintCO/model/Candidates.xcore

@@ -49,7 +49,7 @@ abstract class PrecendenceNode {
 }
 
 class CandidateScenario extends IDed, Alternative {
-	contains CosimUnitInstance[] cosimunits
+	contains CosimUnitInstance[] cosimunits opposite scenario
 	derived String name get {
 		identifier + "(w=" + weight + ")"
 	}
@@ -72,6 +72,7 @@ class CosimUnitInstance extends IDed,PrecendenceNode {
 	contains UnitAdaptation adaptation opposite unit
 	refers CosimUnitDeclaration[1] declaration
 	contains PortInstance[] ports opposite unit
+	refers CandidateScenario scenario opposite cosimunits
 	
 	op UnitAdaptation[] selectedAdaptations() {
 		if (adaptation === null){
@@ -231,6 +232,38 @@ class MultiRateAdaptation extends UnitAdaptation {
 	}
 }
 
+class PowerBondAdaptation extends UnitAdaptation {
+	refers PortInstance effort
+	refers PortInstance flow
+	op PowerBondAdaptation getDual() {
+		var PowerBondAdaptation res = null
+		if (effort instanceof InputPortInstance && flow instanceof OutputPortInstance){
+			res = unit.scenario.cosimunits
+			.flatMap[u | u.eAllContents.filter(PowerBondAdaptation).toIterable]
+			.filter[a | a.effort instanceof OutputPortInstance && a.flow instanceof InputPortInstance]
+			.findFirst[a | (a.effort as OutputPortInstance).valueTo.contains(effort) && (a.flow as InputPortInstance).valueFrom === flow]
+		} else if (effort instanceof OutputPortInstance && flow instanceof InputPortInstance) {
+			res = unit.scenario.cosimunits
+			.flatMap[u | u.eAllContents.filter(PowerBondAdaptation).toIterable]
+			.filter[a | a.effort instanceof InputPortInstance && a.flow instanceof OutputPortInstance]
+			.findFirst[a | (a.effort as InputPortInstance).valueFrom === effort && (a.flow as OutputPortInstance).valueTo.contains(flow)]
+		} else {
+			throw new RuntimeException("Invalid effort and flow in power bond adaptation")
+		}
+		if (res===null){
+			throw new RuntimeException("Power bond adaptation has no dual")
+		}
+		res
+	}
+	derived String name get {
+		if (effort!==null && flow !== null){
+			"PBond_" + effort.identifier + "_" + flow.identifier + "(w=" + weight + ")"
+		} else {
+			"PBond(w=" + weight + ")"
+		}
+	}
+}
+
 class ExtrapolationAdaptation extends ApproximationAdaptation {
 	derived String name get {
 		order + "(w=" + weight + ")"

+ 0 - 321
HintCO/model/ContractLang.ecore

@@ -1,321 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="contractLang" nsURI="http://www.uantwerpen.be/cosys/ContractLang"
-    nsPrefix="contractLang">
-  <eClassifiers xsi:type="ecore:EClass" name="Root">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" eType="#//Contract"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="contractSet" eType="#//ContractSet"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ContractSet">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="contracts" upperBound="-1"
-        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ContractRef">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" eType="#//Contract"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Contract">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
-        eType="#//Statement" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="#//Scope"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="pattern" eType="#//Pattern"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="action" eType="#//Action"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Statement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Statement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="MetaStatement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="StatementRef" eSuperTypes="#//MetaStatement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//Statement"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Statement">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="oper" eType="#//Operator"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StatementOp" eSuperTypes="#//MetaStatement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="StatementAnd" eSuperTypes="#//StatementOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement1" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement2" eType="#//MetaStatement"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StatementOr" eSuperTypes="#//StatementOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement1" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement2" eType="#//MetaStatement"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StatementNot" eSuperTypes="#//StatementOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//MetaStatement"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Scope"/>
-  <eClassifiers xsi:type="ecore:EClass" name="GloballyScope" eSuperTypes="#//Scope"/>
-  <eClassifiers xsi:type="ecore:EClass" name="BeforeScope" eSuperTypes="#//Scope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="#//Event"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AfterScope" eSuperTypes="#//Scope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="#//Event"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BetweenScope" eSuperTypes="#//Scope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//Event"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//Event"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AfterUntilScope" eSuperTypes="#//Scope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//Event"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//Event"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Pattern">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="prob" eType="#//Probability"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Occurrence" eSuperTypes="#//Pattern">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//Statement"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="UniversalityPattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AbsencePattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ExistencePattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BoundedExistencePattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="n" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TransientStatePattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//SingleTime"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SteadyStatePattern" eSuperTypes="#//Occurrence"/>
-  <eClassifiers xsi:type="ecore:EClass" name="MinDurationPattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="duration" eType="#//SingleTime"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="MaxDurationPattern" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="duration" eType="#//SingleTime"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Recurrence" eSuperTypes="#//Occurrence">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//SingleTime"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="PrecStatement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constraint" eType="#//Constraint"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Order" eSuperTypes="#//Pattern"/>
-  <eClassifiers xsi:type="ecore:EClass" name="PrecedencePattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interval" eType="#//Interval"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="PrecedenceChain1NPattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statements" unique="false"
-        upperBound="-1" eType="#//PrecStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interval" eType="#//Interval"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constraint" eType="#//Constraint"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="UntilPattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ResponsePattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constraint" eType="#//Constraint"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ResponseChain1NPattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constraint" eType="#//Constraint"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statements" unique="false"
-        upperBound="-1" eType="#//PrecStatement"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ResponseChainN1Pattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statements" unique="false"
-        upperBound="-1" eType="#//PrecStatement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constraint" eType="#//Constraint"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ResponseInvariancePattern" eSuperTypes="#//Order">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="second" eType="#//MetaStatement"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="time" eType="#//Time" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Constraint">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//Statement"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Time">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//TimeUnit"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TimeInterval" eSuperTypes="#//Time">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//NumValue"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//NumValue"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="closed_min" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="closed_max" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="UpperTimeBound" eSuperTypes="#//Time">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="val" eType="#//NumValue"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="LowerTimeBound" eSuperTypes="#//Time">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="val" eType="#//NumValue"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SingleTime" eSuperTypes="#//Time">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="val" eType="#//NumValue"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TimeUnit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Milliseconds" eSuperTypes="#//TimeUnit #//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Seconds" eSuperTypes="#//TimeUnit #//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Probability">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="prob" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ProbLess"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ProbLessEq"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ProbGreater"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ProbGreaterEq"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Action"/>
-  <eClassifiers xsi:type="ecore:EClass" name="VarOrVarOp"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Operator"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Expression"/>
-  <eClassifiers xsi:type="ecore:EClass" name="NumValue"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Derivative" eSuperTypes="#//VarOrVarOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AbsoluteValue" eSuperTypes="#//VarOrVarOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Difference" eSuperTypes="#//VarOrVarOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var2" eType="#//VarOrVarOp"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Average" eSuperTypes="#//VarOrVarOp">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="duration" eType="#//SingleTime"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Infinity" eSuperTypes="#//Expression #//NumValue #//Value"/>
-  <eClassifiers xsi:type="ecore:EClass" name="IntValue" eSuperTypes="#//Expression #//NumValue #//Value">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="val" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FloatValue" eSuperTypes="#//Expression #//NumValue #//Value">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="val" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Equality" eSuperTypes="#//Operator"/>
-  <eClassifiers xsi:type="ecore:EClass" name="GreaterThan" eSuperTypes="#//Operator">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="equalTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="LessThan" eSuperTypes="#//Operator">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="equalTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AndExpression" eSuperTypes="#//Expression">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="arg0" eType="#//Expression"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="arg1" eType="#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="True" eSuperTypes="#//Expression #//Value"/>
-  <eClassifiers xsi:type="ecore:EClass" name="False" eSuperTypes="#//Expression #//Value"/>
-  <eClassifiers xsi:type="ecore:EClass" name="StringValue" eSuperTypes="#//Expression #//Value">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="val" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="QualValue" eSuperTypes="#//Expression #//Value">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="val" eType="#//LOW_MED_HIGH"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="#//Expression">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="closed_min" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="closed_max" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="min" eType="#//Value" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="max" eType="#//Value" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//Unit" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ValueWithUnit" eSuperTypes="#//Expression #//Value">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="val" eType="#//NumValue"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//Unit" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="LOW_MED_HIGH">
-    <eLiterals name="NONE" literal="NONE"/>
-    <eLiterals name="LOW" value="1" literal="LOW"/>
-    <eLiterals name="MED" value="2" literal="MED"/>
-    <eLiterals name="HIGH" value="3" literal="HIGH"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Unitless" eSuperTypes="#//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Percentage" eSuperTypes="#//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="AssignAction" eSuperTypes="#//Action">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="var" eType="#//VarOrVarOp"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Value"/>
-  <eClassifiers xsi:type="ecore:EClass" name="DomainValue" eSuperTypes="#//Expression"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//VarOrVarOp"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Frequency" eSuperTypes="#//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="FMUProperty" eSuperTypes="#//Variable">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="fmu" eType="#//FMUInstance"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="property" eType="#//FMUPropertyEnum"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="FMUPropertyEnum">
-    <eLiterals name="EXEC_RATE" literal="exec_rate"/>
-    <eLiterals name="IS_PHYSICAL" value="1" literal="is_physical"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FMUInstance">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FMUSignal" eSuperTypes="#//Variable">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SteadyStateSuggestion" eSuperTypes="#//DomainValue"/>
-  <eClassifiers xsi:type="ecore:EClass" name="MetersPerSecond" eSuperTypes="#//Unit"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Meters" eSuperTypes="#//Unit"/>
-</ecore:EPackage>

+ 0 - 269
HintCO/model/ContractLang.genmodel

@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext 2.16.0" modelDirectory="/be.uantwerpen.cosys.ContractLang/src-gen"
-    modelPluginID="be.uantwerpen.cosys.ContractLang" forceOverwrite="true" modelName="ContractLang"
-    updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.14">
-  <genPackages prefix="ContractLang" basePackage="be.uantwerpen.cosys" disposableProviderFactory="true"
-      fileExtensions="contractlang" ecorePackage="ContractLang.ecore#/">
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="ContractLang.ecore#//LOW_MED_HIGH">
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//LOW_MED_HIGH/NONE"/>
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//LOW_MED_HIGH/LOW"/>
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//LOW_MED_HIGH/MED"/>
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//LOW_MED_HIGH/HIGH"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="ContractLang.ecore#//FMUPropertyEnum">
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//FMUPropertyEnum/EXEC_RATE"/>
-      <genEnumLiterals ecoreEnumLiteral="ContractLang.ecore#//FMUPropertyEnum/IS_PHYSICAL"/>
-    </genEnums>
-    <genClasses ecoreClass="ContractLang.ecore#//Root">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Root/contract"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Root/contractSet"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ContractSet">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//ContractSet/name"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ContractSet/contracts"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ContractRef">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ContractRef/contract"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Contract">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//Contract/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//Contract/description"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Contract/statements"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Contract/scope"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Contract/pattern"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Contract/action"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Event"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Property"/>
-    <genClasses ecoreClass="ContractLang.ecore#//MetaStatement"/>
-    <genClasses ecoreClass="ContractLang.ecore#//StatementRef">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementRef/statement"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Statement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//Statement/name"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Statement/var"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Statement/oper"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Statement/expr"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//StatementOp"/>
-    <genClasses ecoreClass="ContractLang.ecore#//StatementAnd">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementAnd/statement1"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementAnd/statement2"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//StatementOr">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementOr/statement1"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementOr/statement2"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//StatementNot">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//StatementNot/statement"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Scope"/>
-    <genClasses ecoreClass="ContractLang.ecore#//GloballyScope"/>
-    <genClasses ecoreClass="ContractLang.ecore#//BeforeScope">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//BeforeScope/event"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//AfterScope">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AfterScope/event"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//BetweenScope">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//BetweenScope/first"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//BetweenScope/second"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//AfterUntilScope">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AfterUntilScope/first"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AfterUntilScope/second"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Pattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Pattern/prob"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Occurrence">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Occurrence/statement"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//UniversalityPattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//UniversalityPattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//AbsencePattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AbsencePattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ExistencePattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ExistencePattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//BoundedExistencePattern">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//BoundedExistencePattern/n"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//BoundedExistencePattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//TransientStatePattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//TransientStatePattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//SteadyStatePattern"/>
-    <genClasses ecoreClass="ContractLang.ecore#//MinDurationPattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//MinDurationPattern/duration"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//MaxDurationPattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//MaxDurationPattern/duration"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Recurrence">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Recurrence/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//PrecStatement">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecStatement/statement"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecStatement/time"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecStatement/constraint"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Order"/>
-    <genClasses ecoreClass="ContractLang.ecore#//PrecedencePattern">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedencePattern/first"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedencePattern/second"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedencePattern/interval"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//PrecedenceChain1NPattern">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedenceChain1NPattern/second"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedenceChain1NPattern/statements"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedenceChain1NPattern/first"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedenceChain1NPattern/interval"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//PrecedenceChain1NPattern/constraint"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//UntilPattern">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//UntilPattern/first"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//UntilPattern/second"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//UntilPattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ResponsePattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponsePattern/first"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponsePattern/second"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponsePattern/time"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponsePattern/constraint"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ResponseChain1NPattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChain1NPattern/first"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChain1NPattern/second"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChain1NPattern/time"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChain1NPattern/constraint"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChain1NPattern/statements"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ResponseChainN1Pattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChainN1Pattern/second"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChainN1Pattern/statements"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChainN1Pattern/first"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChainN1Pattern/time"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseChainN1Pattern/constraint"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ResponseInvariancePattern">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseInvariancePattern/first"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseInvariancePattern/second"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ResponseInvariancePattern/time"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Constraint">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Constraint/statement"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Time">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Time/unit"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//TimeInterval">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//TimeInterval/min"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//TimeInterval/max"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//TimeInterval/closed_min"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//TimeInterval/closed_max"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//UpperTimeBound">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//UpperTimeBound/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//LowerTimeBound">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//LowerTimeBound/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//SingleTime">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//SingleTime/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//TimeUnit"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Milliseconds"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Seconds"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Probability">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Probability/prob"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ProbLess"/>
-    <genClasses ecoreClass="ContractLang.ecore#//ProbLessEq"/>
-    <genClasses ecoreClass="ContractLang.ecore#//ProbGreater"/>
-    <genClasses ecoreClass="ContractLang.ecore#//ProbGreaterEq"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Action"/>
-    <genClasses ecoreClass="ContractLang.ecore#//VarOrVarOp"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Operator"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Expression"/>
-    <genClasses ecoreClass="ContractLang.ecore#//NumValue"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Unit"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Derivative">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Derivative/var"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//AbsoluteValue">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AbsoluteValue/var"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Difference">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Difference/var"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Difference/var2"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Average">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Average/var"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Average/duration"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Infinity"/>
-    <genClasses ecoreClass="ContractLang.ecore#//IntValue">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//IntValue/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//FloatValue">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//FloatValue/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Equality"/>
-    <genClasses ecoreClass="ContractLang.ecore#//GreaterThan">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//GreaterThan/equalTo"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//LessThan">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//LessThan/equalTo"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//AndExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AndExpression/arg0"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AndExpression/arg1"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//True"/>
-    <genClasses ecoreClass="ContractLang.ecore#//False"/>
-    <genClasses ecoreClass="ContractLang.ecore#//StringValue">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//StringValue/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//QualValue">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//QualValue/val"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Interval">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//Interval/closed_min"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//Interval/closed_max"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Interval/min"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Interval/max"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//Interval/unit"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//ValueWithUnit">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ValueWithUnit/val"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//ValueWithUnit/unit"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Unitless"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Percentage"/>
-    <genClasses ecoreClass="ContractLang.ecore#//AssignAction">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//AssignAction/var"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//Value"/>
-    <genClasses ecoreClass="ContractLang.ecore#//DomainValue"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Variable"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Frequency"/>
-    <genClasses ecoreClass="ContractLang.ecore#//FMUProperty">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ContractLang.ecore#//FMUProperty/fmu"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//FMUProperty/property"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//FMUInstance">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//FMUInstance/signal"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//FMUSignal">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ContractLang.ecore#//FMUSignal/signal"/>
-    </genClasses>
-    <genClasses ecoreClass="ContractLang.ecore#//SteadyStateSuggestion"/>
-    <genClasses ecoreClass="ContractLang.ecore#//MetersPerSecond"/>
-    <genClasses ecoreClass="ContractLang.ecore#//Meters"/>
-  </genPackages>
-</genmodel:GenModel>

File diff suppressed because it is too large
+ 217 - 0
HintCO/model/hintco.ecore


+ 3 - 21
HintCO/pom.xml

@@ -4,31 +4,20 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>HintCO</groupId>
 	<artifactId>HintCO</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
+	<version>0.0.1-0</version>
 	<name>HintCO</name>
 
-  <parent>
+	<parent>
 		<relativePath>../pom.xml</relativePath>
 		<groupId>HintCOProject</groupId>
 		<artifactId>HintCOProject</artifactId>
-		<version>1.0.0-SNAPSHOT</version>
+		<version>1.0.0-0</version>
 	</parent>
 
 	<properties>
 		<xtext-version>2.16.0</xtext-version>
 	</properties>
 
-	<repositories>
-		<repository>
-			<id>seasar</id>
-			<url>https://www.seasar.org/maven/maven2/</url>
-		</repository>
-		<repository>
-			<id>mvnCentral</id>
-			<url>http://central.maven.org/maven2/</url>
-		</repository>
-	</repositories>
-
 	<dependencies>
 		<!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
 		<dependency>
@@ -62,12 +51,6 @@
 			<artifactId>org.eclipse.text</artifactId>
 			<version>3.5.101</version>
 		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.eclipse.core/org.eclipse.core.resources -->
-		<dependency>
-			<groupId>org.eclipse.core</groupId>
-			<artifactId>org.eclipse.core.resources</artifactId>
-			<version>3.7.100</version>
-		</dependency>
 		<dependency>
 			<groupId>org.eclipse.xtext</groupId>
 			<artifactId>org.eclipse.xtext.ecore</artifactId>
@@ -83,7 +66,6 @@
 			<artifactId>org.eclipse.xtext.builder.standalone</artifactId>
 			<version>${xtext-version}</version>
 		</dependency>
-
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>

+ 7 - 0
HintCO/src-gen/ua/ansymo/hintco/.gitignore

@@ -46,3 +46,10 @@
 /PrecendenceNode.java
 /VariantDiagram.java
 /XorAdaptation.java
+/CombineAdaptation.java
+/DecompositionPortAdaptation.java
+/DecompositionUnitAdaptation.java
+/PowerBondAdaptation.java
+/UnitAdaptation.java
+/XorPortAdaptation.java
+/XorUnitAdaptation.java

+ 3 - 1
HintCO/src-gen/ua/ansymo/hintco/CandidateScenario.java

@@ -28,6 +28,7 @@ public interface CandidateScenario extends IDed, Alternative {
 	/**
 	 * Returns the value of the '<em><b>Cosimunits</b></em>' containment reference list.
 	 * The list contents are of type {@link ua.ansymo.hintco.CosimUnitInstance}.
+	 * It is bidirectional and its opposite is '{@link ua.ansymo.hintco.CosimUnitInstance#getScenario <em>Scenario</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Cosimunits</em>' containment reference list isn't clear,
@@ -36,7 +37,8 @@ public interface CandidateScenario extends IDed, Alternative {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Cosimunits</em>' containment reference list.
 	 * @see ua.ansymo.hintco.HintcoPackage#getCandidateScenario_Cosimunits()
-	 * @model containment="true"
+	 * @see ua.ansymo.hintco.CosimUnitInstance#getScenario
+	 * @model opposite="scenario" containment="true"
 	 * @generated
 	 */
 	EList<CosimUnitInstance> getCosimunits();

+ 29 - 0
HintCO/src-gen/ua/ansymo/hintco/CosimUnitInstance.java

@@ -16,6 +16,7 @@ import org.eclipse.emf.common.util.EList;
  *   <li>{@link ua.ansymo.hintco.CosimUnitInstance#getAdaptation <em>Adaptation</em>}</li>
  *   <li>{@link ua.ansymo.hintco.CosimUnitInstance#getDeclaration <em>Declaration</em>}</li>
  *   <li>{@link ua.ansymo.hintco.CosimUnitInstance#getPorts <em>Ports</em>}</li>
+ *   <li>{@link ua.ansymo.hintco.CosimUnitInstance#getScenario <em>Scenario</em>}</li>
  * </ul>
  *
  * @see ua.ansymo.hintco.HintcoPackage#getCosimUnitInstance()
@@ -95,6 +96,34 @@ public interface CosimUnitInstance extends IDed, PrecendenceNode {
 	 */
 	EList<PortInstance> getPorts();
 
+	/**
+	 * Returns the value of the '<em><b>Scenario</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link ua.ansymo.hintco.CandidateScenario#getCosimunits <em>Cosimunits</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scenario</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scenario</em>' container reference.
+	 * @see #setScenario(CandidateScenario)
+	 * @see ua.ansymo.hintco.HintcoPackage#getCosimUnitInstance_Scenario()
+	 * @see ua.ansymo.hintco.CandidateScenario#getCosimunits
+	 * @model opposite="cosimunits" transient="false"
+	 * @generated
+	 */
+	CandidateScenario getScenario();
+
+	/**
+	 * Sets the value of the '{@link ua.ansymo.hintco.CosimUnitInstance#getScenario <em>Scenario</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scenario</em>' container reference.
+	 * @see #getScenario()
+	 * @generated
+	 */
+	void setScenario(CandidateScenario value);
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 0 - 0
HintCO/src-gen/ua/ansymo/hintco/HintcoFactory.java


Some files were not shown because too many files changed in this diff