refactoring EXTRACT SUBCLASS added
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$1.class
new file mode 100644
index 0000000..4531b3f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..95c5d59
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.class
new file mode 100644
index 0000000..2f4d628
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlOperationList.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlOperationList.class
new file mode 100644
index 0000000..2485702
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlOperationList.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlPropertyList.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlPropertyList.class
new file mode 100644
index 0000000..a9a518c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement$UmlPropertyList.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..78bae2f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..fbec84f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.class
new file mode 100644
index 0000000..ac3ec03
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..9b227a9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel
new file mode 100644
index 0000000..a1d19fe
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<comrel:CompositeRefactoring xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:comrel="http://comrel/0.1" name="extractsubclass" refId="comrel.extractsubclass" label="Extract Subclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+  <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="extractsubclass">

+    <refactoringUnits xsi:type="comrel:AtomicUnit" name="Create Subclass" seqExecutionOrder="1" unitId="org.eclipse.emf.refactor.refactorings.uml24.createsubclass" label="Create Subclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.0">

+      <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+      <inputPorts name="className" description="" type="java.lang.String"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="2">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="Push Down Attribute" unitId="org.eclipse.emf.refactor.refactorings.uml24.pushdownattribute" label="Push Down Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.1">

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+      </refactoringUnit>

+      <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Property"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="3">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="Push Down Operation" unitId="org.eclipse.emf.refactor.refactorings.uml24.pushdownoperation" label="Push Down Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.2">

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+      </refactoringUnit>

+      <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Operation"/>

+    </refactoringUnits>

+    <inputPorts xsi:type="comrel:MultiInputPort" name="operationsList" type="org.eclipse.uml2.uml.Operation"/>

+    <inputPorts xsi:type="comrel:MultiInputPort" name="attributesList" type="org.eclipse.uml2.uml.Property"/>

+    <inputPorts xsi:type="comrel:SingleInputPort" name="selectedEObject" type="org.eclipse.uml2.uml.Class"/>

+    <inputPorts xsi:type="comrel:SingleInputPort" name="className" type="java.lang.String"/>

+  </mainRefactoringUnit>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.3" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>

+  <modelRefactorings name="Create Subclass" refId="org.eclipse.emf.refactor.refactorings.uml24.createsubclass" label="Create Subclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+    <inputPorts name="className" description="" type="java.lang.String"/>

+  </modelRefactorings>

+  <modelRefactorings name="Push Down Attribute" refId="org.eclipse.emf.refactor.refactorings.uml24.pushdownattribute" label="Push Down Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+  </modelRefactorings>

+  <modelRefactorings name="Push Down Operation" refId="org.eclipse.emf.refactor.refactorings.uml24.pushdownoperation" label="Push Down Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+  </modelRefactorings>

+</comrel:CompositeRefactoring>

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel_diagram b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel_diagram
new file mode 100644
index 0000000..242c182
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractsubclass.comrel_diagram
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:comrel="http://comrel/0.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_C64GwOm9EeCwxauXBWbEYA" type="Comrel" name="extractsubclass.comrel_diagram" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_Hb_sEOm-EeCwxauXBWbEYA" type="2005" fontName="Segoe UI">

+    <children xmi:type="notation:DecorationNode" xmi:id="_HcCIUOm-EeCwxauXBWbEYA" type="5083"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_HcCvYOm-EeCwxauXBWbEYA" type="7079"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_HcCvYem-EeCwxauXBWbEYA" type="7080">

+      <children xmi:type="notation:Shape" xmi:id="_LVg7UOm-EeCwxauXBWbEYA" type="3074" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_LVg7Uum-EeCwxauXBWbEYA" type="5050"/>

+        <children xmi:type="notation:Shape" xmi:id="_LVyoIOm-EeCwxauXBWbEYA" type="3035" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_LVyoIum-EeCwxauXBWbEYA" type="5026">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_LVzPMOm-EeCwxauXBWbEYA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LVyoIem-EeCwxauXBWbEYA" x="114" y="-19"/>

+        </children>

