Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulian Honnen2019-01-21 09:13:09 +0000
committerJulian Honnen2019-01-21 09:13:30 +0000
commit1c327b1c6f834fdf72997305815049fa147f0a6c (patch)
treee4d92848ed90df563a5ed324509d621a3908d06e
parent49064e3d6d8a8494ddccdc79373026a5427a0d88 (diff)
downloadeclipse.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.java20
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/util/SourcePluginFilter.java24
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;
}

Back to the top