diff options
author | Julian Honnen | 2019-01-21 09:13:09 +0000 |
---|---|---|
committer | Julian Honnen | 2019-01-21 09:13:30 +0000 |
commit | 1c327b1c6f834fdf72997305815049fa147f0a6c (patch) | |
tree | e4d92848ed90df563a5ed324509d621a3908d06e | |
parent | 49064e3d6d8a8494ddccdc79373026a5427a0d88 (diff) | |
download | eclipse.pde.ui-1c327b1c6f834fdf72997305815049fa147f0a6c.tar.gz eclipse.pde.ui-1c327b1c6f834fdf72997305815049fa147f0a6c.tar.xz eclipse.pde.ui-1c327b1c6f834fdf72997305815049fa147f0a6c.zip |
Bug 313672 - [launch config] fixed incorrect selected counterI20190122-1800I20190121-1800I20190121-1415
Filter out source plugins before the content provider instead of using a
viewer filter. fWorkspace/ExternalModels then contains exactly the
plugins that are visible when no *UI* filter is applied.
Change-Id: Ia82deb074517ab2eaba006dc575f514ecfdb085d
Signed-off-by: Julian Honnen <julian.honnen@vector.com>
-rw-r--r-- | ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java | 20 | ||||
-rw-r--r-- | ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java | 24 |
2 files changed, 26 insertions, 18 deletions
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java index 66cfc5af47..2eecefefa1 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java @@ -279,7 +279,7 @@ public abstract class AbstractPluginBlock { */ protected IPluginModelBase[] getExternalModels() { if (fExternalModels == null) { - fExternalModels = PluginRegistry.getExternalModels(); + fExternalModels = collectModelsToDisplay(PluginRegistry.getExternalModels()); } return fExternalModels; } @@ -291,18 +291,19 @@ public abstract class AbstractPluginBlock { */ protected IPluginModelBase[] getWorkspaceModels() { if (fWorkspaceModels == null) { - IPluginModelBase[] models = PluginRegistry.getWorkspaceModels(); - ArrayList<IPluginModelBase> list = new ArrayList<>(models.length); - for (IPluginModelBase model : models) { - if (model.getBundleDescription() != null) { - list.add(model); - } - } - fWorkspaceModels = list.toArray(new IPluginModelBase[list.size()]); + fWorkspaceModels = collectModelsToDisplay(PluginRegistry.getWorkspaceModels()); } return fWorkspaceModels; } + private IPluginModelBase[] collectModelsToDisplay(IPluginModelBase[] models) { + SourcePluginFilter sourcePluginFilter = new SourcePluginFilter(); + return Arrays.stream(models) + .filter(model -> model.getBundleDescription() != null) + .filter(sourcePluginFilter) + .toArray(IPluginModelBase[]::new); + } + protected void updateCounter() { if (fCounter != null) { int checked = fNumExternalChecked + fNumWorkspaceChecked; @@ -436,7 +437,6 @@ public abstract class AbstractPluginBlock { fExternalPlugins = new NamedElement(PDEUIMessages.PluginsTab_target, siteImage); fPluginTreeViewer.addFilter(new Filter()); - fPluginTreeViewer.addFilter(new SourcePluginFilter()); Tree tree = fPluginTreeViewer.getTree(); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java index 467d82cfb6..1a6b540ea8 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.pde.internal.ui.util; +import java.util.function.Predicate; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; @@ -23,7 +24,7 @@ import org.eclipse.pde.internal.core.TargetPlatformHelper; import org.eclipse.pde.internal.ui.IPreferenceConstants; import org.eclipse.pde.internal.ui.PDEPlugin; -public class SourcePluginFilter extends ViewerFilter { +public class SourcePluginFilter extends ViewerFilter implements Predicate<IPluginModelBase> { private PDEState fState; @@ -42,15 +43,22 @@ public class SourcePluginFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof IPluginModelBase) { - IPreferenceStore store = PDEPlugin.getDefault().getPreferenceStore(); - boolean showSourceBundles = store.getBoolean(IPreferenceConstants.PROP_SHOW_SOURCE_BUNDLES); - if (fState != null && !showSourceBundles) { - BundleDescription description = ((IPluginModelBase) element).getBundleDescription(); - if (description != null) { - return fState.getBundleSourceEntry(description.getBundleId()) == null; - } + return test((IPluginModelBase) element); + } + return true; + } + + @Override + public boolean test(IPluginModelBase element) { + IPreferenceStore store = PDEPlugin.getDefault().getPreferenceStore(); + boolean showSourceBundles = store.getBoolean(IPreferenceConstants.PROP_SHOW_SOURCE_BUNDLES); + if (fState != null && !showSourceBundles) { + BundleDescription description = element.getBundleDescription(); + if (description != null) { + return fState.getBundleSourceEntry(description.getBundleId()) == null; } } + return true; } |