+        <children xmi:type="notation:Shape" xmi:id="_LVzPMem-EeCwxauXBWbEYA" type="3035" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_LVzPM-m-EeCwxauXBWbEYA" type="5026">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_LVzPNOm-EeCwxauXBWbEYA" x="-20" y="-40"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LVzPMum-EeCwxauXBWbEYA" x="60" y="-19"/>

+        </children>

+        <element xmi:type="comrel:AtomicUnit" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LVg7Uem-EeCwxauXBWbEYA" x="8" y="132"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_OokngOm-EeCwxauXBWbEYA" type="3065" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_OolOkOm-EeCwxauXBWbEYA" type="5061"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_OolOkem-EeCwxauXBWbEYA" type="7049"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_OolOkum-EeCwxauXBWbEYA" type="7050">

+          <children xmi:type="notation:Shape" xmi:id="_XpJQIOm-EeCwxauXBWbEYA" type="3068" fontName="Segoe UI">

+            <children xmi:type="notation:DecorationNode" xmi:id="_XpJQIum-EeCwxauXBWbEYA" type="5048"/>

+            <children xmi:type="notation:Shape" xmi:id="_XpOIoOm-EeCwxauXBWbEYA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_XpOIoum-EeCwxauXBWbEYA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_XpOIo-m-EeCwxauXBWbEYA" x="40" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XpOIoem-EeCwxauXBWbEYA" x="90" y="-19"/>

+            </children>

+            <element xmi:type="comrel:AtomicUnit" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit"/>

+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XpJQIem-EeCwxauXBWbEYA" x="14" y="68"/>

+          </children>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_OotxcOm-EeCwxauXBWbEYA" type="3024">

+          <children xmi:type="notation:DecorationNode" xmi:id="_OouYgOm-EeCwxauXBWbEYA" type="5021">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_OouYgem-EeCwxauXBWbEYA" x="40" y="-20"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_Ootxcem-EeCwxauXBWbEYA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_Ootxcum-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_Ootxc-m-EeCwxauXBWbEYA"/>

+          <element xmi:type="comrel:MultiInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OotxdOm-EeCwxauXBWbEYA" x="114" y="-19"/>

+        </children>

+        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Ookngem-EeCwxauXBWbEYA"/>

+        <element xmi:type="comrel:SingleQueuedUnit" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ookngum-EeCwxauXBWbEYA" x="314" y="64" width="349" height="287"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_bKJRsOm-EeCwxauXBWbEYA" type="3065" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_bKJRs-m-EeCwxauXBWbEYA" type="5061"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_bKJRtOm-EeCwxauXBWbEYA" type="7049"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_bKJRtem-EeCwxauXBWbEYA" type="7050">

+          <children xmi:type="notation:Shape" xmi:id="_cwchIOm-EeCwxauXBWbEYA" type="3068" fontName="Segoe UI">

+            <children xmi:type="notation:DecorationNode" xmi:id="_cwchIum-EeCwxauXBWbEYA" type="5048"/>

+            <children xmi:type="notation:Shape" xmi:id="_cweWUOm-EeCwxauXBWbEYA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_cweWUum-EeCwxauXBWbEYA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_cweWU-m-EeCwxauXBWbEYA" x="40" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cweWUem-EeCwxauXBWbEYA" x="102" y="-19"/>

+            </children>

+            <element xmi:type="comrel:AtomicUnit" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit"/>

+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwchIem-EeCwxauXBWbEYA" x="14" y="55"/>

+          </children>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_bKLt8Om-EeCwxauXBWbEYA" type="3024">

+          <children xmi:type="notation:DecorationNode" xmi:id="_bKMVAOm-EeCwxauXBWbEYA" type="5021">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_bKMVAem-EeCwxauXBWbEYA" x="40" y="-20"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_bKLt8em-EeCwxauXBWbEYA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_bKLt8um-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_bKLt8-m-EeCwxauXBWbEYA"/>

+          <element xmi:type="comrel:MultiInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bKLt9Om-EeCwxauXBWbEYA" x="126" y="-19"/>

+        </children>

