Bug 527611 - [9] DnD of an entry on to its parent root node in Java
Build Path dialog should not be allowed
Change-Id: I79aad34fe27d141a6cfb24ff4f720ed6715333a6
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/LibrariesWorkbookPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/LibrariesWorkbookPage.java
index ad51778..ca61d4c 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/LibrariesWorkbookPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/LibrariesWorkbookPage.java
@@ -116,6 +116,7 @@
private boolean dragDropEnabled;
private Object draggedItemsLibrary;
+ private boolean fromModularLibrary;
public LibrariesWorkbookPage(CheckedListDialogField<CPListElement> classPathList, IWorkbenchPreferenceContainer pageContainer) {
fClassPathList= classPathList;
@@ -240,6 +241,16 @@
}
if (element instanceof CPListElement) {
CPListElement cpe= (CPListElement) element;
+ List<CPListElement> elements= fLibrariesList.getElements();
+ for (Object cpListElement : elements) {
+ if (cpListElement instanceof RootCPListElement) {
+ RootCPListElement root= (RootCPListElement) cpListElement;
+ if (root.getChildren().contains(cpe)) {
+ fromModularLibrary= root.isModulePathRootNode();
+ break;
+ }
+ }
+ }
if (cpe.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
IPath path= cpe.getPath();
if (path != null) {
@@ -318,7 +329,10 @@
@Override
public boolean validateDrop(Object target, int operation, TransferData transferType) {
- return (target instanceof RootCPListElement);
+ if (!(target instanceof RootCPListElement))
+ return false;
+ RootCPListElement root= (RootCPListElement) target;
+ return fromModularLibrary ? root.isClassPathRootNode() : root.isModulePathRootNode();
}
});
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ProjectsWorkbookPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ProjectsWorkbookPage.java
index f70f17d..b504a8f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ProjectsWorkbookPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ProjectsWorkbookPage.java
@@ -78,6 +78,7 @@
private boolean dragDropEnabled;
private Object draggedItemsProject;
+ private boolean fromModularProject;
public ProjectsWorkbookPage(ListDialogField<CPListElement> classPathList, IWorkbenchPreferenceContainer pageContainer) {
fClassPathList= classPathList;
@@ -196,6 +197,19 @@
event.doit= false;
break;
}
+ if (element instanceof CPListElement) {
+ CPListElement cpe= (CPListElement) element;
+ List<CPListElement> elements= fProjectsList.getElements();
+ for (Object cpListElement : elements) {
+ if (cpListElement instanceof RootCPListElement) {
+ RootCPListElement root= (RootCPListElement) cpListElement;
+ if (root.getChildren().contains(cpe)) {
+ fromModularProject= root.isModulePathRootNode();
+ break;
+ }
+ }
+ }
+ }
}
}
}
@@ -245,7 +259,10 @@
@Override
public boolean validateDrop(Object target, int operation, TransferData transferType) {
- return (target instanceof RootCPListElement);
+ if (!(target instanceof RootCPListElement))
+ return false;
+ RootCPListElement root= (RootCPListElement) target;
+ return fromModularProject ? root.isClassPathRootNode() : root.isModulePathRootNode();
}
});