Bug 460058 - Badly formatted error message - 'A Custom Task with id {0}
was already defined'
https://issues.jboss.org/browse/SWITCHYARD-2591 - Cannot set options for
SwitchYard Service Task in BPMN2 editor
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
index d2174f7..78b58a3 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
@@ -1794,4 +1794,10 @@
 		}
 		return false;
 	}
+
+	// FIXME: update Switchyard to use new API 
+	@Deprecated
+	public static String toDisplayName(String name) {
+		return toCanonicalString(name);
+	}
 }
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
index dc07017..2a57aae 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
@@ -23,10 +23,7 @@
 
 import org.eclipse.bpmn2.Activity;
 import org.eclipse.bpmn2.DataInput;
-import org.eclipse.bpmn2.DataObject;
 import org.eclipse.bpmn2.DataOutput;
-import org.eclipse.bpmn2.Error;
-import org.eclipse.bpmn2.Escalation;
 import org.eclipse.bpmn2.Event;
 import org.eclipse.bpmn2.Gateway;
 import org.eclipse.bpmn2.Interface;
@@ -38,7 +35,6 @@
 import org.eclipse.bpmn2.ScriptTask;
 import org.eclipse.bpmn2.SendTask;
 import org.eclipse.bpmn2.SequenceFlow;
-import org.eclipse.bpmn2.Signal;
 import org.eclipse.bpmn2.Task;
 import org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension;
 import org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension2;
@@ -76,25 +72,23 @@
 import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.wid.WIDHandler;
 import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.wid.WorkItemDefinition;
 import org.eclipse.bpmn2.modeler.ui.DefaultBpmn2RuntimeExtension.RootElementParser;
+import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
 import org.eclipse.bpmn2.modeler.ui.wizards.FileService;
+import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.transaction.NotificationFilter;
-import org.eclipse.emf.transaction.ResourceSetChangeEvent;
-import org.eclipse.emf.transaction.RollbackException;
 import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorInput;
 import org.xml.sax.InputSource;
@@ -197,13 +191,14 @@
 			// In this case we may want to explicitly make the editor read-only
 		}
 
-		IProject project = Bpmn2Preferences.getActiveProject();
-		if (project != null) {
+		IFile inputFile = ((BPMN2Editor) editor).getModelFile();
+		if (inputFile!=null) {
+			IContainer folder = inputFile.getParent();
 			getWorkItemDefinitions();
 			workItemDefinitions.clear();
 			try {
 				final WIDResourceVisitor visitor = new WIDResourceVisitor();
-				project.accept(visitor, IResource.DEPTH_INFINITE, false);
+				folder.accept(visitor, IResource.DEPTH_INFINITE, false);
 				if (visitor.getWIDFiles().size() > 0) {
 					Iterator<IFile> fileIter = visitor.getWIDFiles().iterator();
 					while (fileIter.hasNext()) {
@@ -233,12 +228,11 @@
 									public void run() {
 										MessageDialog.openError(Display.getDefault().getActiveShell(),
 												Messages.JBPM5RuntimeExtension_Duplicate_Task_Title,
-												Messages.JBPM5RuntimeExtension_Duplicate_Task_Message+
-												ctd.getId()+
-												"' was already defined.\n"+ //$NON-NLS-1$
-												"The new Custom Task defined in the file: "+ //$NON-NLS-1$
-												wid.getDefinitionFile().getFullPath().toString()+"\n"+ //$NON-NLS-1$
-												"will be ignored."); //$NON-NLS-1$
+												NLS.bind(
+														Messages.JBPM5RuntimeExtension_Duplicate_Task_Message,
+														ctd.getId(),
+														wid.getDefinitionFile().getFullPath().toString())
+												);
 									}
 								});
 							}