01: package de.uka.ilkd.key.casetool.eclipse;
02:
03: /*
04: * This file is part of KeY - Integrated Deductive Software Design
05: * Copyright (C) 2001-2005 Universitaet Karlsruhe, Germany
06: * Universitaet Koblenz-Landau, Germany
07: * Chalmers University of Technology, Sweden
08: *
09: * The KeY system is protected by the GNU General Public License.
10: */
11:
12: import org.eclipse.core.resources.IProject;
13: import org.eclipse.jdt.core.IJavaProject;
14: import org.eclipse.jface.action.Action;
15: import org.eclipse.jface.action.IAction;
16: import org.eclipse.jface.viewers.ISelection;
17: import org.eclipse.jface.viewers.StructuredSelection;
18: import org.eclipse.ui.IObjectActionDelegate;
19: import org.eclipse.ui.IWorkbenchPart;
20: import org.eclipse.ui.IWorkbenchWindow;
21: import org.eclipse.ui.IWorkbenchWindowActionDelegate;
22:
23: /**
24: * @author Marius Hillenbrand
25: *
26: * Action which opens the JML Specification browser on a project.
27: * This action is selectable in the context menu of a class (in the outline)
28: * or a java file (in the Package Explorer)
29: */
30: public class JavaProjectJMLBrowserAction extends Action implements
31: IObjectActionDelegate, IWorkbenchWindowActionDelegate {
32:
33: ISelection selection = null;
34:
35: public JavaProjectJMLBrowserAction() {
36: setEnabled(false);
37: }
38:
39: /* (non-Javadoc)
40: * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
41: */
42: public void setActivePart(IAction action, IWorkbenchPart targetPart) {
43: }
44:
45: /* (non-Javadoc)
46: * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
47: */
48: public void run(IAction action) {
49: IJavaProject javaProject = getSelectedJavaProject();
50: if (javaProject != null) {
51: IProject project = javaProject.getProject();
52:
53: int result = KeYPlugin.getDefault().assertProjectParsed(
54: project, true);
55:
56: if (result == KeYPlugin.PROJECT_ALREADY_OPEN)
57: KeYPlugin.getDefault()
58: .openJMLSpecBrowserOnCurrentLoadedModel();
59: // otherwise an error occured, the operation was aborted,
60: // or the JML Specification browser is opened when loading the
61: // java model
62: }
63: }
64:
65: private void enable(IAction action) {
66: final boolean actionEnabled = getSelectedJavaProject() != null;
67: action.setEnabled(actionEnabled);
68: this .setEnabled(actionEnabled);
69: }
70:
71: /* (non-Javadoc)
72: * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
73: */
74: public void selectionChanged(IAction action, ISelection selection) {
75: this .selection = selection;
76: enable(action);
77: }
78:
79: private IJavaProject getSelectedJavaProject() {
80: if (selection != null
81: && selection instanceof StructuredSelection) {
82: final StructuredSelection structuredSelection = (StructuredSelection) selection;
83: Object tmpSelected = structuredSelection.getFirstElement();
84: if (tmpSelected instanceof IJavaProject) {
85: return (IJavaProject) tmpSelected;
86: }
87:
88: }
89: return null;
90: }
91:
92: public void dispose() {
93: }
94:
95: public void init(IWorkbenchWindow window) {
96: }
97:
98: }
|