01: package org.eclipse.ui.internal.provisional.views.markers;
02:
03: import org.eclipse.jface.action.ContributionItem;
04: import org.eclipse.jface.action.IContributionItem;
05: import org.eclipse.swt.SWT;
06: import org.eclipse.swt.widgets.Event;
07: import org.eclipse.swt.widgets.Listener;
08: import org.eclipse.swt.widgets.Menu;
09: import org.eclipse.swt.widgets.MenuItem;
10: import org.eclipse.ui.views.markers.internal.MarkerSupportRegistry;
11:
12: /**
13: * ContentsContribution is the class that defines the content selection
14: * contribution for the {@link ExtendedMarkersView}.
15: *
16: * @since 3.4
17: *
18: */
19: public class ContentsContribution extends MarkersContribution {
20:
21: /**
22: * Create a new instance of the receiver.
23: */
24: public ContentsContribution() {
25: super ();
26: }
27:
28: /*
29: * (non-Javadoc)
30: *
31: * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
32: */
33: protected IContributionItem[] getContributionItems() {
34:
35: MarkerContentGenerator[] generators = MarkerSupportRegistry
36: .getInstance().getGenerators();
37: IContributionItem[] items = new IContributionItem[generators.length];
38: for (int i = 0; i < generators.length; i++) {
39: final MarkerContentGenerator generator = generators[i];
40: items[i] = new ContributionItem() {
41:
42: /*
43: * (non-Javadoc)
44: *
45: * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu,
46: * int)
47: */
48: public void fill(Menu menu, int index) {
49: MenuItem item = new MenuItem(menu, SWT.CHECK);
50: item.setText(generator.getName());
51: ExtendedMarkersView view = getView();
52: item.addListener(SWT.Selection,
53: getMenuItemListener(generator, view));
54: if (view != null && view.isShowing(generator))
55: item.setSelection(true);
56: }
57:
58: /**
59: * Create a menu listener for the generator and the view.
60: *
61: * @param generator
62: * @param view
63: * @return Listener
64: */
65: private Listener getMenuItemListener(
66: final MarkerContentGenerator generator,
67: final ExtendedMarkersView view) {
68: return new Listener() {
69: /*
70: * (non-Javadoc)
71: *
72: * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
73: */
74: public void handleEvent(Event event) {
75: if (view != null)
76: view.setContentGenerator(generator);
77: }
78: };
79: }
80: };
81: }
82: return items;
83: }
84: }
|