Bug 517693 - Allow to specify the filename for the extraction of the App
Ids in the model editor

Change-Id: Ic08d894441ecb5fab49c190f0fd4632586d7ba21
Signed-off-by: initialflame <shawn.kleese@wtnet.de>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
index d98df76..3c8a96a 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
@@ -750,6 +750,7 @@
 	public String ExportIdsHandler_Dialog_DialogTitle;
 	public String ExportIdsHandler_Dialog_DialogMessage;
 	public String ExportIdsHandler_Dialog_SelectProject;
+	public String ExportIdsHandler_Dialog_TargetClassName;
 
 	public String ObjectViewer_Tooltip_Value;
 	public String ObjectViewer_Tooltip_InjectionKey;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
index 7f3814d..555e793 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
@@ -758,6 +758,7 @@
 ExportIdsHandler_Dialog_DialogTitle=Export Element Ids
 ExportIdsHandler_Dialog_DialogMessage=Export application model element Ids into a java file for static reference
 ExportIdsHandler_Dialog_SelectProject=Please select a Java project to continue
+ExportIdsHandler_Dialog_TargetClassName=Target Classname
 
 ObjectViewer_Tooltip_Value=Value
 ObjectViewer_Tooltip_InjectionKey=Injection key
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
index 98bcb71..c9be474 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
@@ -15,7 +15,9 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+
 import javax.inject.Named;
+
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -50,12 +52,14 @@
 import org.eclipse.jface.viewers.TableViewerColumn;
 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.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
 
 /**
  * This handler exports all Id values within the application model to a file for
@@ -64,6 +68,8 @@
  * <code>AppModelId.java</code>.
  */
 public class ExportIdsHandler {
+	public static final String DEFAULT_APPMODELID_CLASSNAME = "AppModelId";
+
 	@Execute
 	public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell, @Translation Messages messages, IModelResource resource, IResourcePool pool, IProject project) {
 		TitleAreaDialog dialog = new ExportIdDialog(shell, messages, resource.getRoot(), pool, project);
@@ -76,6 +82,7 @@
 		private IResourcePool pool;
 		private JavaClass clazz;
 		private CheckboxTableViewer viewer;
+		private Text textClassName;
 
 		public ExportIdDialog(Shell parentShell, Messages messages, IObservableList list, IResourcePool pool, IProject project) {
 			super(parentShell);
@@ -84,7 +91,6 @@
 			this.pool = pool;
 
 			clazz = new JavaClass();
-			clazz.name = "AppModelId"; //$NON-NLS-1$
 
 			if (JavaProject.hasJavaNature(project)) {
 				try {
@@ -111,8 +117,28 @@
 			setMessage(messages.ExportIdsHandler_Dialog_DialogMessage);
 			setTitleImage(pool.getImageUnchecked(ResourceProvider.IMG_Wizban16_extstr_wiz));
 
-			Composite container = (Composite) super.createDialogArea(parent);
-			container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+			Composite content = (Composite) super.createDialogArea(parent);
+			content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+			Composite container = new Composite(content, SWT.NONE);
+			container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+			GridLayout gl = new GridLayout(2, false);
+			gl.numColumns = 2;
+			gl.marginBottom = 4;
+
+			container.setLayout(gl);
+			Label lblTargetClass = new Label(container, SWT.NONE);
+			lblTargetClass.setText(messages.ExportIdsHandler_Dialog_TargetClassName);
+
+			textClassName = new Text(container, SWT.BORDER);
+			textClassName.setText(DEFAULT_APPMODELID_CLASSNAME);
+
+			GridData gdcn = new GridData();
+			gdcn.horizontalAlignment = SWT.FILL;
+			gdcn.grabExcessHorizontalSpace = true;
+
+			textClassName.setLayoutData(gdcn);
 			Table t = new Table(container, SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK);
 
 			GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -120,6 +146,7 @@
 			container.setLayoutData(gd);
 
 			GridData gd2 = new GridData(SWT.FILL, SWT.FILL, true, true);
+			gd2.horizontalSpan = 2;
 			gd2.heightHint = t.getItemHeight() * 17;
 			t.setHeaderVisible(true);
 			t.setLinesVisible(true);
@@ -219,6 +246,8 @@
 
 		@Override
 		protected void okPressed() { // See AbstractNewClassWizard
+			clazz.name = textClassName.getText();
+
 			Object[] els = viewer.getCheckedElements();
 			if (els.length > 0) {
 				try {