refactorings REMOVE PARAMETER and INTRODUCE PARAMETER OBJECT added
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$1.class
new file mode 100644
index 0000000..0cc759d
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..daed957
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.class
new file mode 100644
index 0000000..4be17a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringDataManagement.class
new file mode 100644
index 0000000..c79a9a5
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringGuiHandler.class
new file mode 100644
index 0000000..6c9d798
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizard.class
new file mode 100644
index 0000000..b5db836
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizardPage.class
new file mode 100644
index 0000000..ee4aa70
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel
new file mode 100644
index 0000000..255a5f0
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel
@@ -0,0 +1,68 @@
+<?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="introduceparameterobject" refId="comrel.introduceparameterobject" label="Introduce Parameter Object" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="introduceparameterobject">
+ <helperUnits xsi:type="comrel:MultiFeatureUnit" name="Get Operations Having Parameters" helperUnitId="comrel.getoperationshavingparameters" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.0">
+ <inputPort name="parameterList" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <outputPort name="operations" type="org.eclipse.uml2.uml.Operation"/>
+ </helperUnits>
+ <helperUnits xsi:type="comrel:MultiFeatureUnit" name="Get Parameters Equal To Parameters" helperUnitId="comrel.getparametersequaltoparameters" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.1">
+ <inputPort name="parameterList" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <outputPort name="parameters" type="org.eclipse.uml2.uml.Parameter"/>
+ </helperUnits>
+ <refactoringUnits xsi:type="comrel:AtomicUnit" name="Create Class with Attributes from Parameter List" seqExecutionOrder="1" unitId="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist" label="Create Class with Attributes from Parameter List" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.0">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="2">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Add Parameter" unitId="org.eclipse.emf.refactor.refactorings.uml24.addparameter" label="Add Parameter" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.1">
+ <inputPorts name="paramType" description="" type="java.lang.String"/>
+ <inputPorts name="paramName" description="" type="java.lang.String"/>
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ </refactoringUnit>
+ <singleInputPorts name="paramName" type="java.lang.String"/>
+ <singleInputPorts name="paramType" type="java.lang.String"/>
+ <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Operation"/>
+ </refactoringUnits>
+ <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="3">
+ <refactoringUnit xsi:type="comrel:AtomicUnit" name="Remove Parameter" unitId="org.eclipse.emf.refactor.refactorings.uml24.removeparameter" label="Remove Parameter" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.2">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Parameter"/>
+ </refactoringUnit>
+ <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Parameter"/>
+ </refactoringUnits>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="paramName" type="java.lang.String"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="className" type="java.lang.String"/>
+ <inputPorts xsi:type="comrel:SingleInputPort" name="selectedEObject" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ </mainRefactoringUnit>
+ <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.2"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.1" 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/@inputPorts.2" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.2" target="//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>
+ <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.0/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>
+ <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.1/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.1"/>
+ <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <modelRefactorings name="Create Class with Attributes from Parameter List" refId="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist" label="Create Class with Attributes from Parameter List" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <inputPorts name="className" description="" type="java.lang.String"/>
+ </modelRefactorings>
+ <modelRefactorings name="Add Parameter" refId="org.eclipse.emf.refactor.refactorings.uml24.addparameter" label="Add Parameter" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="paramType" description="" type="java.lang.String"/>
+ <inputPorts name="paramName" description="" type="java.lang.String"/>
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>
+ </modelRefactorings>
+ <modelRefactorings name="Remove Parameter" refId="org.eclipse.emf.refactor.refactorings.uml24.removeparameter" label="Remove Parameter" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Parameter"/>
+ </modelRefactorings>
+ <helper xsi:type="comrel:MultiFeatureHelper" name="Get Operations Having Parameters" helperId="comrel.getoperationshavingparameters" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="parameterList" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <outputPort name="operations" type="org.eclipse.uml2.uml.Operation"/>
+ </helper>
+ <helper xsi:type="comrel:MultiFeatureHelper" name="Get Parameters Equal To Parameters" helperId="comrel.getparametersequaltoparameters" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ <inputPort name="parameterList" type="org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList"/>
+ <outputPort name="parameters" type="org.eclipse.uml2.uml.Parameter"/>
+ </helper>
+</comrel:CompositeRefactoring>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel_diagram b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel_diagram
new file mode 100644
index 0000000..182243f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/introduceparameterobject.comrel_diagram
@@ -0,0 +1,252 @@
+<?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="_xzeyQOoPEeC6s9hVlgOvdQ" type="Comrel" name="introduceparameterobject.comrel_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_51jLQOoPEeC6s9hVlgOvdQ" type="2005" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_51jLQ-oPEeC6s9hVlgOvdQ" type="5083"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_51jLROoPEeC6s9hVlgOvdQ" type="7079">
+ <children xmi:type="notation:Shape" xmi:id="_fGIs4OoQEeC6s9hVlgOvdQ" type="3062" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fGIs4uoQEeC6s9hVlgOvdQ" type="5045"/>
+ <children xmi:type="notation:Shape" xmi:id="_fGR20OoQEeC6s9hVlgOvdQ" type="3013" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fGR20uoQEeC6s9hVlgOvdQ" type="5010">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fGR20-oQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fGR20eoQEeC6s9hVlgOvdQ" x="100" y="-19"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_fGR21OoQEeC6s9hVlgOvdQ" type="3015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fGR22eoQEeC6s9hVlgOvdQ" type="5012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fGR22uoQEeC6s9hVlgOvdQ" x="-162" y="20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_fGR21eoQEeC6s9hVlgOvdQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fGR21uoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_fGR21-oQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:MultiOutputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.0/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fGR22OoQEeC6s9hVlgOvdQ" x="264" y="39"/>
+ </children>
+ <element xmi:type="comrel:MultiFeatureUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fGIs4eoQEeC6s9hVlgOvdQ" x="344" y="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jN6akOoQEeC6s9hVlgOvdQ" type="3062" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jN6akuoQEeC6s9hVlgOvdQ" type="5045"/>
+ <children xmi:type="notation:Shape" xmi:id="_jN6ak-oQEeC6s9hVlgOvdQ" type="3013" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jN6aleoQEeC6s9hVlgOvdQ" type="5010">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jN6aluoQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jN6alOoQEeC6s9hVlgOvdQ" x="146" y="-19"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_jN6al-oQEeC6s9hVlgOvdQ" type="3015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jN6anOoQEeC6s9hVlgOvdQ" type="5012">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jN6aneoQEeC6s9hVlgOvdQ" y="5"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_jN6amOoQEeC6s9hVlgOvdQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jN6ameoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_jN6amuoQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:MultiOutputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.1/@outputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jN6am-oQEeC6s9hVlgOvdQ" x="216" y="39"/>
+ </children>
+ <element xmi:type="comrel:MultiFeatureUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@helperUnits.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jN6akeoQEeC6s9hVlgOvdQ" x="914" y="94"/>
+ </children>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_51jLReoPEeC6s9hVlgOvdQ" type="7080">
+ <children xmi:type="notation:Shape" xmi:id="__Fok0OoPEeC6s9hVlgOvdQ" type="3074" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="__Fok0uoPEeC6s9hVlgOvdQ" type="5050"/>
+ <children xmi:type="notation:Shape" xmi:id="__Fok0-oPEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="__Fok1eoPEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__Fok1uoPEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Fok1OoPEeC6s9hVlgOvdQ" x="38" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__Fok1-oPEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="__Fok2eoPEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__Fok2uoPEeC6s9hVlgOvdQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Fok2OoPEeC6s9hVlgOvdQ" x="338" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Fok0eoPEeC6s9hVlgOvdQ" x="20" y="182"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DwOrsOoQEeC6s9hVlgOvdQ" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DwOrs-oQEeC6s9hVlgOvdQ" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DwOrtOoQEeC6s9hVlgOvdQ" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DwOrteoQEeC6s9hVlgOvdQ" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_E7gzEOoQEeC6s9hVlgOvdQ" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E7gzEuoQEeC6s9hVlgOvdQ" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_E7p9AOoQEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E7p9AuoQEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E7p9A-oQEeC6s9hVlgOvdQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E7p9AeoQEeC6s9hVlgOvdQ" x="72" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E7p9BOoQEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E7p9BuoQEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E7p9B-oQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E7p9BeoQEeC6s9hVlgOvdQ" x="156" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E7p9COoQEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E7p9CuoQEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E7p9C-oQEeC6s9hVlgOvdQ" x="-198" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E7p9CeoQEeC6s9hVlgOvdQ" x="24" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E7gzEeoQEeC6s9hVlgOvdQ" x="176" y="73"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_DwX1oOoQEeC6s9hVlgOvdQ" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DwX1peoQEeC6s9hVlgOvdQ" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DwX1puoQEeC6s9hVlgOvdQ" x="-204" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_DwX1oeoQEeC6s9hVlgOvdQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DwX1ouoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_DwX1o-oQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DwX1pOoQEeC6s9hVlgOvdQ" x="144" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PNjDkOoQEeC6s9hVlgOvdQ" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PNjDkuoQEeC6s9hVlgOvdQ" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PNjDk-oQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PNjDkeoQEeC6s9hVlgOvdQ" x="396" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P8QjsOoQEeC6s9hVlgOvdQ" type="3023" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P8QjsuoQEeC6s9hVlgOvdQ" type="5020">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P8Qjs-oQEeC6s9hVlgOvdQ" x="-20" y="-40"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P8QjseoQEeC6s9hVlgOvdQ" x="258" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_DwOrseoQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DwOrsuoQEeC6s9hVlgOvdQ" x="476" y="83" width="553" height="238"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Xt6iIOoQEeC6s9hVlgOvdQ" type="3065" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xt6iI-oQEeC6s9hVlgOvdQ" type="5061"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xt6iJOoQEeC6s9hVlgOvdQ" type="7049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xt6iJeoQEeC6s9hVlgOvdQ" type="7050">
+ <children xmi:type="notation:Shape" xmi:id="_aoCJ4OoQEeC6s9hVlgOvdQ" type="3068" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoCJ4uoQEeC6s9hVlgOvdQ" type="5048"/>
+ <children xmi:type="notation:Shape" xmi:id="_aoCJ4-oQEeC6s9hVlgOvdQ" type="3035" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aoCJ5eoQEeC6s9hVlgOvdQ" type="5026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoCJ5uoQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoCJ5OoQEeC6s9hVlgOvdQ" x="41" y="-19"/>
+ </children>
+ <element xmi:type="comrel:AtomicUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aoCJ4eoQEeC6s9hVlgOvdQ" x="26" y="44"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_XuETIOoQEeC6s9hVlgOvdQ" type="3024">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XuETJeoQEeC6s9hVlgOvdQ" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XuETJuoQEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_XuETIeoQEeC6s9hVlgOvdQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XuETIuoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_XuETI-oQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:MultiInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XuETJOoQEeC6s9hVlgOvdQ" x="78" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Xt6iIeoQEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:SingleQueuedUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@refactoringUnits.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xt6iIuoQEeC6s9hVlgOvdQ" x="1052" y="85" width="325" height="236"/>
+ </children>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7jpEwOoPEeC6s9hVlgOvdQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7jpEwuoPEeC6s9hVlgOvdQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7jpEw-oPEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@inputPorts.0"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7jpEweoPEeC6s9hVlgOvdQ" x="882" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8GJ78OoPEeC6s9hVlgOvdQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8GJ78uoPEeC6s9hVlgOvdQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8GJ78-oPEeC6s9hVlgOvdQ" x="40" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@inputPorts.1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8GJ78eoPEeC6s9hVlgOvdQ" x="528" y="-19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8pRQEOoPEeC6s9hVlgOvdQ" type="3027" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8pRQEuoPEeC6s9hVlgOvdQ" type="5022">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8pRQE-oPEeC6s9hVlgOvdQ" x="-248" y="-20"/>
+ </children>
+ <element xmi:type="comrel:SingleInputPort" href="introduceparameterobject.comrel#//@mainRefactoringUnit/@inputPorts.2"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8pRQEeoPEeC6s9hVlgOvdQ" x="258" y="-19"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_51jLQeoPEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:SequentialUnit" href="introduceparameterobject.comrel#//@mainRefactoringUnit"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_51jLQuoPEeC6s9hVlgOvdQ" x="42" y="96" width="1411" height="691"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_xzeyQeoPEeC6s9hVlgOvdQ"/>
+ <element xmi:type="comrel:CompositeRefactoring" href="introduceparameterobject.comrel#/"/>
+ <edges xmi:type="notation:Connector" xmi:id="_SrE6YOoQEeC6s9hVlgOvdQ" type="4003" source="_DwX1oOoQEeC6s9hVlgOvdQ" target="_E7p9COoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_SrE6YeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.0"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SrE6YuoQEeC6s9hVlgOvdQ" points="[10, -8, -56, -185]$[66, -8, 0, -185]$[66, 167, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_T-Y8YOoQEeC6s9hVlgOvdQ" type="4001" source="_P8QjsOoQEeC6s9hVlgOvdQ" target="_E7p9AOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_T-Y8YeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.1"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T-Y8YuoQEeC6s9hVlgOvdQ" points="[8, 10, 0, -281]$[8, 288, 0, -3]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T-Y8Y-oQEeC6s9hVlgOvdQ" id="(0.5,0.15)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VO3s0OoQEeC6s9hVlgOvdQ" type="4001" source="_PNjDkOoQEeC6s9hVlgOvdQ" target="_E7p9BOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_VO3s0eoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.2"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VO3s0uoQEeC6s9hVlgOvdQ" points="[-10, 0, 44, -177]$[-54, 0, 0, -177]$[-54, 167, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cMUAEOoQEeC6s9hVlgOvdQ" type="4003" source="_XuETIOoQEeC6s9hVlgOvdQ" target="_aoCJ4-oQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_cMUAEeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiSinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.3"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cMUAEuoQEeC6s9hVlgOvdQ" points="[-2, 10, 43, -246]$[-45, 246, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nyQIcOoQEeC6s9hVlgOvdQ" type="4001" source="_8pRQEOoPEeC6s9hVlgOvdQ" target="__Fok0-oPEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_nyQIceoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.4"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nyQIcuoQEeC6s9hVlgOvdQ" points="[-4, 10, 186, -478]$[-192, 478, -2, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pk0SQOoQEeC6s9hVlgOvdQ" type="4001" source="_8pRQEOoPEeC6s9hVlgOvdQ" target="_fGR20OoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_pk0SQeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.5"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pk0SQuoQEeC6s9hVlgOvdQ" points="[10, 7, -186, -143]$[193, 140, -3, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_q1TCsOoQEeC6s9hVlgOvdQ" type="4001" source="_8pRQEOoPEeC6s9hVlgOvdQ" target="_jN6ak-oQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_q1TCseoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.6"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q1TCsuoQEeC6s9hVlgOvdQ" points="[10, 1, -916, -155]$[923, 146, -3, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_s_9jcOoQEeC6s9hVlgOvdQ" type="4002" source="_fGR21OoQEeC6s9hVlgOvdQ" target="_DwX1oOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_s_9jceoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="introduceparameterobject.comrel#//@portMappings.7"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s_9jcuoQEeC6s9hVlgOvdQ" points="[0, 10, -13, -161]$[13, 171, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s_9jc-oQEeC6s9hVlgOvdQ" id="(0.55,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_txgVIOoQEeC6s9hVlgOvdQ" type="4002" source="_jN6al-oQEeC6s9hVlgOvdQ" target="_XuETIOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_txgVIeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:MultiPortMapping" href="introduceparameterobject.comrel#//@portMappings.8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_txgVIuoQEeC6s9hVlgOvdQ" points="[-1, 10, 16, -167]$[-16, 167, 1, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_w8cAEOoQEeC6s9hVlgOvdQ" type="4001" source="_8GJ78OoPEeC6s9hVlgOvdQ" target="__Fok1-oPEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_w8cAEeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.9"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8cAEuoQEeC6s9hVlgOvdQ" points="[-10, 6, 150, -482]$[-238, 165, -78, -323]$[-163, 478, -3, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yMeroOoQEeC6s9hVlgOvdQ" type="4001" source="_8GJ78OoPEeC6s9hVlgOvdQ" target="_P8QjsOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_yMeroeoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.10"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yMerouoQEeC6s9hVlgOvdQ" points="[10, 6, -230, -383]$[224, 135, -16, -254]$[239, 379, -1, -10]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qBCzkAFvEeGYAetbqd8koQ" id="(0.85,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zewL0OoQEeC6s9hVlgOvdQ" type="4001" source="_7jpEwOoPEeC6s9hVlgOvdQ" target="_PNjDkOoQEeC6s9hVlgOvdQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_zewL0eoQEeC6s9hVlgOvdQ" fontName="Segoe UI"/>
+ <element xmi:type="comrel:SinglePortMapping" href="introduceparameterobject.comrel#//@portMappings.11"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zewL0uoQEeC6s9hVlgOvdQ" points="[-4, 10, 2, -379]$[-4, 379, 2, -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 14d5244..1f38e18 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
@@ -82,5 +82,12 @@
id="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass"
menulabel="Extract Superclass"
namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+ <refactoring
+ controller="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringController"
+ gui="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringGuiHandler"
+ id="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject"
+ menulabel="Introduce Parameter Object"
+ namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+
</extension>
</plugin>
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.java
new file mode 100644
index 0000000..0a030b2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringController.java
@@ -0,0 +1,299 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject;
+
+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.compositional.UmlUtils;
+import org.eclipse.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList;
+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.Parameter;
+
+import comrel.InputPort;
+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 {
+ ArrayList<org.eclipse.uml2.uml.Parameter> selectedEObjects =
+ ((UmlParameterList) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue()).
+ getUmlParameters();
+ String className =
+ (String) dataManagement.getInPortByName("className").getValue();
+ String paramName =
+ (String) dataManagement.getInPortByName("paramName").getValue();
+ // begin prepare and execute comrel interpreter
+ ComrelInterpreter interpreter = new ComrelInterpreter(selectedEObjects.get(0));
+ interpreter.loadComrelModel(dataManagement.getComrelFilePath());
+ setRootPortValues(interpreter, selectedEObjects,
+ className,
+ paramName);
+ interpreter.execute();
+ // end prepare and execute comrel interpreter
+ stopTimeRecording();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void setRootPortValues(
+ ComrelInterpreter interpreter,
+ ArrayList<Parameter> selectedEObjects,
+ String className,
+ String parameterName) {
+ RefactoringUnit rootRefactoringUnit = interpreter.getRootRefactoringUnit();
+ for (InputPort ip : rootRefactoringUnit.getAllInputPorts()) {
+ System.out.println(ip.getName());
+ if (ip.getName().equals("selectedEObject")) {
+ ((SingleInputPort) ip).setValue(new UmlParameterList(selectedEObjects));
+ System.out.println("single value set");
+ }
+ if (ip.getName().equals("className")) {
+ ((SingleInputPort) ip).setValue(className);
+ System.out.println("single value set");
+ }
+ if (ip.getName().equals("paramName")) {
+ ((SingleInputPort) ip).setValue(parameterName);
+ System.out.println("single value set");
+ }
+ }
+ }
+ };
+ }
+
+ /**
+ * 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();
+ ArrayList<org.eclipse.uml2.uml.Parameter> selectedEObjects =
+ ((UmlParameterList) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue()).
+ getUmlParameters();
+ // test: the selected parameters must be owned by one single operation
+ String msg = "The selected parameters do not belong to one operation!";
+ ArrayList<Operation> operations = new ArrayList<Operation>();
+ for (Parameter param : selectedEObjects) {
+ Operation op = param.getOperation();
+ if (! operations.contains(op)) operations.add(op);
+ }
+ if (operations.size() > 1) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: each selected parameter must be an input parameter
+ msg = "This refactoring can only be applied on input parameters!";
+ for (Parameter param : selectedEObjects) {
+ if (! UmlUtils.isInputParameter(param)) {
+ result.addFatalError(msg);
+ return result;
+ }
+ }
+ // test: the owning operation must be owned by a class
+ msg = "This refactoring can only be applied on parameters whose " +
+ "owning operation is owned by a class!";
+ Operation owningOperation = operations.get(0);
+ if (owningOperation.getClass_() == null) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the owning class must be owned by a package
+ msg = "This refactoring can only be applied on parameters whose " +
+ "owning class is owned by a package!";
+ Class owningClass = owningOperation.getClass_();
+ if (owningClass.getPackage() == null) {
+ result.addFatalError(msg);
+ }
+ 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(){
+ startTimeRecording();
+ RefactoringStatus result = new RefactoringStatus();
+ ArrayList<org.eclipse.uml2.uml.Parameter> selectedEObjects =
+ ((UmlParameterList) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue()).
+ getUmlParameters();
+ String className =
+ (String) dataManagement.getInPortByName("className").getValue();
+ String parameterName =
+ (String) dataManagement.getInPortByName("paramName").getValue();
+ // test: there must be no class in the model named as specified in 'className'
+ String msg = "There is already a class in the model named '" + className + "'!";
+ ArrayList<Class> allClasses =
+ UmlUtils.getAllClasses(selectedEObjects.get(0).getModel());
+ for (Class cls : allClasses) {
+ if ((cls.getName() != null) && (cls.getName().equals(className))) {
+ result.addFatalError(msg);
+ break;
+ }
+ }
+ // test: no selected parameter must be named as specified in 'parameterName'
+ msg = "One selected parameter is already named '" + parameterName + "'!";
+ for (Parameter param : selectedEObjects) {
+ if ((param.getName() != null) && (param.getName().equals(parameterName))) {
+ result.addFatalError(msg);
+ break;
+ }
+ }
+ 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/introduceparameterobject/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringDataManagement.java
new file mode 100644
index 0000000..92025fd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringDataManagement.java
@@ -0,0 +1,93 @@
+
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject;
+
+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.emf.refactor.refactorings.uml24.createclasswithattributesfromparameterlist.UmlParameterList;
+import org.eclipse.uml2.uml.Parameter;
+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 = "introduceparameterobject.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<UmlParameterList>
+ (SELECTEDEOBJECT, UmlParameterList.class));
+ this.inPorts.add
+ (new Port<String>
+ ("className", String.class, "unspecified"));
+ this.inPorts.add
+ (new Port<String>
+ ("paramName", 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<Parameter> umlParameters = new ArrayList<Parameter>();
+ for (EObject eObject : selection) {
+ if (eObject instanceof Parameter) umlParameters.add((Parameter) eObject);
+ }
+ getInPortByName(SELECTEDEOBJECT).setValue(new UmlParameterList(umlParameters));
+ }
+
+ 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/introduceparameterobject/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringGuiHandler.java
new file mode 100644
index 0000000..fee5afd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringGuiHandler.java
@@ -0,0 +1,78 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject;
+
+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.introduceparameterobject.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) {
+ if (selection.size() <= 1) return false;
+ boolean onlyParameters = true;
+ for(EObject o:selection){
+ if(null != o){
+ if (! (o instanceof org.eclipse.uml2.uml.Parameter)) {
+ onlyParameters = false;
+ break;
+ }
+ }
+ }
+ return onlyParameters;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizard.java
new file mode 100644
index 0000000..363eefd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/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.introduceparameterobject;
+
+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/introduceparameterobject/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizardPage.java
new file mode 100644
index 0000000..7c5efef
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/introduceparameterobject/RefactoringWizardPage.java
@@ -0,0 +1,161 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject;
+
+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 paramNameLabel;
+
+ /**
+ * TextField for each parameter.
+ * @generated
+ */
+ private Text paramNameWidget;
+
+ /**
+ * 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 (paramNameWidget != null) {
+ String paramName = paramNameWidget.getText();
+ if (!paramName.isEmpty()){
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("paramName").
+ setValue(paramName);
+ } else {
+ ((RefactoringDataManagement)
+ this.controller.getDataManagementObject()).
+ getInPortByName("paramName").
+ 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 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);
+
+
+ paramNameLabel = new Label(composite, SWT.NONE);
+ paramNameLabel.setText("Name of the new parameter: ");
+ paramNameLabel.setEnabled(true);
+
+ paramNameWidget = new Text(composite, SWT.BORDER);
+ paramNameWidget.setToolTipText
+ ("value of variable 'paramName'");
+ paramNameWidget.setEnabled(true);
+ paramNameWidget.setLayoutData(gd);
+ paramNameWidget.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/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$1.class
new file mode 100644
index 0000000..2cea53b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..0ab7c40
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.class
new file mode 100644
index 0000000..d5b9276
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.class
new file mode 100644
index 0000000..ca772aa
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.class
new file mode 100644
index 0000000..1f5df38
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest$1.class
new file mode 100644
index 0000000..74485af
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.class
new file mode 100644
index 0000000..1518f08
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizard.class
new file mode 100644
index 0000000..85bd135
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.class
new file mode 100644
index 0000000..33dbc2e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
index d13a332..44e0970 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
@@ -56,6 +56,12 @@
menulabel="Remove Empty Superclass"
namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
<refactoring
+ controller="org.eclipse.emf.refactor.refactorings.uml24.removeparameter.RefactoringController"
+ gui="org.eclipse.emf.refactor.refactorings.uml24.removeparameter.RefactoringGuiHandler"
+ id="org.eclipse.emf.refactor.refactorings.uml24.removeparameter"
+ menulabel="Remove Parameter"
+ namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>
+<refactoring
controller="org.eclipse.emf.refactor.refactorings.uml24.renameclass.RefactoringController"
gui="org.eclipse.emf.refactor.refactorings.uml24.renameclass.RefactoringGuiHandler"
id="org.eclipse.emf.refactor.refactorings.uml24.renameclass"
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.java
new file mode 100644
index 0000000..37e43d7
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringController.java
@@ -0,0 +1,258 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $
+ */
+package org.eclipse.emf.refactor.refactorings.uml24.removeparameter;
+
+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.UmlUtils;
+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.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+
+
+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() {
+ org.eclipse.uml2.uml.Parameter selectedEObject =
+ (org.eclipse.uml2.uml.Parameter) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // execute: remove selected parameter from operation
+ Operation owningOperation = selectedEObject.getOperation();
+ owningOperation.getOwnedParameters().remove(selectedEObject);
+ }
+ };
+ }
+
+ /**
+ * 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();
+ org.eclipse.uml2.uml.Parameter selectedEObject =
+ (org.eclipse.uml2.uml.Parameter) dataManagement.
+ getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();
+ // test: the selected parameter must be an input parameter
+ String msg = "This refactoring can only be applied on input parameters!";
+ if ((selectedEObject.getDirection().getValue() == ParameterDirectionKind.RETURN)
+ || (selectedEObject.getDirection().getValue() == ParameterDirectionKind.OUT)) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the selected operation must be owned by a class
+ msg = "This refactoring can only be applied on parameters" +
+ " whose operation is owned by a class!";
+ if (selectedEObject.getOperation().getClass_() == null) {
+ result.addFatalError(msg);
+ return result;
+ }
+ // test: the owning class must not own an operation with the name
+ // of the contextual operation and a similar parameter list after
+ // removing the selected parameter
+ msg = "The owning class already owns an operation named '" +
+ selectedEObject.getOperation().getName() + "' having the same signature " +
+ "(type and parameter list) after removing the selected parameter!";
+ Class cl = selectedEObject.getOperation().getClass_();
+ if (classOwnsOperation(cl, selectedEObject)) result.addFatalError(msg);
+ // test: the owning class must not own an operation with the name
+ // of the contextual operation and a similar parameter list after
+ // removing the selected parameter
+ msg = "The owning class already inherits an operation named '" +
+ selectedEObject.getOperation().getName() + "' having the same signature " +
+ "(type and parameter list) after removing the selected parameter!";
+ if (classInheritsOperation(cl, selectedEObject)) result.addFatalError(msg);
+ return result;
+ }
+
+ private boolean classInheritsOperation(Class cl, Parameter param) {
+ Operation owningOperation = param.getOperation();
+ // remove new parameter and mark position
+ int pos = owningOperation.getOwnedParameters().indexOf(param);
+ owningOperation.getOwnedParameters().remove(param);
+ // test
+ for (NamedElement namedElement : cl.getInheritedMembers()) {
+ if (namedElement instanceof Operation) {
+ Operation inheritedOperation = (Operation) namedElement;
+ if (inheritedOperation.getName().equals(owningOperation.getName())
+ && UmlUtils.haveSameTypes(inheritedOperation, owningOperation)
+ && UmlUtils.haveSameSignatures(inheritedOperation, owningOperation)) {
+ // re-add parameter and return
+ owningOperation.getOwnedParameters().add(pos, param);
+ return true;
+ }
+ }
+ }
+ // re-add parameter and return
+ owningOperation.getOwnedParameters().add(pos, param);
+ return false;
+ }
+
+ private boolean classOwnsOperation(Class cl, Parameter param) {
+ Operation owningOperation = param.getOperation();
+ // remove new parameter and mark position
+ int pos = owningOperation.getOwnedParameters().indexOf(param);
+ owningOperation.getOwnedParameters().remove(param);
+ // test
+ for (Operation op : cl.getOwnedOperations()) {
+ if (op != owningOperation) {
+ if (op.getName().equals(owningOperation.getName())
+ && UmlUtils.haveSameTypes(op, owningOperation)
+ && UmlUtils.haveSameSignatures(op, owningOperation)) {
+ // re-add parameter and return
+ owningOperation.getOwnedParameters().add(pos, param);
+ return true;
+ }
+ }
+ }
+ // re-add parameter and return
+ owningOperation.getOwnedParameters().add(pos, param);
+ return false;
+ }
+
+ /**
+ * @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();
+ // no final checks
+ return result;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.java
new file mode 100644
index 0000000..7d91a7c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringDataManagement.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeparameter;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.core.Port;
+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;
+
+/**
+ * Class for specific data concerning a model refactoring.
+ * @generated
+ */
+public class RefactoringDataManagement extends DataManagementAdapter {
+
+ protected final String SELECTEDEOBJECT = "selectedEObject";
+
+ /**
+ * 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.Parameter>
+ (SELECTEDEOBJECT, org.eclipse.uml2.uml.Parameter.class));
+ }
+
+ /**
+ * @see org.eclipse.emf.refactor.common.core.IDataManagement#
+ * preselect(java.util.List)
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void preselect(List<EObject> selection) {
+ getInPortByName(SELECTEDEOBJECT).
+ setValue((org.eclipse.uml2.uml.Parameter) selection.get(0));
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.java
new file mode 100644
index 0000000..5a06a7c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringGuiHandler.java
@@ -0,0 +1,76 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeparameter;
+
+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.removeparameter.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) {
+ if (selection.size() > 1) return false;
+ for(EObject o:selection){
+ if(null != o){
+ if (o instanceof org.eclipse.uml2.uml.Parameter) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.java
new file mode 100644
index 0000000..98f13e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringTest.java
@@ -0,0 +1,97 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringTest.javajet,v 1.2 2011/03/16 16:14:21 tarendt Exp $
+ */
+
+package org.eclipse.emf.refactor.refactorings.uml24.removeparameter;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.runtime.test.JUnitTestCaseAdapter;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Class used for running individual JUnit test cases
+ * of the specific model refactoring.
+ * @generated
+ */
+@RunWith(value = Parameterized.class)
+public class RefactoringTest extends JUnitTestCaseAdapter {
+
+ /**
+ * Number of test cases.
+ * @generated
+ */
+ private String number;
+
+ /**
+ * Constructor implementation.
+ * @param number Number of test cases.
+ * @generated
+ */
+ public RefactoringTest(String number) throws IOException {
+ super("de.unimarburg.swt.refactorings.uml.removeparameter",
+ "uml",
+ new File(".").getCanonicalPath(),
+ new Refactoring(null, "", "http://www.eclipse.org/uml2/4.0.0/UML", new RefactoringGuiHandler(), new RefactoringController()));
+ register(UMLPackage.eINSTANCE);
+ this.number = number;
+ }
+
+ @Parameters
+ public static Collection<Object[]> data() {
+ List<String> testNumbers = getTestNumbers();
+ Object[][] data = new Object[testNumbers.size()][1];
+ for (int i = 0; i < testNumbers.size(); i++) {
+ data[i][0] = testNumbers.get(i);
+ }
+ return Arrays.asList(data);
+ }
+
+ private static List<String> getTestNumbers() {
+ List<String> numbers = new ArrayList<String>();
+ try {
+ String pathPrefix = new File(".").getCanonicalPath() + "/tests/" + "de.unimarburg.swt.refactorings.uml.removeparameter";
+ File testCaseDir = new File(pathPrefix,"/");
+ FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.startsWith("test_");
+ }
+ };
+ String[] children = testCaseDir.list(filter);
+ if (children != null) {
+ for (String child : children) {
+ numbers.add(
+ child.substring(
+ child.indexOf('_') + 1));
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return numbers;
+ }
+
+ /**
+ * Runs the test.
+ */
+ @Test
+ public void test() {
+ System.out.println("running test test_" + number);
+ executeTestCase(number);
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizard.java
new file mode 100644
index 0000000..0386796
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/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.removeparameter;
+
+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/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.java
new file mode 100644
index 0000000..0e73b3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeparameter/RefactoringWizardPage.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $
+ */
+ package org.eclipse.emf.refactor.refactorings.uml24.removeparameter;
+
+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.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+
+/**
+ * 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;
+
+
+ /**
+ * 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
+ */
+ @Override
+ public void handleEvent(Event event) {
+ getWizard().getContainer().updateButtons();
+ }
+
+ /**
+ * @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;
+ composite.setLayout(gl);
+
+ 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