refactoring EXTRACT CLASS added
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$1.class
new file mode 100644
index 0000000..0959aa4
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..5d96c6c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController.class
new file mode 100644
index 0000000..a542639
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..013a776
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..7d7463f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizard.class
new file mode 100644
index 0000000..24e7e32
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..57dc2e9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.class
new file mode 100644
index 0000000..5db94d7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.class
new file mode 100644
index 0000000..e2aa733
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel
new file mode 100644
index 0000000..a0d3852
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel
@@ -0,0 +1,63 @@
+<?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="extractclass" refId="comrel.extractclass" label="Extract Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="extractclass">
+ <refactoringUnits xsi:type="comrel:AtomicUnit" name="Create Associated Class" seqExecutionOrder="1" unitId="org.eclipse.emf.refactor.refactorings.uml24.createassociatedclass" label="Create Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.0">
+ <inputPorts name="roleName1" description="" type="java.lang.String"/>
+ <inputPorts name="associationName" description="" type="java.lang.String"/>
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ <inputPorts name="roleName2" description="" type="java.lang.String"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="2">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Attribute" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.1">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </refactoringUnit>
+ <singleInputPorts name="className" type="java.lang.String"/>
+ <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Property"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="3">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Operation" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.2">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </refactoringUnit>
+ <singleInputPorts name="className" type="java.lang.String"/>
+ <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="className" description="Name of the new associated class" type="java.lang.String"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="associationName" description="Name of the new association" type="java.lang.String"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="selectedEObject" type="org.eclipse.uml2.uml.Class"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="roleName1" description="Name of the new association end role" type="java.lang.String"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="roleName2" description="Name of the opposite association end role" type="java.lang.String"/>
+ </mainRefactoringUnit>
+ <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>
+ <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.2/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.1"/>
+ <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.6" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.4"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.5" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.4" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.2"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.3" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.3"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@refactoringUnits.2/@singleInputPorts.0"/>
+ <modelRefactorings name="Create Associated Class" refId="org.eclipse.emf.refactor.refactorings.uml24.createassociatedclass" label="Create Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="roleName1" description="" type="java.lang.String"/>
+ <inputPorts name="associationName" description="" type="java.lang.String"/>
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ <inputPorts name="roleName2" description="" type="java.lang.String"/>
+ </modelRefactorings>
+ <modelRefactorings name="Move Attribute" refId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </modelRefactorings>
+ <modelRefactorings name="Move Operation" refId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </modelRefactorings>
+</comrel:CompositeRefactoring>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel_diagram b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel_diagram
new file mode 100644
index 0000000..c14f079
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/extractclass.comrel_diagram
@@ -0,0 +1,265 @@
+<?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="_blQU0OnIEeC-qti3U75pWQ" type="Comrel" name="extractclass.comrel_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_dMFIsOnIEeC-qti3U75pWQ" type="2005" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dMHk8OnIEeC-qti3U75pWQ" type="5083"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dMIMAOnIEeC-qti3U75pWQ" type="7079"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dMIMAenIEeC-qti3U75pWQ" type="7080">
+ <children xmi:type="notation:Shape" xmi:id="_f0VkYOnIEeC-qti3U75pWQ" type="3074" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0VkYunIEeC-qti3U75pWQ" type="5050"/>
+ <children xmi:type="notation:Shape" xmi:id="_f0c5IOnIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0dgMOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f0dgMenIEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0c5IenIEeC-qti3U75pWQ" x="78" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f0dgMunIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0eHQOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f0eHQenIEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0dgM-nIEeC-qti3U75pWQ" x="156" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f0euUOnIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0euUunIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f0euU-nIEeC-qti3U75pWQ" x="-164" y="20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0euUenIEeC-qti3U75pWQ" x="102" y="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f0euVOnIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0fVYOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f0fVYenIEeC-qti3U75pWQ" x="-20" y="40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.3"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0euVenIEeC-qti3U75pWQ" x="162" y="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f0fVYunIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f0fVZOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f0fVZenIEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.4"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0fVY-nIEeC-qti3U75pWQ" x="-19" y="12"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0VkYenIEeC-qti3U75pWQ" x="63" y="215"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rd6PkOnIEeC-qti3U75pWQ" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rd6Pk-nIEeC-qti3U75pWQ" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rd6PlOnIEeC-qti3U75pWQ" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rd6PlenIEeC-qti3U75pWQ" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_tXvfAOnIEeC-qti3U75pWQ" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tXvfAunIEeC-qti3U75pWQ" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_tX0XgOnIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tX0-kOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tX0-kenIEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tX0XgenIEeC-qti3U75pWQ" x="132" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tX0-kunIEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tX1loOnIEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tX1loenIEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tX0-k-nIEeC-qti3U75pWQ" x="72" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tXvfAenIEeC-qti3U75pWQ" x="8" y="85"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_reCycOnIEeC-qti3U75pWQ" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_reDZgOnIEeC-qti3U75pWQ" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_reDZgenIEeC-qti3U75pWQ" x="40" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_reCycenIEeC-qti3U75pWQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_reCycunIEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_reCyc-nIEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_reCydOnIEeC-qti3U75pWQ" x="150" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0WtcQOnIEeC-qti3U75pWQ" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0WtcQunIEeC-qti3U75pWQ" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0WuDUOnIEeC-qti3U75pWQ" x="-133" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0WtcQenIEeC-qti3U75pWQ" x="90" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_rd6PkenIEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rd6PkunIEeC-qti3U75pWQ" x="423" y="107" width="373" height="278"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TNpUMOnJEeC-qti3U75pWQ" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TNpUM-nJEeC-qti3U75pWQ" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TNpUNOnJEeC-qti3U75pWQ" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TNp7QOnJEeC-qti3U75pWQ" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_VARvcOnJEeC-qti3U75pWQ" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VARvcunJEeC-qti3U75pWQ" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_VATkoOnJEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VATkounJEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VATko-nJEeC-qti3U75pWQ" x="-198" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VATkoenJEeC-qti3U75pWQ" x="71" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VATkpOnJEeC-qti3U75pWQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VAULsOnJEeC-qti3U75pWQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VAULsenJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VATkpenJEeC-qti3U75pWQ" x="147" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VARvcenJEeC-qti3U75pWQ" x="131" y="70"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_TNx3EOnJEeC-qti3U75pWQ" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TNyeIOnJEeC-qti3U75pWQ" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TNyeIenJEeC-qti3U75pWQ" x="-204" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_TNx3EenJEeC-qti3U75pWQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TNx3EunJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_TNx3E-nJEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TNx3FOnJEeC-qti3U75pWQ" x="210" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aGBhQOnJEeC-qti3U75pWQ" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aGCIUOnJEeC-qti3U75pWQ" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aGCIUenJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@singleInputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aGBhQenJEeC-qti3U75pWQ" x="285" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_TNpUMenJEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="extractclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TNpUMunJEeC-qti3U75pWQ" x="807" y="104" width="403" height="283"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_dCFCsOnJEeC-qti3U75pWQ" type="3028">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dCFCtenJEeC-qti3U75pWQ" type="5023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dCFCtunJEeC-qti3U75pWQ" x="-184" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_dCFCsenJEeC-qti3U75pWQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dCFCsunJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_dCFCs-nJEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dCFCtOnJEeC-qti3U75pWQ" x="1201" y="-19"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_dvosQOnJEeC-qti3U75pWQ" type="3028">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dvpTUOnJEeC-qti3U75pWQ" type="5023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dvpTUenJEeC-qti3U75pWQ" x="-165" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_dvosQenJEeC-qti3U75pWQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dvosQunJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_dvosQ-nJEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dvosROnJEeC-qti3U75pWQ" x="985" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_spk8AOnJEeC-qti3U75pWQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_spk8AunJEeC-qti3U75pWQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_spk8A-nJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_spk8AenJEeC-qti3U75pWQ" x="721" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tRdbYOnJEeC-qti3U75pWQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tRdbYunJEeC-qti3U75pWQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tReCcOnJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.3"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tRdbYenJEeC-qti3U75pWQ" x="481" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tvPjkOnJEeC-qti3U75pWQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tvPjkunJEeC-qti3U75pWQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tvPjk-nJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.4"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tvPjkenJEeC-qti3U75pWQ" x="301" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uLOU8OnJEeC-qti3U75pWQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uLO8AOnJEeC-qti3U75pWQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uLO8AenJEeC-qti3U75pWQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.5"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uLOU8enJEeC-qti3U75pWQ" x="193" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_unT0AOnJEeC-qti3U75pWQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_unT0AunJEeC-qti3U75pWQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unT0A-nJEeC-qti3U75pWQ" x="-136" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="extractclass.comrel#//@mainRefactoringUnit/@inputPorts.6"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_unT0AenJEeC-qti3U75pWQ" x="103" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_dMFIsenIEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:SequentialUnit" href="extractclass.comrel#//@mainRefactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dMFIsunIEeC-qti3U75pWQ" x="47" y="117" width="1238" height="532"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_blQU0enIEeC-qti3U75pWQ"/>
+ <element xmi:type="comrel:CompositeRefactoring" href="extractclass.comrel#/"/>
+ <edges xmi:type="notation:Connector" xmi:id="_7VM4YOnIEeC-qti3U75pWQ" type="4003" source="_reCycOnIEeC-qti3U75pWQ" target="_tX0XgOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_7VM4YenIEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="extractclass.comrel#//@portMappings.0"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7VM4YunIEeC-qti3U75pWQ" points="[3, 10, 1, -183]$[3, 183, 1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_8UfLIOnIEeC-qti3U75pWQ" type="4001" source="_0WtcQOnIEeC-qti3U75pWQ" target="_tX0-kunIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_8UfLIenIEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8UfLIunIEeC-qti3U75pWQ" points="[7, 10, -1, -183]$[7, 183, -1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YKXs4OnJEeC-qti3U75pWQ" type="4003" source="_TNx3EOnJEeC-qti3U75pWQ" target="_VATkoOnJEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YKYT8OnJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="extractclass.comrel#//@portMappings.2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YKYT8enJEeC-qti3U75pWQ" points="[0, 10, 0, -182]$[0, 188, 0, -4]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YKaJIOnJEeC-qti3U75pWQ" id="(0.5,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a3wgMOnJEeC-qti3U75pWQ" type="4001" source="_aGBhQOnJEeC-qti3U75pWQ" target="_VATkpOnJEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_a3wgMenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.3"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a3wgMunJEeC-qti3U75pWQ" points="[5, 10, -107, -188]$[113, 188, 1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_f3nFYOnJEeC-qti3U75pWQ" type="4002" source="_dvosQOnJEeC-qti3U75pWQ" target="_reCycOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_f3nFYenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="extractclass.comrel#//@portMappings.4"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f3nFYunJEeC-qti3U75pWQ" points="[0, 10, -22, -331]$[22, 331, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_imoQYOnJEeC-qti3U75pWQ" type="4002" source="_dCFCsOnJEeC-qti3U75pWQ" target="_TNx3EOnJEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_imoQYenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="extractclass.comrel#//@portMappings.5"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_imoQYunJEeC-qti3U75pWQ" points="[10, 7, -415, -331]$[415, 338, -10, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wFV4QOnJEeC-qti3U75pWQ" type="4001" source="_unT0AOnJEeC-qti3U75pWQ" target="_f0fVYunIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_wFV4QenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.6"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wFV4QunJEeC-qti3U75pWQ" points="[-9, 10, 400, -470]$[-412, 470, -3, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yKME4OnJEeC-qti3U75pWQ" type="4001" source="_uLOU8OnJEeC-qti3U75pWQ" target="_f0c5IOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_yKME4enJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.7"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yKME4unJEeC-qti3U75pWQ" points="[-8, 10, 332, -439]$[-340, 439, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1kAgYOnJEeC-qti3U75pWQ" type="4001" source="_tvPjkOnJEeC-qti3U75pWQ" target="_f0euUOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1kAgYenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1kAgYunJEeC-qti3U75pWQ" points="[-8, 10, 366, -497]$[-375, 517, -1, 10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3CaYEOnJEeC-qti3U75pWQ" type="4001" source="_tRdbYOnJEeC-qti3U75pWQ" target="_f0dgMunIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3CaYEenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.9"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3CaYEunJEeC-qti3U75pWQ" points="[-8, 10, 310, -439]$[-320, 439, -2, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5dpEYOnJEeC-qti3U75pWQ" type="4001" source="_spk8AOnJEeC-qti3U75pWQ" target="_f0euVOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_5dpEYenJEeC-qti3U75pWQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.10"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5dpEYunJEeC-qti3U75pWQ" points="[-6, 10, 270, -497]$[-278, 517, -2, 10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_biG7YOniEeC_8fH8kZFZGw" type="4001" source="_spk8AOnJEeC-qti3U75pWQ" target="_0WtcQOnIEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_biG7YeniEeC_8fH8kZFZGw" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.11"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_biG7YuniEeC_8fH8kZFZGw" points="[1, 10, -53, -331]$[55, 331, 1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dKsp0OniEeC_8fH8kZFZGw" type="4001" source="_spk8AOnJEeC-qti3U75pWQ" target="_aGBhQOnJEeC-qti3U75pWQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_dKsp0eniEeC_8fH8kZFZGw" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="extractclass.comrel#//@portMappings.12"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dKsp0uniEeC_8fH8kZFZGw" points="[10, 5, -608, -333]$[617, 328, -1, -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 1f38e18..a8ac11e 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
@@ -77,6 +77,12 @@
menulabel="Create Class with Attributes from Parameter List"
namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
<refactoring
+ controller="org.eclipse.emf.refactor.refactorings.uml24.extractclass.RefactoringController"
+ gui="org.eclipse.emf.refactor.refactorings.uml24.extractclass.RefactoringGuiHandler"
+ id="org.eclipse.emf.refactor.refactorings.uml24.extractclass"
+ menulabel="Extract Class"
+ 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/extractclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController.java
new file mode 100644
index 0000000..edfea1c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringController.java
@@ -0,0 +1,294 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.extractclass;
+
+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.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();
+ String associationName =
+ (String) dataManagement.getInPortByName("associationName").getValue();
+ String roleName1 =
+ (String) dataManagement.getInPortByName("roleName1").getValue();
+ String roleName2 =
+ (String) dataManagement.getInPortByName("roleName2").getValue();
+ // begin prepare and execute comrel interpreter
+ ComrelInterpreter interpreter = new ComrelInterpreter(selectedEObject);
+ interpreter.loadComrelModel(dataManagement.getComrelFilePath());
+ setRootPortValues(interpreter, selectedEObject,
+ attributesList,
+ operationsList,
+ className,
+ associationName,
+ roleName1,
+ roleName2);
+ 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,
+ String associationName,
+ String roleName1,
+ String roleName2) {
+ 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);
+ }
+ if (ip.getName().equals("associationName")) {
+ ((SingleInputPort) ip).setValue(associationName);
+ }
+ if (ip.getName().equals("roleName1")) {
+ ((SingleInputPort) ip).setValue(roleName1);
+ }
+ if (ip.getName().equals("roleName2")) {
+ ((SingleInputPort) ip).setValue(roleName2);
+ }
+ }
+ }
+ };
+ }
+
+ /**
+ * 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/extractclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..dd7ccb9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringDataManagement.java
@@ -0,0 +1,111 @@
+
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.extractclass;
+
+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;
+
+/**
+ * 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 = "extractclass.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"));
+ this.inPorts.add
+ (new Port<String>
+ ("associationName", String.class, "unspecified"));
+ this.inPorts.add
+ (new Port<String>
+ ("roleName1", String.class, "unspecified"));
+ this.inPorts.add
+ (new Port<String>
+ ("roleName2", 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;
+ }
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..636c64c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/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.extractclass;
+
+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.extractclass.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/extractclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizard.java
new file mode 100644
index 0000000..52532e6
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/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.extractclass;
+
+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/extractclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..c389295
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/RefactoringWizardPage.java
@@ -0,0 +1,234 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.extractclass;
+
+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;
+ /**
+ * Label for each parameter.
+ * @generated
+ */
+ private Label associationNameLabel;
+
+ /**
+ * TextField for each parameter.
+ * @generated
+ */
+ private Text associationNameWidget;
+ /**
+ * Label for each parameter.
+ * @generated
+ */
+ private Label roleName1Label;
+
+ /**
+ * TextField for each parameter.
+ * @generated
+ */
+ private Text roleName1Widget;
+ /**
+ * Label for each parameter.
+ * @generated
+ */
+ private Label roleName2Label;
+
+ /**
+ * TextField for each parameter.
+ * @generated
+ */
+ private Text roleName2Widget;
+
+ /**
+ * 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");
+ }
+ }
+ if (associationNameWidget != null) {
+ String associationName = associationNameWidget.getText();
+ if (!associationName.isEmpty()){
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("associationName").
+ setValue(associationName);
+ } else {
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("associationName").
+ setValue("unspecified");
+ }
+ }
+ if (roleName1Widget != null) {
+ String roleName1 = roleName1Widget.getText();
+ if (!roleName1.isEmpty()){
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("roleName1").
+ setValue(roleName1);
+ } else {
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("roleName1").
+ setValue("unspecified");
+ }
+ }
+ if (roleName2Widget != null) {
+ String roleName2 = roleName2Widget.getText();
+ if (!roleName2.isEmpty()){
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("roleName2").
+ setValue(roleName2);
+ } else {
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("roleName2").
+ 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 associated class: ");
+ 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();
+
+
+ associationNameLabel = new Label(composite, SWT.NONE);
+ associationNameLabel.setText("Name of the new association: ");
+ associationNameLabel.setEnabled(true);
+
+ associationNameWidget = new Text(composite, SWT.BORDER);
+ associationNameWidget.setToolTipText
+ ("value of variable 'associationName'");
+ associationNameWidget.setEnabled(true);
+ associationNameWidget.setLayoutData(gd);
+ associationNameWidget.addListener(SWT.Modify, this);
+
+
+ roleName1Label = new Label(composite, SWT.NONE);
+ roleName1Label.setText("Name of the new association end role: ");
+ roleName1Label.setEnabled(true);
+
+ roleName1Widget = new Text(composite, SWT.BORDER);
+ roleName1Widget.setToolTipText
+ ("value of variable 'roleName1'");
+ roleName1Widget.setEnabled(true);
+ roleName1Widget.setLayoutData(gd);
+ roleName1Widget.addListener(SWT.Modify, this);
+
+
+ roleName2Label = new Label(composite, SWT.NONE);
+ roleName2Label.setText("Name of the opposite association end role: ");
+ roleName2Label.setEnabled(true);
+
+ roleName2Widget = new Text(composite, SWT.BORDER);
+ roleName2Widget.setToolTipText
+ ("value of variable 'roleName2'");
+ roleName2Widget.setEnabled(true);
+ roleName2Widget.setLayoutData(gd);
+ roleName2Widget.addListener(SWT.Modify, this);
+
+ 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
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.java
new file mode 100644
index 0000000..5717367
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlOperationList.java
@@ -0,0 +1,32 @@
+package org.eclipse.emf.refactor.refactorings.uml24.extractclass;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Operation;
+
+import comrel.interpreter.IEObjectGetter;
+
+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);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.java
new file mode 100644
index 0000000..0344435
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/extractclass/UmlPropertyList.java
@@ -0,0 +1,32 @@
+package org.eclipse.emf.refactor.refactorings.uml24.extractclass;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Property;
+
+import comrel.interpreter.IEObjectGetter;
+
+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);
+ }
+
+}