+        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_bKJRsem-EeCwxauXBWbEYA"/>

+        <element xmi:type="comrel:SingleQueuedUnit" href="extractsubclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bKJRsum-EeCwxauXBWbEYA" x="698" y="65" width="367" height="282"/>

+      </children>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_ka3PIOm-EeCwxauXBWbEYA" type="3028">

+      <children xmi:type="notation:DecorationNode" xmi:id="_ka3PJem-EeCwxauXBWbEYA" type="5023">

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ka32MOm-EeCwxauXBWbEYA" x="40" y="-20"/>

+      </children>

+      <styles xmi:type="notation:DescriptionStyle" xmi:id="_ka3PIem-EeCwxauXBWbEYA"/>

+      <styles xmi:type="notation:FontStyle" xmi:id="_ka3PIum-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+      <styles xmi:type="notation:FillStyle" xmi:id="_ka3PI-m-EeCwxauXBWbEYA"/>

+      <element xmi:type="comrel:MultiInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@inputPorts.0"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ka3PJOm-EeCwxauXBWbEYA" x="834" y="-19"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_lFBmcOm-EeCwxauXBWbEYA" type="3028">

+      <children xmi:type="notation:DecorationNode" xmi:id="_lFBmdem-EeCwxauXBWbEYA" type="5023">

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_lFBmdum-EeCwxauXBWbEYA" x="40" y="-20"/>

+      </children>

+      <styles xmi:type="notation:DescriptionStyle" xmi:id="_lFBmcem-EeCwxauXBWbEYA"/>

+      <styles xmi:type="notation:FontStyle" xmi:id="_lFBmcum-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+      <styles xmi:type="notation:FillStyle" xmi:id="_lFBmc-m-EeCwxauXBWbEYA"/>

+      <element xmi:type="comrel:MultiInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@inputPorts.1"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lFBmdOm-EeCwxauXBWbEYA" x="438" y="-19"/>

+    </children>

+    <children xmi:type="notation:Shape" xmi:id="_mcwOYOm-EeCwxauXBWbEYA" type="3027" fontName="Segoe UI">

+      <children xmi:type="notation:DecorationNode" xmi:id="_mcwOYum-EeCwxauXBWbEYA" type="5022">

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_mcwOY-m-EeCwxauXBWbEYA" x="40" y="-20"/>

+      </children>

+      <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@inputPorts.2"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mcwOYem-EeCwxauXBWbEYA" x="132" y="-19"/>

+    </children>

+    <children xmi:type="notation:Shape" xmi:id="_nD7jIOm-EeCwxauXBWbEYA" type="3027" fontName="Segoe UI">

+      <children xmi:type="notation:DecorationNode" xmi:id="_nD7jIum-EeCwxauXBWbEYA" type="5022">

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_nD7jI-m-EeCwxauXBWbEYA" x="-20" y="-40"/>

+      </children>

+      <element xmi:type="comrel:SingleInputPort" href="extractsubclass.comrel#//@mainRefactoringUnit/@inputPorts.3"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nD7jIem-EeCwxauXBWbEYA" x="78" y="-19"/>

+    </children>

+    <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Hb_sEem-EeCwxauXBWbEYA"/>

+    <element xmi:type="comrel:SequentialUnit" href="extractsubclass.comrel#//@mainRefactoringUnit"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hb_sEum-EeCwxauXBWbEYA" x="72" y="120" width="1099" height="511"/>

+  </children>

+  <styles xmi:type="notation:DiagramStyle" xmi:id="_C64Gwem9EeCwxauXBWbEYA"/>

+  <element xmi:type="comrel:CompositeRefactoring" href="extractsubclass.comrel#/"/>

