Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Aeschlimann2001-10-08 08:09:42 +0000
committerMartin Aeschlimann2001-10-08 08:09:42 +0000
commit4b569115060ddb9c6defaec4ac29fdac5d473a2b (patch)
treeea16283315cccdb955e9152601a3e007538e9f43
parent1eefd297f56d766bdaff6a09d23f84be1b3ce0e5 (diff)
downloadeclipse.jdt.ui-4b569115060ddb9c6defaec4ac29fdac5d473a2b.tar.gz
eclipse.jdt.ui-4b569115060ddb9c6defaec4ac29fdac5d473a2b.tar.xz
eclipse.jdt.ui-4b569115060ddb9c6defaec4ac29fdac5d473a2b.zip
organize import improvements
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/codemanipulation/OrganizeImportsOperation.java177
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/MultiElementListSelectionDialog.java9
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddImportOnSelectionAction.java4
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java50
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/SelectionProviderMediator.java147
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java5
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java6
7 files changed, 149 insertions, 249 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/codemanipulation/OrganizeImportsOperation.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/codemanipulation/OrganizeImportsOperation.java
index 2c8e094a15..5b0c9fdce5 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/codemanipulation/OrganizeImportsOperation.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/codemanipulation/OrganizeImportsOperation.java
@@ -5,6 +5,8 @@ package org.eclipse.jdt.internal.ui.codemanipulation;
* All Rights Reserved.
*/
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -41,10 +43,11 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
/**
* Selects imports from a list of choices.
* @param openChoices From each array, a type ref has to be selected
+ * @param ranges For each choice the range of the corresponding type reference.
* @return Returns <code>null</code> to cancel the operation, or the
* selected imports.
*/
- TypeInfo[] chooseImports(TypeInfo[][] openChoices);
+ TypeInfo[] chooseImports(TypeInfo[][] openChoices, ISourceRange[] ranges);
}
private static class TypeReferenceProcessor {
@@ -57,26 +60,18 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
private ArrayList fTypeRefsFound;
private ArrayList fAllTypes;
- private ArrayList fOpenChoices;
-
public TypeReferenceProcessor(ArrayList oldSingleImports, ArrayList oldDemandImports, ImportsStructure impStructure, IProgressMonitor monitor) {
fOldSingleImports= oldSingleImports;
fOldDemandImports= oldDemandImports;
fImpStructure= impStructure;
-
+
fTypeRefsFound= new ArrayList(); // cached array list for reuse
fAllTypes= new ArrayList(500);
IProject project= impStructure.getCompilationUnit().getJavaProject().getProject();
fetchAllTypes(fAllTypes, project, monitor);
-
- fOpenChoices= new ArrayList();
}
-
- public TypeInfo[][] getOpenChoices() {
- return (TypeInfo[][]) fOpenChoices.toArray(new TypeInfo[fOpenChoices.size()][]);
- }
-
+
private void fetchAllTypes(ArrayList list, IProject project, IProgressMonitor monitor) {
IJavaSearchScope searchScope= SearchEngine.createJavaSearchScope(new IResource[] { project });
@@ -85,19 +80,23 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
}
- public void process(String typeName) throws CoreException {
+ /**
+ * Tries to find the given type name and add it to the import structure.
+ * Returns array of coices if user needs to select a type.
+ */
+ public TypeInfo[] process(String typeName) throws CoreException {
try {
ArrayList typeRefsFound= fTypeRefsFound; // reuse
-
+
findTypeRefs(typeName, typeRefsFound);
int nFound= typeRefsFound.size();
if (nFound == 0) {
// nothing found
- return;
+ return null;
} else if (nFound == 1) {
TypeInfo typeRef= (TypeInfo) typeRefsFound.get(0);
fImpStructure.addImport(typeRef.getTypeContainerName(), typeRef.getTypeName());
- return;
+ return null;
} else {
String containerToImport= null;
boolean ambiguousImports= false;
@@ -110,7 +109,7 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
if (fOldSingleImports.contains(fullName)) {
// was single-imported
fImpStructure.addImport(containerName, typeRef.getTypeName());
- return;
+ return null;
} else if (fOldDemandImports.contains(containerName)) {
if (containerToImport == null) {
containerToImport= containerName;
@@ -123,13 +122,14 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
if (containerToImport != null && !ambiguousImports) {
fImpStructure.addImport(containerToImport, typeName);
} else {
- // remember. Need to ask the client
- fOpenChoices.add(typeRefsFound.toArray(new TypeInfo[nFound]));
+ // return the open choices
+ return (TypeInfo[]) typeRefsFound.toArray(new TypeInfo[nFound]);
}
}
} finally {
fTypeRefsFound.clear();
}
+ return null;
}
private void findTypeRefs(String simpleTypeName, ArrayList typeRefsFound) {
@@ -157,15 +157,32 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
}
private static class TypeReferenceRequestor implements ISourceElementRequestor {
- private ArrayList fTypeRefs;
- private ArrayList fPositions;
- private ISourceRange fImportRange;
+ private static class RefSourceRange implements ISourceRange {
+ private int fOffset;
+ private int fLength;
+
+ public RefSourceRange(int offset, int length) {
+ fOffset= offset;
+ fLength= length;
+ }
+
+ public int getOffset() {
+ return fOffset;
+ }
+
+ public int getLength() {
+ return fLength;
+ }
+ }
+
+ private HashMap fTypeRefs;
+
+ private int fImportEnd;
- public TypeReferenceRequestor(ArrayList references, ISourceRange importRange) {
- fTypeRefs= references;
- fImportRange= importRange;
- fPositions= new ArrayList(references);
+ public TypeReferenceRequestor(HashMap result, int importEndPos) {
+ fTypeRefs= result;
+ fImportEnd= importEndPos;
}
public void acceptProblem(IProblem problem) {
@@ -201,10 +218,9 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
}
public void acceptTypeReference(char[][] typeName, int sourceStart, int sourceEnd) {
- for (int i= 0; i < typeName.length - 1; i++) {
- unknownRefFound(typeName[i], sourceStart);
+ if (typeName.length > 0) {
+ typeRefFound(typeName[0], sourceStart);
}
- typeRefFound(typeName[typeName.length - 1], sourceStart);
}
public void acceptTypeReference(char[] typeName, int sourcePosition) {
@@ -212,47 +228,56 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
}
public void acceptUnknownReference(char[][] name, int sourceStart, int sourceEnd) {
- for (int i= 0; i < name.length; i++) {
- unknownRefFound(name[i], sourceStart);
+ if (name.length > 0) {
+ typeRefFound(name[0], sourceStart);
}
}
public void acceptUnknownReference(char[] name, int sourcePosition) {
- unknownRefFound(name, sourcePosition);
+ typeRefFound(name, sourcePosition);
}
+
+ public void acceptImport(int declarationStart, int declarationEnd, char[] name, boolean onDemand) {
+ }
private void typeRefFound(char[] typeRef, int pos) {
- String typeRefName= new String(typeRef);
- int idx= fTypeRefs.indexOf(typeRefName);
- if (idx == -1) {
- fTypeRefs.add(typeRefName);
- fPositions.add(new Integer(pos));
- } else {
- fPositions.set(idx, new Integer(pos));
- }
- }
-
- private void unknownRefFound(char[] unknownRef, int pos) {
- if (unknownRef.length > 0) {
- if (Character.isUpperCase(unknownRef[0])) {
- typeRefFound(unknownRef, pos);
+ if (pos >= fImportEnd) {
+ int len= getIdLen(typeRef);
+ String name= new String(typeRef, 0, len);
+ if (!fTypeRefs.containsKey(name)) {
+ fTypeRefs.put(name, new RefSourceRange(pos, len));
}
- }
+ }
}
- public void acceptImport(int declarationStart, int declarationEnd, char[] name, boolean onDemand) {
- // remove all type references that came from the import statements
- for (int i= fTypeRefs.size()-1; i >= 0; i--) {
- int pos= ((Integer)fPositions.get(i)).intValue();
- if (declarationStart <= pos && declarationEnd > pos) {
- fTypeRefs.remove(i);
- fPositions.remove(i);
+ private int getIdLen(char[] str) {
+ for (int i= 0; i < str.length; i++) {
+ if (str[i] == '.') {
+ return i;
}
}
+ return str.length;
}
-
-
-}
+ }
+
+ // find type references in a compilation unit
+ private static HashMap findTypeReferences(ICompilationUnit cu) throws JavaModelException, ParsingError {
+ HashMap references= new HashMap();
+ int inportEndPos= 0;
+ IImportContainer importContainer= cu.getImportContainer();
+ if (importContainer.exists()) {
+ ISourceRange importRange= importContainer.getSourceRange();
+ inportEndPos= importRange.getOffset() + importRange.getLength();
+ }
+
+ TypeReferenceRequestor requestor= new TypeReferenceRequestor(references, inportEndPos);
+ SourceElementParser parser= new SourceElementParser(requestor, new DefaultProblemFactory());
+ if (cu instanceof org.eclipse.jdt.internal.compiler.env.ICompilationUnit) {
+ parser.parseCompilationUnit((org.eclipse.jdt.internal.compiler.env.ICompilationUnit)cu, true);
+ }
+ return references;
+ }
+
private ICompilationUnit fCompilationUnit;
private IImportDeclaration[] fCreatedImports;
@@ -292,7 +317,7 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
monitor.beginTask(CodeManipulationMessages.getString("OrganizeImportsOperation.description"), 3); //$NON-NLS-1$
- String[] references;
+ HashMap references;
try {
references= findTypeReferences(fCompilationUnit);
} catch (ParsingError e) {
@@ -323,14 +348,24 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
ImportsStructure impStructure= new ImportsStructure(fCompilationUnit, fOrderPreference, fImportThreshold);
TypeReferenceProcessor processor= new TypeReferenceProcessor(oldSingleImports, oldDemandImports, impStructure, new SubProgressMonitor(monitor, 1));
- for (int i= 0; i < references.length; i++) {
- processor.process(references[i]);
+ ArrayList openChoices= new ArrayList();
+ ArrayList sourceRanges= new ArrayList();
+ Iterator iter= references.keySet().iterator();
+ while (iter.hasNext()) {
+ String typeName= (String) iter.next();
+ TypeInfo[] openChoice= processor.process(typeName);
+ if (openChoice != null) {
+ openChoices.add(openChoice);
+ sourceRanges.add(references.get(typeName));
+ }
}
- TypeInfo[][] openChoices= processor.getOpenChoices();
+
processor= null;
- if (openChoices.length > 0) {
- TypeInfo[] chosen= fChooseImportQuery.chooseImports(openChoices);
+ if (openChoices.size() > 0) {
+ TypeInfo[][] choices= (TypeInfo[][]) openChoices.toArray(new TypeInfo[openChoices.size()][]);
+ ISourceRange[] ranges= (ISourceRange[]) sourceRanges.toArray(new ISourceRange[sourceRanges.size()]);
+ TypeInfo[] chosen= fChooseImportQuery.chooseImports(choices, ranges);
if (chosen == null) {
// cancel pressed by the user
throw new OperationCanceledException();
@@ -347,24 +382,6 @@ public class OrganizeImportsOperation implements IWorkspaceRunnable {
}
}
- // find type references in a compilation unit
- private static String[] findTypeReferences(ICompilationUnit cu) throws JavaModelException, ParsingError {
- ArrayList references= new ArrayList();
- IImportContainer importContainer= cu.getImportContainer();
- ISourceRange importRange= null;
- if (importContainer.exists()) {
- importRange= importContainer.getSourceRange();
- }
-
- TypeReferenceRequestor requestor= new TypeReferenceRequestor(references, importRange);
- SourceElementParser parser= new SourceElementParser(requestor, new DefaultProblemFactory());
- if (cu instanceof org.eclipse.jdt.internal.compiler.env.ICompilationUnit) {
- parser.parseCompilationUnit((org.eclipse.jdt.internal.compiler.env.ICompilationUnit)cu, true);
- }
- String[] res= new String[references.size()];
- references.toArray(res);
- return res;
- }
/**
* Can be called after executing to get the created imports
* Return null if the compilation unit had a compilation error and
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/MultiElementListSelectionDialog.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/MultiElementListSelectionDialog.java
index 60865cde49..9a2771af43 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/MultiElementListSelectionDialog.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/dialogs/MultiElementListSelectionDialog.java
@@ -275,4 +275,13 @@ public class MultiElementListSelectionDialog extends AbstractElementListSelectio
setResult(result);
}
+ /**
+ * Gets the current Page.
+ * @return Returns a int
+ */
+ public int getCurrentPage() {
+ return fCurrentPage;
+ }
+
+
} \ No newline at end of file
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddImportOnSelectionAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddImportOnSelectionAction.java
index cf10d95fa0..05d0271273 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddImportOnSelectionAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/AddImportOnSelectionAction.java
@@ -80,10 +80,6 @@ public class AddImportOnSelectionAction extends Action implements IUpdate {
IWorkingCopyManager manager= JavaPlugin.getDefault().getWorkingCopyManager();
return manager.getWorkingCopy(fEditor.getEditorInput());
}
-
-
- private void addImport(IJavaElement imp, ICompilationUnit cu) {
- }
/**
* @see IAction#actionPerformed
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java
index 0eb9b0eec6..9cc27edb33 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/OrganizeImportsAction.java
@@ -11,7 +11,7 @@ import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -21,6 +21,7 @@ import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IImportContainer;
+import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.ui.IWorkingCopyManager;
@@ -32,6 +33,7 @@ import org.eclipse.jdt.internal.ui.codemanipulation.OrganizeImportsOperation;
import org.eclipse.jdt.internal.ui.codemanipulation.OrganizeImportsOperation.IChooseImportQuery;
import org.eclipse.jdt.internal.ui.dialogs.MultiElementListSelectionDialog;
import org.eclipse.jdt.internal.ui.preferences.ImportOrganizePreferencePage;
+import org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext;
import org.eclipse.jdt.internal.ui.util.TypeInfo;
import org.eclipse.jdt.internal.ui.util.TypeInfoLabelProvider;
@@ -73,8 +75,8 @@ public class OrganizeImportsAction extends Action {
int threshold= ImportOrganizePreferencePage.getImportNumberThreshold();
OrganizeImportsOperation op= new OrganizeImportsOperation(cu, prefOrder, threshold, false, createChooseImportQuery());
try {
- ProgressMonitorDialog dialog= new ProgressMonitorDialog(JavaPlugin.getActiveWorkbenchShell());
- dialog.run(false, true, new WorkbenchRunnableWrapper(op));
+ BusyIndicatorRunnableContext context= new BusyIndicatorRunnableContext();
+ context.run(false, true, new WorkbenchRunnableWrapper(op));
} catch (InvocationTargetException e) {
JavaPlugin.log(e);
MessageDialog.openError(JavaPlugin.getActiveWorkbenchShell(), JavaEditorMessages.getString("OrganizeImportsAction.error.title"), e.getTargetException().getMessage()); //$NON-NLS-1$
@@ -96,33 +98,55 @@ public class OrganizeImportsAction extends Action {
private IChooseImportQuery createChooseImportQuery() {
return new IChooseImportQuery() {
- public TypeInfo[] chooseImports(TypeInfo[][] openChoices) {
- return doChooseImports(openChoices);
+ public TypeInfo[] chooseImports(TypeInfo[][] openChoices, ISourceRange[] ranges) {
+ return doChooseImports(openChoices, ranges);
}
};
}
- private TypeInfo[] doChooseImports(TypeInfo[][] openChoices) {
+ private TypeInfo[] doChooseImports(TypeInfo[][] openChoices, final ISourceRange[] ranges) {
+ // remember selection
+ ISelection sel= fEditor.getSelectionProvider().getSelection();
+ TypeInfo[] result= null;;
ILabelProvider labelProvider= new TypeInfoLabelProvider(TypeInfoLabelProvider.SHOW_FULLYQUALIFIED);
- MultiElementListSelectionDialog dialog= new MultiElementListSelectionDialog(JavaPlugin.getActiveWorkbenchShell(), labelProvider);
+ MultiElementListSelectionDialog dialog= new MultiElementListSelectionDialog(JavaPlugin.getActiveWorkbenchShell(), labelProvider) {
+ protected void handleSelectionChanged() {
+ super.handleSelectionChanged();
+ // show choices in editor
+ doListSelectionChanged(getCurrentPage(), ranges);
+ }
+ };
dialog.setTitle(JavaEditorMessages.getString("OrganizeImportsAction.selectiondialog.title")); //$NON-NLS-1$
dialog.setMessage(JavaEditorMessages.getString("OrganizeImportsAction.selectiondialog.message")); //$NON-NLS-1$
dialog.setElements(openChoices);
if (dialog.open() == dialog.OK) {
- Object[] result= dialog.getResult();
- ArrayList refs= new ArrayList(result.length);
- for (int i= 0; i < result.length; i++) {
- List types= (List) result[i];
+ Object[] res= dialog.getResult();
+ ArrayList refs= new ArrayList(res.length);
+ for (int i= 0; i < res.length; i++) {
+ List types= (List) res[i];
if (types.size() > 0) {
refs.add(types.get(0));
}
}
- return (TypeInfo[]) refs.toArray(new TypeInfo[refs.size()]);
+ result= (TypeInfo[]) refs.toArray(new TypeInfo[refs.size()]);
}
- return null;
+ // restore selection
+ if (sel instanceof ITextSelection) {
+ ITextSelection textSelection= (ITextSelection) sel;
+ fEditor.selectAndReveal(textSelection.getOffset(), textSelection.getLength());
+ }
+ return result;
}
+ private void doListSelectionChanged(int page, ISourceRange[] ranges) {
+ if (page >= 0 && page < ranges.length) {
+ ISourceRange range= ranges[page];
+ fEditor.selectAndReveal(range.getOffset(), range.getLength());
+ }
+ }
+
+
public void setContentEditor(ITextEditor editor) {
fEditor= editor;
setEnabled(editor != null && fEditor.isEditable());
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/SelectionProviderMediator.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/SelectionProviderMediator.java
deleted file mode 100644
index d0ae4a14ee..0000000000
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/SelectionProviderMediator.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-package org.eclipse.jdt.internal.ui.viewsupport;
-
-import java.util.ArrayList;
-
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-
-
-public class SelectionProviderMediator implements ISelectionProvider {
-
- private Viewer[] fViewers;
- private Listener fListener;
-
- private Viewer fViewerInFocus;
- private ArrayList fSelectionChangedListeners;
-
- public SelectionProviderMediator(Viewer[] viewers) {
- fViewers= viewers;
- fListener= new Listener();
- installListeners();
-
- fSelectionChangedListeners= null;
- fViewerInFocus= null;
- }
-
- private void installListeners() {
- for (int i= 0; i < fViewers.length; i++) {
- Viewer viewer= fViewers[i];
- viewer.addSelectionChangedListener(fListener);
- Control control= viewer.getControl();
- Assert.isNotNull(control);
- control.addFocusListener(fListener);
- }
- }
-
- /**
- * @see ISelectionProvider#addSelectionChangedListener
- */
-
- public void addSelectionChangedListener(ISelectionChangedListener listener) {
- if (fSelectionChangedListeners == null)
- fSelectionChangedListeners= new ArrayList(4);
-
- if (!fSelectionChangedListeners.contains(listener))
- fSelectionChangedListeners.add(listener);
- }
-
- /**
- * @see ISelectionProvider#removeSelectionChangedListener
- */
- public void removeSelectionChangedListener(ISelectionChangedListener listener) {
- if (fSelectionChangedListeners != null)
- fSelectionChangedListeners.remove(listener);
- }
-
- /**
- * @see ISelectionProvider#getSelection
- */
- public ISelection getSelection() {
- if (fViewerInFocus != null) {
- return fViewerInFocus.getSelection();
- } else {
- return StructuredSelection.EMPTY;
- }
- }
-
- /**
- * @see ISelectionProvider#setSelection
- */
- public void setSelection(ISelection selection) {
- if (fViewerInFocus != null) {
- fViewerInFocus.setSelection(selection);
- }
- }
-
- private void fireSelectionChanged() {
- if (fSelectionChangedListeners != null) {
- SelectionChangedEvent event= new SelectionChangedEvent(this, getSelection());
-
- for (int i= 0; i < fSelectionChangedListeners.size(); i++) {
- ISelectionChangedListener listener= (ISelectionChangedListener)fSelectionChangedListeners.get(i);
- listener.selectionChanged(event);
- }
- }
- }
-
- private void focusChanged(Viewer viewer) {
- if (viewer != fViewerInFocus) {
- fViewerInFocus= viewer;
- fireSelectionChanged();
- }
- }
-
- private class Listener implements ISelectionChangedListener, FocusListener {
-
- /**
- * @see ISelectionChangedListener#selectionChanged
- */
- public void selectionChanged(SelectionChangedEvent event) {
- ISelectionProvider provider= event.getSelectionProvider();
- if (provider == fViewerInFocus) {
- fireSelectionChanged();
- }
- }
-
- /**
- * @see FocusListener#focusGained
- */
- public void focusGained(FocusEvent e) {
- Widget control= e.widget;
- for (int i= 0; i < fViewers.length; i++) {
- if (fViewers[i].getControl() == control) {
- focusChanged(fViewers[i]);
- return;
- }
- }
- }
-
- /**
- * @see FocusListener#focusLost
- */
- public void focusLost(FocusEvent e) {
- focusChanged(null);
- }
-
-
- }
-
-
-
-
-} \ No newline at end of file
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 1fcdd8bd71..893d2a8c6a 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
@@ -288,6 +288,7 @@ public class BuildPathsBlock {
IClasspathEntry curr= classpathEntries[i];
int entryKind= curr.getEntryKind();
IPath path= curr.getPath();
+ boolean isExported= curr.isExported();
// get the resource
IResource res= null;
boolean isMissing= false;
@@ -301,7 +302,7 @@ public class BuildPathsBlock {
IPath resolvedPath= JavaCore.getResolvedVariablePath(path);
isMissing= (resolvedPath == null) || !resolvedPath.toFile().isFile();
}
- CPListElement elem= new CPListElement(entryKind, path, res, curr.getSourceAttachmentPath(), curr.getSourceAttachmentRootPath());
+ CPListElement elem= new CPListElement(entryKind, path, res, curr.getSourceAttachmentPath(), curr.getSourceAttachmentRootPath(), isExported);
if (projExists) {
elem.setIsMissing(isMissing);
}
@@ -371,7 +372,7 @@ public class BuildPathsBlock {
IPath libPath= new Path(ClasspathVariablesPreferencePage.JRELIB_VARIABLE);
IPath attachPath= new Path(ClasspathVariablesPreferencePage.JRESRC_VARIABLE);
IPath attachRoot= new Path(ClasspathVariablesPreferencePage.JRESRCROOT_VARIABLE);
- CPListElement elem= new CPListElement(IClasspathEntry.CPE_VARIABLE, libPath, null, attachPath, attachRoot);
+ CPListElement elem= new CPListElement(IClasspathEntry.CPE_VARIABLE, libPath, null, attachPath, attachRoot, false);
list.add(elem);
return list;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java
index ff725a21b3..e34ac56a56 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java
@@ -28,19 +28,19 @@ public class CPListElement {
///private URL fJavaDocLocation;
- public CPListElement(int entryKind, IPath path, IResource res, IPath attachPath, IPath attachRoot) {
+ public CPListElement(int entryKind, IPath path, IResource res, IPath attachPath, IPath attachRoot, boolean isExported) {
fEntryKind= entryKind;
fPath= path;
fSourceAttachmentPath= attachPath;
fSourceAttachmentPrefix= attachRoot;
fResource= res;
fIsMissing= false;
-
+ fIsExported= isExported;
fCachedEntry= null;
}
public CPListElement(int entryKind, IPath path, IResource res) {
- this(entryKind, path, res, null, null);
+ this(entryKind, path, res, null, null, false);
}

Back to the top