[354768] [UI] Deployment assembly page should not allow folders to be added if they have already been added
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
index 3d3c3c1..11d72c7 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
@@ -43,6 +43,7 @@
public static String VariableReferenceDescription;
public static String WizardError;
public static String ProjectConversionError;
+ public static String ExistingFolderError;
public static String Revert;
static {
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
index aedeb13..e9b1306 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
@@ -12,6 +12,9 @@
package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
+
+import java.util.ArrayList;
+
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -19,6 +22,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -27,6 +31,7 @@
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
@@ -88,15 +93,38 @@
Object first = sel.getFirstElement();
if( first instanceof IContainer) {
selected = (IContainer)first;
- if(!isComplete) {
- isComplete = true;
- handle.update();
- }
+ String errorMessage=validateFolder();
+ if (errorMessage != null)
+ handle.setMessage(errorMessage,IMessageProvider.ERROR);
+ else
+ handle.setMessage(Messages.AddFolderMappings, IMessageProvider.NONE);
+ handle.update();
}
}
};
}
+ protected String validateFolder() {
+ IContainer c = getSelected();
+ IPath p = c.getProjectRelativePath().makeAbsolute();
+ ArrayList<Object> currentRefs = (ArrayList<Object>)getTaskModel().getObject(IReferenceWizardConstants.ALL_DIRECTIVES);
+ if (!currentRefs.isEmpty())
+ for (int j = 0; j < currentRefs.size(); j++)
+ {
+ Object ref = currentRefs.get(j);
+ if (ref instanceof ComponentResourceProxy)
+ {
+ ComponentResourceProxy folder = (ComponentResourceProxy) ref;
+ if (p.equals(folder.source)){
+ isComplete=false;
+ return NLS.bind(Messages.ExistingFolderError, folder.source);
+ }
+ }
+ }
+ isComplete = true;
+ return null;
+ }
+
public IContainer getSelected() {
return selected;
}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
index 5bac0b5..3e5bfc2 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
@@ -25,4 +25,5 @@
VariableReferenceDescription="Here you can reference a variable which maps to a single jar.\nThis is not a suggested use-case, but is here for backwards compatability.
WizardError=Wizard Error
ProjectConversionError=Error converting project {0} into a flexible project
+ExistingFolderError= Folder "{0}" already exists.
Revert=Re&vert
\ No newline at end of file