+  <edges xmi:type="notation:Connector" xmi:id="_e_fyoOm-EeCwxauXBWbEYA" type="4003" source="_bKLt8Om-EeCwxauXBWbEYA" target="_cweWUOm-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_e_fyoem-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiSinglePortMapping" href="extractsubclass.comrel#//@portMappings.0"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_fyoum-EeCwxauXBWbEYA" points="[-3, 10, 35, -178]$[-39, 178, -1, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_f9-0IOm-EeCwxauXBWbEYA" type="4003" source="_OotxcOm-EeCwxauXBWbEYA" target="_XpOIoOm-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_f9-0Iem-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiSinglePortMapping" href="extractsubclass.comrel#//@portMappings.1"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f9-0Ium-EeCwxauXBWbEYA" points="[-2, 5, 46, -189]$[-51, 184, -3, -10]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-B3cOm-EeCwxauXBWbEYA" id="(0.2,0.75)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_sH5zUOm-EeCwxauXBWbEYA" type="4002" source="_lFBmcOm-EeCwxauXBWbEYA" target="_OotxcOm-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_sH5zUem-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiPortMapping" href="extractsubclass.comrel#//@portMappings.2"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sH5zUum-EeCwxauXBWbEYA" points="[2, 10, 2, -229]$[2, 229, 2, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_uaaogOm-EeCwxauXBWbEYA" type="4002" source="_ka3PIOm-EeCwxauXBWbEYA" target="_bKLt8Om-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_uaaogem-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiPortMapping" href="extractsubclass.comrel#//@portMappings.3"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uaaogum-EeCwxauXBWbEYA" points="[3, 10, 0, -223]$[3, 231, 0, -2]"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uadEwOm-EeCwxauXBWbEYA" id="(0.65,0.1)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_vWkuwOm-EeCwxauXBWbEYA" type="4001" source="_mcwOYOm-EeCwxauXBWbEYA" target="_LVyoIOm-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_vWlV0Om-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="extractsubclass.comrel#//@portMappings.4"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vWlV0em-EeCwxauXBWbEYA" points="[-1, 10, 11, -297]$[-12, 297, 0, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_wNER4Om-EeCwxauXBWbEYA" type="4001" source="_nD7jIOm-EeCwxauXBWbEYA" target="_LVzPMem-EeCwxauXBWbEYA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_wNER4em-EeCwxauXBWbEYA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="extractsubclass.comrel#//@portMappings.5"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wNER4um-EeCwxauXBWbEYA" points="[-1, 10, 11, -297]$[-16, 297, -4, -10]"/>

+  </edges>

+</notation:Diagram>

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
index de01257..6a78f9f 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
@@ -83,6 +83,12 @@
       menulabel="Extract Class"

       namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

    <refactoring

+      controller="org.eclipse.emf.refactor.refactorings.uml24.extractsubclass.RefactoringController"

+      gui="org.eclipse.emf.refactor.refactorings.uml24.extractsubclass.RefactoringGuiHandler"

+      id="org.eclipse.emf.refactor.refactorings.uml24.extractsubclass"

+      menulabel="Extract Subclass"

+      namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

+   <refactoring

       controller="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass.RefactoringController"

       gui="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass.RefactoringGuiHandler"

       id="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass"

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.java
new file mode 100644
index 0000000..5aec68b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringController.java
@@ -0,0 +1,274 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $

+ */

+package org.eclipse.emf.refactor.refactorings.uml24.extractsubclass;

+

+

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;

+import org.eclipse.emf.refactor.refactorings.uml24.extractsubclass.RefactoringDataManagement.UmlOperationList;

+import org.eclipse.emf.refactor.refactorings.uml24.extractsubclass.RefactoringDataManagement.UmlPropertyList;

+import org.eclipse.ltk.core.refactoring.RefactoringStatus;

+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;

+import org.eclipse.uml2.uml.Class;

+import org.eclipse.uml2.uml.Operation;

+import org.eclipse.uml2.uml.Property;

+

+import comrel.InputPort;

+import comrel.MultiInputPort;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+import comrel.interpreter.ComrelInterpreter;

+

+public final class RefactoringController implements IController{

+

+	/**

+	 * Refactoring supported by the controller.

+	 * @generated

+	 */

+	private Refactoring parent;

+	

+	/**

+	 * DataManagement object of the model refactoring.

+	 * @generated

+	 */

+	private RefactoringDataManagement dataManagement = 

+									new RefactoringDataManagement();

+	

+	/**

+	 * Invocation context of the model refactoring.

+	 * @generated

+	 */	

+	private List<EObject> selection = new ArrayList<EObject>();

+	

+	/**

+	 * Ltk RefactoringProcessor of the model refactoring.

+	 * @generated

+	 */

+	private InternalRefactoringProcessor refactoringProcessor = null;

+	

+	/**

+	 * Gets the Refactoring supported by the controller.

+	 * @return Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return this.parent;

+	}

+	

+	/**

+	 * Sets the Refactoring supported by the controller.

+	 * @param emfRefactoring Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+	

+	/**

+	 * Returns the DataManagement object of the model refactoring.

+	 * @return DataManagement object of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getDataManagementObject()

+	 * @generated

+	 */

+	@Override

+	public IDataManagement getDataManagementObject() {

+		return this.dataManagement;

+	}

+

+	/**

+	 * Returns the ltk RefactoringProcessor of the model refactoring.

+	 * @return Ltk RefactoringProcessor of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getLtkRefactoringProcessor()

+	 * @generated

+	 */

+	@Override

+	public RefactoringProcessor getLtkRefactoringProcessor() {

+		return this.refactoringProcessor;

+	}

+	

+	/**

+	 * Sets the selected EObject (invocation context of the model refactoring).

+	 * @param selection Invocation context of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setSelection(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public void setSelection(List<EObject> selection) {

+		this.selection = selection;

+		this.refactoringProcessor = 

+				new InternalRefactoringProcessor(this.selection);

+	}	

+	

+	/**

+	 * Returns a Runnable object that executes the model refactoring.

+	 * @return Runnable object that executes the model refactoring.

+	 * @generated

+	 */

+	private Runnable applyRefactoring() {

+		return new Runnable() {				

+			/**

+			 * @see java.lang.Runnable#run()

+			 * @generated

+			 */

+			@Override

+			public void run() {

+				try {

+					org.eclipse.uml2.uml.Class selectedEObject = 

+						(org.eclipse.uml2.uml.Class) dataManagement.

+							getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+					ArrayList<Property> attributesList = 

+							((UmlPropertyList) dataManagement.

+									getInPortByName("attributesList").getValue()).getUmlProperties();

+					ArrayList<Operation> operationsList = 

+							((UmlOperationList) dataManagement.

+									getInPortByName("operationsList").getValue()).getUmlOperations();

+					String className =

+						(String) dataManagement.getInPortByName("className").getValue();

+					// begin prepare and execute comrel interpreter

+					ComrelInterpreter interpreter = new ComrelInterpreter(selectedEObject);

+					interpreter.loadComrelModel(dataManagement.getComrelFilePath());

+					setRootPortValues(interpreter, selectedEObject,

+										attributesList,

+										operationsList,

+										className);

+					interpreter.execute();

+					// end prepare and execute comrel interpreter

+					stopTimeRecording();

+				} catch (IOException e) {

+					e.printStackTrace();

+				}

+			}

+			

+			private void setRootPortValues(

+					ComrelInterpreter interpreter,

+					org.eclipse.uml2.uml.Class selectedEObject, 

+					ArrayList<Property> attributesList,

+					ArrayList<Operation> operationsList, 

+					String className) {

+				RefactoringUnit rootRefactoringUnit = interpreter.getRootRefactoringUnit();

+				for (InputPort ip : rootRefactoringUnit.getAllInputPorts()) {

+					System.out.println(ip.getName());

+					if (ip.getName().equals("selectedEObject")) {

+						((SingleInputPort) ip).setValue(selectedEObject);

+					}

+					if (ip.getName().equals("operationsList")) {

+						((MultiInputPort) ip).getValue().addAll(operationsList);

+					}

+					if (ip.getName().equals("attributesList")) {

+						((MultiInputPort) ip).getValue().addAll(attributesList);

+					}

+					if (ip.getName().equals("className")) {

+						((SingleInputPort) ip).setValue(className);

+					}

+				}

+			}

+		};

+	}

+

+	/**

+	 * Internal class for providing an instance of a LTK RefactoringProcessor 

+	 * used for EMF model refactorings.	 

+	 * @generated

+	 */

+	public final class InternalRefactoringProcessor extends 

+									LtkEmfRefactoringProcessorAdapter {

+

+		/**

+		 * Constructor using the invocation context of the model refactoring.

+		 * @param selection Invocation context of the model refactoring.

+		 * @generated

+		 */

+		private InternalRefactoringProcessor(List<EObject> selection){

+				super(getParent(), selection, applyRefactoring());				

+		}

+			

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	 	 * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkInitialConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				Class selectedEObject = 

+						(Class) dataManagement.getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+				ArrayList<Property> attributesList = ((UmlPropertyList) dataManagement.

+									getInPortByName("attributesList").getValue()).getUmlProperties();

+				ArrayList<Operation> operationsList = ((UmlOperationList) dataManagement.

+									getInPortByName("operationsList").getValue()).getUmlOperations();

+				// test: the selected class must be owned by a package

+				String msg = "This refactoring can only be applied" +

+							" on classes which are owned by a package!";

+				if (selectedEObject.getPackage() == null) {

+					result.addFatalError(msg);

+					return result;

+				}

+				// test: each property must be an owned attribute of the selected class

+				msg = "At least one selected property is not an owned attribute of class '" 

+														+ selectedEObject.getName() +"'!";

+				for (Property attribute : attributesList) {

+					if (! selectedEObject.getOwnedAttributes().contains(attribute)) {

+						result.addFatalError(msg);

+						return result;

+					}

+				}

+				// test: each operation must be an owned operation of the selected class

+				msg = "At least one selected operation is not an owned operation of class '" 

+														+ selectedEObject.getName() +"'!";

+				for (Operation operation : operationsList) {

+					if (! selectedEObject.getOwnedOperations().contains(operation)) {

+						result.addFatalError(msg);

+						return result;

+					}

+				}

+				return result;

+		}

+		

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	     * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor, 

+	     * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkFinalConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				// the refactoring has no additional final conditions to be checked

+				startTimeRecording();

+				return result;

+		}

+		

+	}

