Merge "Bug 519430 - Allow the possibility to set a specification prefix in Lyo Modeller"
diff --git a/org.eclipse.lyo.tools.toolchain.design/description/ToolChainModel.odesign b/org.eclipse.lyo.tools.toolchain.design/description/ToolChainModel.odesign
index 8652d0a..e69b05c 100644
--- a/org.eclipse.lyo.tools.toolchain.design/description/ToolChainModel.odesign
+++ b/org.eclipse.lyo.tools.toolchain.design/description/ToolChainModel.odesign
@@ -275,6 +275,18 @@
             <containerView name="containerView"/>
             <initialOperation/>
           </ownedTools>
+          <ownedTools xsi:type="tool_1:PopupMenu" name="Specification.DomainSpecificationMenu" label="OSLC" precondition="[self.oclIsTypeOf(DomainSpecification)/]">
+            <menuItemDescription xsi:type="tool_1:OperationAction" name="Specification.DomainSpecificationMenu.SetPrefix" label="Set Domain Prefix" precondition="[self.oclIsTypeOf(DomainSpecification)/]">
+              <view name="views">
+                <subVariables xsi:type="tool_1:AcceleoVariable" name="domainSpecification" computationExpression="[views->any(true).oclAsType(DNodeContainer).target/]"/>
+              </view>
+              <initialOperation>
+                <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[domainSpecification.namespacePrefix/]">
+                  <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="[let userInput : String = self.promptForString('Enter the domain namespace prefix', 'Enter the domain namespace prefix', self.name) in (if (userInput = null) then name else userInput endif) /]"/>
+                </firstModelOperations>
+              </initialOperation>
+            </menuItemDescription>
+          </ownedTools>
         </toolSections>
       </defaultLayer>
     </ownedRepresentations>
@@ -709,5 +721,6 @@
       </defaultLayer>
     </ownedRepresentations>
     <ownedJavaExtensions qualifiedClassName="org::eclipse::lyo::tools::toolchain::design::queries"/>
+    <ownedJavaExtensions qualifiedClassName="org::eclipse::lyo::tools::toolchain::design::DialogInputServices"/>
   </ownedViewpoints>
 </description:Group>
diff --git a/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.java b/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.java
new file mode 100644
index 0000000..c372945
--- /dev/null
+++ b/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.java
@@ -0,0 +1,22 @@
+package org.eclipse.lyo.tools.toolchain.design;
+
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.emf.ecore.EObject;
+
+public class DialogInputServices {
+
+	public DialogInputServices() {
+	}
+
+	public String promptForString(EObject self, String title, String message, String initialValue) {
+        InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(), title, message, initialValue, null);
+        if (dlg.open() == Window.OK) {
+            return dlg.getValue();
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.mtl b/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.mtl
new file mode 100644
index 0000000..47f0222
--- /dev/null
+++ b/org.eclipse.lyo.tools.toolchain.design/src/org/eclipse/lyo/tools/toolchain/design/DialogInputServices.mtl
@@ -0,0 +1,11 @@
+[comment encoding = Cp1252 /]
+[module DialogInputServices('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[query public DialogInputServices(anOclAny: OclAny) : OclVoid
+	= invoke('org.eclipse.lyo.tools.toolchain.design.DialogInputServices', 'DialogInputServices()', Sequence{})
+/]
+
+[query public promptForString(arg0 : EObject, arg1 : String, arg2 : String, arg3 : String) : String
+	= invoke('org.eclipse.lyo.tools.toolchain.design.DialogInputServices', 'promptForString(org.eclipse.emf.ecore.EObject, java.lang.String, java.lang.String, java.lang.String)', Sequence{arg0, arg1, arg2, arg3})
+/]
+