Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 259617 Details for
Bug 487400
[classpath] Enable filtering for classpath tab entries
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch for filtered classpath entries
filtered-classpath.patch (text/plain), 8.43 KB, created by
Christian Buck
on 2016-02-07 05:48:18 EST
(
hide
)
Description:
Patch for filtered classpath entries
Filename:
MIME Type:
Creator:
Christian Buck
Created:
2016-02-07 05:48:18 EST
Size:
8.43 KB
patch
obsolete
>diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaClasspathTab.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaClasspathTab.java >index 13afaae..a89249d 100644 >--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaClasspathTab.java >+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/debug/ui/launchConfigurations/JavaClasspathTab.java >@@ -121,13 +121,13 @@ > > fClasspathViewer = new RuntimeClasspathViewer(comp); > fClasspathViewer.addEntriesChangedListener(this); >- fClasspathViewer.getControl().setFont(font); >- fClasspathViewer.setLabelProvider(new ClasspathLabelProvider()); >- fClasspathViewer.setContentProvider(new ClasspathContentProvider(this)); >+ fClasspathViewer.getTreeViewer().getControl().setFont(font); >+ fClasspathViewer.getTreeViewer().setLabelProvider(new ClasspathLabelProvider()); >+ fClasspathViewer.getTreeViewer().setContentProvider(new ClasspathContentProvider(this)); > if (!isShowBootpath()) { >- fClasspathViewer.addFilter(new BootpathFilter()); >+ fClasspathViewer.getTreeViewer().addFilter(new BootpathFilter()); > } >- >+ > Composite pathButtonComp = new Composite(comp, SWT.NONE); > GridLayout pathButtonLayout = new GridLayout(); > pathButtonLayout.marginHeight = 0; >@@ -208,7 +208,7 @@ > @Override > public void initializeFrom(ILaunchConfiguration configuration) { > refresh(configuration); >- fClasspathViewer.expandToLevel(2); >+ fClasspathViewer.getTreeViewer().expandToLevel(2); > } > > /* (non-Javadoc) >@@ -224,7 +224,7 @@ > return; > } > } >- fClasspathViewer.refresh(); >+ fClasspathViewer.getTreeViewer().refresh(); > } catch (CoreException e) { > } > } >@@ -235,23 +235,8 @@ > * @param configuration the configuration > */ > private void refresh(ILaunchConfiguration configuration) { >- boolean useDefault = true; > setErrorMessage(null); >- try { >- useDefault = configuration.getAttribute(IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH, true); >- } catch (CoreException e) { >- JDIDebugUIPlugin.log(e); >- } >- >- if (configuration == getLaunchConfiguration()) { >- // no need to update if an explicit path is being used and this setting >- // has not changed (and viewing the same config as last time) >- if (!useDefault) { >- setDirty(false); >- return; >- } >- } >- >+ > setLaunchConfiguration(configuration); > try { > createClasspathModel(configuration); >@@ -260,7 +245,7 @@ > } > > fClasspathViewer.setLaunchConfiguration(configuration); >- fClasspathViewer.setInput(fModel); >+ fClasspathViewer.getTreeViewer().setInput(fModel); > setDirty(false); > } > >diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/classpath/RuntimeClasspathViewer.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/classpath/RuntimeClasspathViewer.java >index 3299fb8..d38bfe3 100644 >--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/classpath/RuntimeClasspathViewer.java >+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/classpath/RuntimeClasspathViewer.java >@@ -27,8 +27,8 @@ > import org.eclipse.jdt.internal.debug.ui.launcher.IEntriesChangedListener; > import org.eclipse.jdt.internal.launching.LaunchingPlugin; > import org.eclipse.jdt.launching.IRuntimeClasspathEntry; >-import org.eclipse.jface.dialogs.IDialogConstants; > import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.ISelectionChangedListener; > import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.jface.viewers.TreeViewer; >@@ -37,14 +37,15 @@ > import org.eclipse.swt.events.DisposeListener; > import org.eclipse.swt.events.KeyAdapter; > import org.eclipse.swt.events.KeyEvent; >-import org.eclipse.swt.layout.GridData; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.dialogs.FilteredTree; >+import org.eclipse.ui.dialogs.PatternFilter; > > /** > * A viewer that displays and manipulates runtime classpath entries. > */ >-public class RuntimeClasspathViewer extends TreeViewer implements IClasspathViewer { >+public class RuntimeClasspathViewer implements IClasspathViewer { > > /** > * Entry changed listeners >@@ -70,31 +71,67 @@ > > } > }; >+ >+ private static class RuntimeClasspathFilteredTree extends FilteredTree { >+ >+ private boolean isFiltering; >+ >+ private RuntimeClasspathFilteredTree(Composite parent, int treeStyle, PatternFilter filter, boolean useNewLook) { >+ super(parent, treeStyle, filter, useNewLook); >+ } >+ >+ private TreeViewer getTreeViewer() { >+ return treeViewer; >+ } >+ >+ private boolean hasFilterTextEntered() { >+ return isFiltering; >+ } >+ >+ /** >+ * Called by modify listener -> implicit change listener. >+ */ >+ @Override >+ protected void textChanged() { >+ super.textChanged(); >+ >+ final String filterString = getFilterString(); >+ if (null != filterString) { >+ isFiltering = !filterString.trim().isEmpty(); >+ } else { >+ isFiltering = false; >+ } >+ } >+ >+ } >+ >+ private final RuntimeClasspathFilteredTree fTree; > >+ public TreeViewer getTreeViewer() { >+ return fTree.getTreeViewer(); >+ } >+ > /** > * Creates a runtime classpath viewer with the given parent. > * > * @param parent the parent control > */ > public RuntimeClasspathViewer(Composite parent) { >- super(parent); > >- GridData data = new GridData(GridData.FILL_BOTH); >- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; >- data.heightHint = getTree().getItemHeight(); >- getTree().setLayoutData(data); >+ fTree = new RuntimeClasspathFilteredTree(parent, 0, new PatternFilter(), true); > >- getTree().addKeyListener(new KeyAdapter() { >+ getTreeViewer().getTree().addKeyListener(new KeyAdapter() { > @Override > public void keyPressed(KeyEvent event) { >- if (updateSelection(RuntimeClasspathAction.REMOVE, (IStructuredSelection)getSelection()) && event.character == SWT.DEL && event.stateMask == 0) { >- List<?> selection= getSelectionFromWidget(); >- getClasspathContentProvider().removeAll(selection); >+ if (updateSelection(RuntimeClasspathAction.REMOVE, (IStructuredSelection) getSelection()) && event.character == SWT.DEL >+ && event.stateMask == 0) { >+ getClasspathContentProvider().removeAll(((IStructuredSelection) getSelectedEntries()).toList()); > notifyChanged(); > } > } > }); >- getTree().addDisposeListener(new DisposeListener() { >+ >+ fTree.addDisposeListener(new DisposeListener() { > @Override > public void widgetDisposed(DisposeEvent e) { > IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(LaunchingPlugin.ID_PLUGIN); >@@ -190,8 +227,8 @@ > * @param configuration the backing {@link ILaunchConfiguration} > */ > public void setLaunchConfiguration(ILaunchConfiguration configuration) { >- if (getLabelProvider() != null) { >- ((ClasspathLabelProvider)getLabelProvider()).setLaunchConfiguration(configuration); >+ if (getTreeViewer().getLabelProvider() != null) { >+ ((ClasspathLabelProvider) getTreeViewer().getLabelProvider()).setLaunchConfiguration(configuration); > } > } > >@@ -242,11 +279,11 @@ > */ > @Override > public Shell getShell() { >- return getControl().getShell(); >+ return getTreeViewer().getControl().getShell(); > } > > private ClasspathContentProvider getClasspathContentProvider() { >- return (ClasspathContentProvider)super.getContentProvider(); >+ return (ClasspathContentProvider) getTreeViewer().getContentProvider(); > } > > /* (non-Javadoc) >@@ -268,8 +305,11 @@ > } > } > return selection.size() > 0; >+ case RuntimeClasspathAction.MOVE: >+ if (fTree.hasFilterTextEntered()) { >+ return false; >+ } > case RuntimeClasspathAction.REMOVE : >- case RuntimeClasspathAction.MOVE : > selected= selection.iterator(); > while (selected.hasNext()) { > IClasspathEntry entry = selected.next(); >@@ -303,4 +343,30 @@ > > return new StructuredSelection(entries); > } >+ >+ @Override >+ public void addSelectionChangedListener(ISelectionChangedListener listener) { >+ getTreeViewer().addSelectionChangedListener(listener); >+ } >+ >+ @Override >+ public ISelection getSelection() { >+ return getTreeViewer().getSelection(); >+ } >+ >+ @Override >+ public void removeSelectionChangedListener(ISelectionChangedListener listener) { >+ getTreeViewer().removeSelectionChangedListener(listener); >+ } >+ >+ @Override >+ public void setSelection(ISelection selection) { >+ getTreeViewer().setSelection(selection); >+ } >+ >+ @Override >+ public void refresh(Object entry) { >+ getTreeViewer().refresh(); >+ } >+ > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 487400
: 259617 |
259749