KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > ui > coverageview > SelectSessionAction


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: SelectSessionAction.java 338 2007-06-19 14:57:16Z mtnminds $
7  ******************************************************************************/

8 package com.mountainminds.eclemma.internal.ui.coverageview;
9
10 import org.eclipse.jface.action.Action;
11 import org.eclipse.jface.action.IMenuCreator;
12 import org.eclipse.jface.viewers.ILabelProvider;
13 import org.eclipse.osgi.util.NLS;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.events.SelectionAdapter;
16 import org.eclipse.swt.events.SelectionEvent;
17 import org.eclipse.swt.widgets.Control;
18 import org.eclipse.swt.widgets.Menu;
19 import org.eclipse.swt.widgets.MenuItem;
20 import org.eclipse.ui.model.WorkbenchLabelProvider;
21
22 import com.mountainminds.eclemma.core.CoverageTools;
23 import com.mountainminds.eclemma.core.ICoverageSession;
24 import com.mountainminds.eclemma.core.ISessionManager;
25 import com.mountainminds.eclemma.internal.ui.EclEmmaUIPlugin;
26 import com.mountainminds.eclemma.internal.ui.UIMessages;
27
28 /**
29  * Drop-down action to select the active session. Internally used by the
30  * coverage view.
31  *
32  * @author Marc R. Hoffmann
33  * @version $Revision: 338 $
34  */

35 class SelectSessionAction extends Action implements IMenuCreator {
36
37   private Menu menu;
38
39   SelectSessionAction() {
40     setText(UIMessages.CoverageViewSelectSessionAction_label);
41     setToolTipText(UIMessages.CoverageViewSelectSessionAction_looltip);
42     setImageDescriptor(EclEmmaUIPlugin
43         .getImageDescriptor(EclEmmaUIPlugin.ELCL_SESSION));
44     setDisabledImageDescriptor(EclEmmaUIPlugin
45         .getImageDescriptor(EclEmmaUIPlugin.DLCL_SESSION));
46     setMenuCreator(this);
47     setEnabled(false);
48   }
49
50   public Menu getMenu(Control parent) {
51     if (menu != null) {
52       menu.dispose();
53     }
54     menu = new Menu(parent);
55
56     ILabelProvider labelprovider = new WorkbenchLabelProvider();
57     final ISessionManager manager = CoverageTools.getSessionManager();
58     ICoverageSession[] sessions = manager.getSessions();
59     ICoverageSession active = manager.getActiveSession();
60     for (int i = 0; i < sessions.length; i++) {
61       final ICoverageSession session = sessions[i];
62       MenuItem item = new MenuItem(menu, SWT.RADIO);
63       Object JavaDoc[] labelparams = new Object JavaDoc[] { new Integer JavaDoc(i + 1),
64           labelprovider.getText(session) };
65       item.setText(NLS.bind(UIMessages.CoverageViewSelectSessionActionEntry_label,
66           labelparams));
67       item.setImage(labelprovider.getImage(session));
68       item.setSelection(session == active);
69       item.addSelectionListener(new SelectionAdapter() {
70         public void widgetSelected(SelectionEvent e) {
71           manager.activateSession(session);
72         }
73       });
74     }
75     return menu;
76   }
77
78   public Menu getMenu(Menu parent) {
79     return null;
80   }
81
82   public void dispose() {
83   }
84
85 }
86
Popular Tags