1
/*******************************************************************************
2
* Copyright (c) 2009 QNX Software Systems and others.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* QNX Software Systems - initial API and implementation
10
*******************************************************************************/
12
package org.eclipse.cdt.internal.ui.workingsets;
14
import java.util.Collection;
15
import java.util.List;
17
import org.eclipse.jface.action.IContributionItem;
18
import org.eclipse.jface.action.MenuManager;
19
import org.eclipse.osgi.util.NLS;
20
import org.eclipse.ui.IWorkingSet;
21
import org.eclipse.ui.IWorkingSetManager;
22
import org.eclipse.ui.actions.CompoundContributionItem;
24
import org.eclipse.cdt.ui.CUIPlugin;
27
* A dynamic contribution of sub-menus for working set configuration actions, with further sub-menus showing
28
* the configurations to choose from.
30
* @author Christian W. Damus (cdamus)
34
abstract class AbstractWorkingSetsContribution extends CompoundContributionItem {
36
private IWorkingSetManager workingSetManager;
39
* Initializes me without an identifier.
41
public AbstractWorkingSetsContribution() {
46
* Initializes me with my identifier.
51
public AbstractWorkingSetsContribution(String id) {
56
protected IContributionItem[] getContributionItems() {
57
// at most 5 recent working sets
58
List<IContributionItem> result = new java.util.ArrayList<IContributionItem>(5);
61
for (IWorkingSet recent : getWorkingsetManager().getRecentWorkingSets()) {
62
IWorkingSetProxy proxy = WorkingSetConfigurationManager.getDefault().getWorkingSet(
66
IContributionItem item = createMenu(proxy, i++);
73
return result.toArray(new IContributionItem[result.size()]);
76
private IWorkingSetManager getWorkingsetManager() {
77
if (workingSetManager == null) {
78
workingSetManager = CUIPlugin.getDefault().getWorkbench().getWorkingSetManager();
81
return workingSetManager;
84
private IContributionItem createMenu(IWorkingSetProxy workingSet, int index) {
85
IContributionItem result = null;
86
IWorkingSet ws = workingSet.resolve();
87
String label = NLS.bind(WorkingSetMessages.WorkingSetMenus_enumPattern, index + 1, ws.getLabel());
88
Collection<IWorkingSetConfiguration> configs = workingSet.getConfigurations();
90
if (!configs.isEmpty()) {
91
MenuManager submenu = new MenuManager(label, ws.getName());
94
submenu.add(createContribution(workingSet));
101
* Creates a contribution item for a working set.
105
* @return the contribution
107
protected abstract IContributionItem createContribution(IWorkingSetProxy workingSet);