+	

+	long zstVorher;

+	long zstNachher;

+	

+	private void startTimeRecording() {

+		zstVorher = System.currentTimeMillis();

+	}

+

+	private void stopTimeRecording() {

+		zstNachher = System.currentTimeMillis();

+		System.out.println("Time needed (withoud loading): " + ((zstNachher - zstVorher)) + " ms");

+	}

+

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..3a31c81
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringDataManagement.java
@@ -0,0 +1,155 @@
+ 

+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $

+ */

+package org.eclipse.emf.refactor.refactorings.uml24.extractsubclass;

+

+import java.io.File;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.core.runtime.FileLocator;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Port;

+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;

+import org.eclipse.emf.refactor.refactorings.uml24.compositional.Activator;

+import org.eclipse.uml2.uml.Class;

+import org.eclipse.uml2.uml.Operation;

+import org.eclipse.uml2.uml.Property;

+import org.osgi.framework.Bundle;

+

+import comrel.interpreter.IEObjectGetter;

+

+/**

+ * Class for specific data concerning a model refactoring.

+ * @generated

+ */

+public class RefactoringDataManagement extends DataManagementAdapter {

+

+	protected final String SELECTEDEOBJECT = "selectedEObject";

+	protected final String COMRELMODELS = "comrelmodels";

+	protected final String COMRELMODELSSLASH = "\\comrelmodels\\";

+	

+	private String comrelFileName = "extractsubclass.comrel";

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public RefactoringDataManagement() {

+		this.addPorts();

+	}

+	

+	/**

+	 * Adds the ports to the data management used for parameter passing.

+	 * @generated

+	 */

+	private void addPorts(){

+		this.inPorts.add

+			(new Port<org.eclipse.uml2.uml.Class>

+				(SELECTEDEOBJECT, org.eclipse.uml2.uml.Class.class));

+		this.inPorts.add

+			(new Port<UmlOperationList>

+				("operationsList", UmlOperationList.class));

+		this.inPorts.add

+			(new Port<UmlPropertyList>

+				("attributesList", UmlPropertyList.class));

+		this.inPorts.add

+			(new Port<String>

+				("className", String.class, "unspecified"));		

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.IDataManagement#

+	 * preselect(java.util.List)

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	@Override

+	public void preselect(List<EObject> selection) {

+		ArrayList<Property> properties = new ArrayList<Property>();

+		ArrayList<Operation> operations = new ArrayList<Operation>();

+		Class selectedClass = null;

+		for (EObject eObject : selection) {

+			if (eObject instanceof Property) properties.add((Property) eObject);

+			if (eObject instanceof Operation) operations.add((Operation) eObject);

+			if (eObject instanceof Class) selectedClass = (Class) eObject;

+		}		

+		getInPortByName(SELECTEDEOBJECT).setValue(selectedClass);

+		getInPortByName("attributesList").setValue(new UmlPropertyList(properties));

+		getInPortByName("operationsList").setValue(new UmlOperationList(operations));

+	}

+	

+	public String getComrelFilePath() {

+		String path = "";

+		final Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);

+		try {

+			if (bundle != null) {

+				path = FileLocator.toFileURL(bundle.getEntry(COMRELMODELS)).getFile();

+				path += this.comrelFileName;

+			} else {

+				path = new File(".").getCanonicalPath() 

+						+  COMRELMODELSSLASH + this.comrelFileName;

+			}

+		} catch(Exception e) {

+			e.printStackTrace();

+		}

+		return path;

+	}

+	

+	public class UmlOperationList implements IEObjectGetter{

+		

+		public UmlOperationList(ArrayList<Operation> umlOperations) {

+			super();

+			this.umlOperations = umlOperations;

+		}

+

+		private ArrayList<Operation> umlOperations = new ArrayList<Operation>();

+		

+		public ArrayList<Operation> getUmlOperations() {

+			return umlOperations;

+		}

+

+		public void setUmlOperations(ArrayList<Operation> umlOperations) {

+			this.umlOperations = umlOperations;

+		}

+

+		@Override

+		public EObject getEObject() {

+			return umlOperations.get(0);

+		}

+

+	}

+	

+	public class UmlPropertyList implements IEObjectGetter{

+		

+		public UmlPropertyList(ArrayList<Property> umlProperties) {

+			super();

+			this.umlProperties = umlProperties;

+		}

+

+		private ArrayList<Property> umlProperties = new ArrayList<Property>();

+		

+		public ArrayList<Property> getUmlProperties() {

+			return umlProperties;

+		}

+

+		public void setUmlProperties(ArrayList<Property> umlProperties) {

+			this.umlProperties = umlProperties;

+		}

+

+		@Override

+		public EObject getEObject() {

+			return umlProperties.get(0);

+		}

+

+	}

+	

+	

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..862b81c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringGuiHandler.java
@@ -0,0 +1,79 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.extractsubclass;

+

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;

+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;

+

+/**

+ * Class used for specifying gui topics of a specific model refactoring.

+ * @generated

+ */

+public class RefactoringGuiHandler implements IGuiHandler {

+

+	/**

+	 * Refactoring supported by the GuiHandler.

+	 * @generated

+	 */

+	Refactoring parent;

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return parent;

+	}

+

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+		

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#show()

+	 * @generated

+	 */

+	@Override

+	public RefactoringWizard show() {

+		return new org.eclipse.emf.refactor.refactorings.uml24.extractsubclass.RefactoringWizard

+		((RefactoringController)this.parent.getController());

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * showInMenu(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public boolean showInMenu(List<EObject> selection) {

+		int numberOfClasses = 0;

+		for(EObject o:selection){

+			if(null != o){

+				if (! 	  ((o instanceof org.eclipse.uml2.uml.Class)

+						|| (o instanceof org.eclipse.uml2.uml.Property)

+						|| (o instanceof org.eclipse.uml2.uml.Operation))) {

+					return false;

+				}

+				if (o instanceof org.eclipse.uml2.uml.Class) numberOfClasses++;

+			} 

+		}

+		return (numberOfClasses == 1);

+	}

+

+}	

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.java
new file mode 100644
index 0000000..c2fce49
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizard.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.extractsubclass;

+

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+

+/**

+ * Class used for providing an implementation of an LTK

+ * RefactoringWizard in EMF Refactor.

+ * @generated

+ */

+public class RefactoringWizard 

+    extends AbstractRefactoringWizard {

+		

+	/**

+	 * Default constructor implementation.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */					

+	public RefactoringWizard(IController controller) {

+		super(controller);

+	}

+

+	/**

+	 * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#

+	 * addUserInputPages()

+	 * @generated

+	 */

+	@Override

+	protected void addUserInputPages() {

+		addPage(new RefactoringWizardPage

+			(controller.getParent().getName(), (RefactoringController)controller));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..e995566
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractsubclass/RefactoringWizardPage.java
@@ -0,0 +1,125 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.extractsubclass;

+

+import java.util.List;

+

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.IInputPageButtonCreator;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.InputPageButtonLoader;

+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Listener;

+import org.eclipse.swt.widgets.Text;

+

+/**

+ * Class for setting model refactoring specific parameters

+ * by the user.

+ * @generated

+ */

+public class RefactoringWizardPage extends 

+				UserInputWizardPage implements Listener {

+	

+	/**

+	 * Controller of the EMF model refactoring.

+	 * @generated

+	 */			

+	private final RefactoringController controller;

+	

+	/**

+	 * Label for each parameter.

+	 * @generated

+	 */	

+	private Label classNameLabel;

+	

+	/**

+	 * TextField for each parameter.

+	 * @generated

+	 */

+	private Text classNameWidget;

+

+	/**

+	 * Default constructor using a name and the controller of the 

+	 * EMF model refactoring.

+	 * @param name Name of the WizardPage.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */

+	public RefactoringWizardPage

+		(String name, RefactoringController controller) {

+		super(name);

+		this.controller = controller;

+	}

+

+	/**

+	 * @see org.eclipse.swt.widgets.Listener#

+	 * handleEvent(org.eclipse.swt.widgets.Event)

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	@Override

+	public void handleEvent(Event event) {		

+		getWizard().getContainer().updateButtons();			

+						

+		if (classNameWidget != null) {

+			String className = classNameWidget.getText();

+			if (!className.isEmpty()){

+				((RefactoringDataManagement) 

+						this.controller.getDataManagementObject()).

+						getInPortByName("className").

+						setValue(className);

+			} else {

+				((RefactoringDataManagement) 

+						this.controller.getDataManagementObject()).

+						getInPortByName("className").

+						setValue("unspecified");

+			}

+		}

+

+	}

+	

+	/**

+	 * @see org.eclipse.jface.dialogs.IDialogPage#

+	 * createControl(org.eclipse.swt.widgets.Composite)

+	 * @generated

+	 */

+	@Override

+	public void createControl(Composite parent) {

+		Composite composite = new Composite(parent, SWT.NONE);

+		GridLayout gl = new GridLayout();

+		gl.numColumns = 2;

+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);

+		composite.setLayout(gl);

+			

+		

+		classNameLabel = new Label(composite, SWT.NONE);

+		classNameLabel.setText("Name of the new subclass: ");

+		classNameLabel.setEnabled(true);

+		

+		classNameWidget = new Text(composite, SWT.BORDER);

+		classNameWidget.setToolTipText

+				("value of variable 'className'");

+		classNameWidget.setEnabled(true);

+		classNameWidget.setLayoutData(gd);

+		classNameWidget.addListener(SWT.Modify, this);

+		classNameWidget.setFocus();

+		

+		List<IInputPageButtonCreator> buttonCreators = InputPageButtonLoader.iNSTANCE.getInputPageButtonCreatorClasses();

+		for(IInputPageButtonCreator creator : buttonCreators){

+			creator.createButton(composite, controller, (AbstractRefactoringWizard)this.getWizard());

+		}

+		

+		setControl(composite);

+	}

+	

+}

+	
\ No newline at end of file