Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2019-05-28 21:01:40 +0000
committerNoopur Gupta2019-05-29 08:49:24 +0000
commit7bac3c186d92b7885ccc834b271de73c51e8d1ef (patch)
tree5a8bb92d15ae5cabc90b17ba1af87d480abdbd3c
parent2c33b032e8fc597a6d0fe59928a594ed261771dc (diff)
downloadeclipse.jdt.ui-7bac3c186d92b7885ccc834b271de73c51e8d1ef.tar.gz
eclipse.jdt.ui-7bac3c186d92b7885ccc834b271de73c51e8d1ef.tar.xz
eclipse.jdt.ui-7bac3c186d92b7885ccc834b271de73c51e8d1ef.zip
Bug 546790 - [9][build path] synchronize data on different tabs of JavaI20190529-0600
Build Path Change-Id: I5ff459233512adf0f2a50545c5a6c99537b1a785 Signed-off-by: Stephan Herrmann <stephan.herrmann@berlin.de>
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java1
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties3
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java4
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesList.java9
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java15
5 files changed, 28 insertions, 4 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
index 0c55a6f4e9..3a66ae56ed 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
@@ -521,6 +521,7 @@ public final class NewWizardMessages extends NLS {
public static String ModuleDependenciesPage_addSystemModule_button;
public static String ModuleDependenciesPage_details_label;
public static String ModuleDependenciesPage_nonModularProject_dummy;
+ public static String ModuleDependenciesPage_outOfSync_warning;
// buttons:
public static String ModuleDependenciesPage_modules_remove_button;
public static String ModuleDependenciesPage_modules_read_button;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
index 3ee6f27c0a..feb30bc627 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
@@ -558,6 +558,9 @@ ModuleDependenciesPage_modules_label=All Modules
ModuleDependenciesPage_addSystemModule_button=Add S&ystem Module...
ModuleDependenciesPage_details_label=Details
ModuleDependenciesPage_nonModularProject_dummy=Non-modular Project
+
+ModuleDependenciesPage_outOfSync_warning=Not all modules could be found. Click Apply to synchronize.
+
# buttons
ModuleDependenciesPage_modules_remove_button=&Remove
ModuleDependenciesPage_modules_read_button=Rea&d Module...
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java
index 8bb52abe54..3fec77d579 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java
@@ -366,7 +366,7 @@ public class BuildPathsBlock {
fSourceContainerPage.init(fCurrJProject);
fProjectsPage.init(fCurrJProject);
fLibrariesPage.init(fCurrJProject);
- fModulesPage.init(fCurrJProject);
+ // fModulesPage will be unconditionally initialized in updateUI() below
fIs9OrHigher= JavaModelUtil.is9OrHigher(fCurrJProject);
}
@@ -402,9 +402,9 @@ public class BuildPathsBlock {
// update the library and project page if fis9OrHigher changed
fLibrariesPage.init(fCurrJProject);
fProjectsPage.init(fCurrJProject);
- fModulesPage.init(fCurrJProject);
fIs9OrHigher= is9OrHigherAfter;
}
+ fModulesPage.init(fCurrJProject); // always update, Apply might have made more modules visible
doStatusLineUpdate();
}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesList.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesList.java
index c85126b78c..56fd9a0adb 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesList.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesList.java
@@ -137,6 +137,15 @@ class ModuleDependenciesList {
fViewer= tableViewer;
}
+ public void clear() {
+ fNames.clear();
+ fModule2Element.clear();
+ fInitialNames.clear();
+ fElem2ModName.clear();
+ fModules.clear();
+ fKinds.clear();
+ }
+
private boolean hasConfiguredDetails(String module) {
CPListElement element= fModule2Element.get(module);
if (element == null)
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java
index 97fa75b20d..ccc5c3317a 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java
@@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -62,6 +63,7 @@ import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
import org.eclipse.jdt.internal.ui.wizards.IStatusChangeListener;
import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
import org.eclipse.jdt.internal.ui.wizards.buildpaths.ModuleDependenciesList.ModuleKind;
@@ -242,6 +244,10 @@ public class ModuleDependenciesPage extends BuildPathBasePage {
fDetailsList.setViewerComparator(new CPListElementSorter());
+ ((TabFolder) parent).addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
+ if (e.item.getData() == this && fCurrJProject != null)
+ init(fCurrJProject);
+ }));
fSWTControl= composite;
return composite;
@@ -270,7 +276,7 @@ public class ModuleDependenciesPage extends BuildPathBasePage {
}
protected void scanModules() {
- fModuleList.fNames.clear();
+ fModuleList.clear();
if (!JavaModelUtil.is9OrHigher(fCurrJProject)) {
fModuleList.fNames.add(NewWizardMessages.ModuleDependenciesPage_nonModularProject_dummy);
fModuleList.refresh();
@@ -365,7 +371,12 @@ public class ModuleDependenciesPage extends BuildPathBasePage {
}
break;
default: // LIBRARY & VARIABLE:
- for (IPackageFragmentRoot packageRoot : fCurrJProject.findPackageFragmentRoots(cpe.getClasspathEntry())) {
+ IPackageFragmentRoot[] roots= fCurrJProject.findPackageFragmentRoots(cpe.getClasspathEntry());
+ if (roots.length == 0) {
+ fContext.statusChanged(new StatusInfo(IStatus.WARNING, NewWizardMessages.ModuleDependenciesPage_outOfSync_warning));
+ break;
+ }
+ for (IPackageFragmentRoot packageRoot : roots) {
IModuleDescription module= packageRoot.getModuleDescription();
kind= ModuleKind.Normal;
if (module == null) {

Back to the top