1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.ui.workbench;
\r
14 import java.util.List;
\r
16 import org.eclipse.swt.widgets.Menu;
\r
17 import org.eclipse.ui.IPerspectiveDescriptor;
\r
18 import org.eclipse.ui.IPerspectiveListener4;
\r
19 import org.eclipse.ui.IWindowListener;
\r
21 import org.eclipse.ui.IWorkbenchPage;
\r
22 import org.eclipse.ui.IWorkbenchPartReference;
\r
23 import org.eclipse.ui.IWorkbenchWindow;
\r
24 import org.eclipse.ui.PlatformUI;
\r
25 import org.eclipse.ui.internal.WorkbenchWindow;
\r
26 import org.eclipse.ui.internal.progress.ProgressRegion;
\r
29 * Handler for perspectiveBars ExtensionPoint
\r
31 * FIXME : statusLine widgets are not restored into original positions.
\r
33 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
\r
36 @SuppressWarnings("restriction")
\r
37 public class PerspectiveBarsActivator implements IPerspectiveListener4, IWindowListener {
\r
39 private IWorkbenchWindow activeWindow;
\r
42 public PerspectiveBarsActivator() {
\r
43 PlatformUI.getWorkbench().addWindowListener(this);
\r
46 public void dispose() {
\r
47 PlatformUI.getWorkbench().removeWindowListener(this);
\r
50 //------------------------------------------------------------------------
\r
51 // IPerspectiveListener4
\r
52 //------------------------------------------------------------------------
\r
55 public void perspectivePreDeactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
\r
59 public void perspectiveClosed(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
\r
63 public void perspectiveDeactivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
\r
67 public void perspectiveOpened(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
\r
71 public void perspectiveSavedAs(IWorkbenchPage page, IPerspectiveDescriptor oldPerspective,
\r
72 IPerspectiveDescriptor newPerspective) {
\r
76 public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective,
\r
77 IWorkbenchPartReference partRef, String changeId) {
\r
78 // See IWorkbenchPage.CHANGED_* constants for change id's.
\r
82 public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
\r
83 activatePerspective(perspective.getId());
\r
87 public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
\r
88 // See IWorkbenchPage.CHANGED_* constants for change id's.
\r
91 //------------------------------------------------------------------------
\r
93 //------------------------------------------------------------------------
\r
96 public void windowActivated(IWorkbenchWindow window) {
\r
97 // System.out.println("attaching to window: " + window);
\r
98 attachToWindow(window);
\r
102 public void windowClosed(IWorkbenchWindow window) {
\r
106 public void windowDeactivated(IWorkbenchWindow window) {
\r
107 // System.out.println("detaching from window: " + window);
\r
108 detachFromWindow(window);
\r
112 public void windowOpened(IWorkbenchWindow window) {
\r
115 //------------------------------------------------------------------------
\r
117 //------------------------------------------------------------------------
\r
119 private void attachToWindow(IWorkbenchWindow window) {
\r
120 activeWindow = window;
\r
121 window.addPerspectiveListener(this);
\r
122 IPerspectiveDescriptor perspective = window.getActivePage().getPerspective();
\r
123 if (perspective != null) {
\r
124 activatePerspective(perspective.getId());
\r
128 private void detachFromWindow(IWorkbenchWindow window) {
\r
129 window.removePerspectiveListener(this);
\r
137 private void activatePerspective(String perspectiveId) {
\r
138 // System.out.println("activating perspective: " + perspectiveId);
\r
141 List<IPerspectiveBarsExtension> exts = PerspectiveBarsManager.getInstance().getExtensions(perspectiveId);
\r
142 Boolean menuBar = null;
\r
143 Boolean coolBar = null;
\r
144 Boolean statusLine = null;
\r
145 Boolean perspectiveBar = null;
\r
146 Boolean fastViewBar = null;
\r
147 Boolean progressIndicator = null;
\r
148 for (IPerspectiveBarsExtension ext : exts) {
\r
149 if (menuBar == null)
\r
150 menuBar = ext.getMenuBar();
\r
151 if (coolBar == null)
\r
152 coolBar = ext.getCoolBar();
\r
153 if (statusLine == null)
\r
154 statusLine = ext.getStatusLine();
\r
155 if (perspectiveBar == null)
\r
156 perspectiveBar = ext.getPerspectiveBar();
\r
157 if (fastViewBar == null)
\r
158 fastViewBar = ext.getFastViewBar();
\r
159 if (progressIndicator == null)
\r
160 progressIndicator = ext.getProgressIndicator();
\r
163 if (activeWindow instanceof WorkbenchWindow) {
\r
164 WorkbenchWindow window = (WorkbenchWindow)activeWindow;
\r
166 if (menuBar == null || menuBar == true) {
\r
167 Menu m = window.getShell().getMenuBar();
\r
168 if (m == null && menu != null) {
\r
169 window.getShell().setMenuBar(menu);
\r
172 Menu m = window.getShell().getMenuBar();
\r
175 window.getShell().setMenuBar(null);
\r
180 if (coolBar == null || coolBar == true) {
\r
181 window.setCoolBarVisible(true);
\r
183 window.setCoolBarVisible(false);
\r
186 if (statusLine == null || statusLine == true) {
\r
187 window.setStatusLineVisible(true);
\r
188 //window.showHeapStatus(true);
\r
190 window.setStatusLineVisible(false);
\r
191 //window.showHeapStatus(false);
\r
194 if (perspectiveBar == null || perspectiveBar == true) {
\r
195 window.setPerspectiveBarVisible(true);
\r
197 window.setPerspectiveBarVisible(false);
\r
200 // Bug 479522 - Remove unused fastView methods in WorkbenchWindow
\r
201 //if (fastViewBar == null || fastViewBar == true) {
\r
202 // window.setFastViewBarVisible(true);
\r
204 // window.setFastViewBarVisible(false);
\r
207 if (progressIndicator == null || progressIndicator == true) {
\r
208 ProgressRegion r = window.getProgressRegion();
\r
210 r.getControl().setVisible(true);
\r
213 ProgressRegion r = window.getProgressRegion();
\r
215 r.getControl().setVisible(false);
\r
217 // Bug 486768 - Delete unused internal ITrimManager
\r
218 //window.getTrimManager().forceLayout();
\r