Skip to content

Commit b19891c

Browse files
committed
Add activities support to DynamicMenuContributionItem
The PR #2768 was not complete. Dynamic **menus** are not filtered with that PR but will be filtered with the provided change. See #2217
1 parent 586ef10 commit b19891c

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/Workbench.java

-1
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,6 @@ public void serviceChanged(ServiceEvent event) {
457457
* specializes this workbench instance
458458
* @since 3.0
459459
*/
460-
@SuppressWarnings("restriction")
461460
private Workbench(Display display, final WorkbenchAdvisor advisor, MApplication app, IEclipseContext appContext) {
462461
this.advisor = Objects.requireNonNull(advisor);
463462
this.display = Objects.requireNonNull(display);

bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbenchContributionFactory.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
* from the {@link Workbench} services.
2626
*
2727
*/
28-
@SuppressWarnings("restriction")
2928
class WorkbenchContributionFactory implements IContributionFactory {
3029

3130
private static final String BUNDLE_CLASS_PREFIX = "bundleclass://"; //$NON-NLS-1$
@@ -58,8 +57,11 @@ public Bundle getBundle(String uriString) {
5857

5958
@Override
6059
public boolean isEnabled(String uriString) {
61-
if (uriString != null && uriString.startsWith(BUNDLE_CLASS_PREFIX)) {
62-
String identifierId = uriString.substring(BUNDLE_CLASS_PREFIX.length());
60+
if (uriString != null) {
61+
String identifierId = uriString;
62+
if (uriString.startsWith(BUNDLE_CLASS_PREFIX)) {
63+
identifierId = uriString.substring(BUNDLE_CLASS_PREFIX.length());
64+
}
6365
if (activitySupport == null) {
6466
activitySupport = context.get(IWorkbenchActivitySupport.class);
6567
}

bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/menus/DynamicMenuContributionItem.java

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.eclipse.core.runtime.IConfigurationElement;
1919
import org.eclipse.core.runtime.ILog;
20+
import org.eclipse.e4.core.services.contributions.IContributionFactory;
2021
import org.eclipse.jface.action.ContributionItem;
2122
import org.eclipse.jface.action.IContributionItem;
2223
import org.eclipse.jface.action.IContributionManager;
@@ -45,6 +46,7 @@ public class DynamicMenuContributionItem extends ContributionItem {
4546
private final IServiceLocator locator;
4647
private boolean alreadyFailed;
4748
private ContributionItem loadedDynamicContribution;
49+
private IContributionFactory factory;
4850

4951
/**
5052
* Creates a DynamicMenuContributionItem
@@ -58,6 +60,7 @@ public DynamicMenuContributionItem(String id, IServiceLocator locator, IConfigur
5860

5961
this.locator = locator;
6062
this.dynamicAddition = dynamicAddition;
63+
this.factory = locator.getService(IContributionFactory.class);
6164
}
6265

6366
@Override
@@ -129,6 +132,9 @@ public boolean isVisible() {
129132
reportErrorForContribution(loadedDynamicContribution, e);
130133
}
131134
}
135+
if (factory != null && !factory.isEnabled(getId())) {
136+
return false;
137+
}
132138
return super.isVisible();
133139
}
134140

0 commit comments

Comments
 (0)