]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.workbench/src/org/simantics/workbench/internal/contributions/GraphRequestStatusContribution.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.workbench / src / org / simantics / workbench / internal / contributions / GraphRequestStatusContribution.java
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
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.workbench.internal.contributions;\r
13 \r
14 import org.eclipse.swt.widgets.Composite;\r
15 import org.eclipse.swt.widgets.Control;\r
16 import org.eclipse.ui.IWorkbenchWindow;\r
17 import org.eclipse.ui.menus.WorkbenchWindowControlContribution;\r
18 import org.simantics.db.management.ISessionContext;\r
19 import org.simantics.db.management.ISessionContextChangedListener;\r
20 import org.simantics.db.management.ISessionContextProvider;\r
21 import org.simantics.db.management.SessionContextChangedEvent;\r
22 import org.simantics.ui.SimanticsUI;\r
23 import org.simantics.workbench.internal.Activator;\r
24 \r
25 \r
26 /**\r
27  * @author Tuukka Lehtonen\r
28  */\r
29 public class GraphRequestStatusContribution extends WorkbenchWindowControlContribution implements ISessionContextChangedListener {\r
30 \r
31     GraphRequestStatusTrim  trim;\r
32     ISessionContextProvider contextProvider;\r
33 \r
34     @Override\r
35     public String getId() {\r
36         return "org.simantics.workbench.db.monitor";\r
37     }\r
38 \r
39     @Override\r
40     protected Control createControl(Composite parent) {\r
41         IWorkbenchWindow window = getWorkbenchWindow();\r
42         contextProvider = SimanticsUI.getSessionContextProvider(window);\r
43         contextProvider.addContextChangedListener(this);\r
44 \r
45         trim = new GraphRequestStatusTrim(parent, Activator.getDefault().getPreferenceStore());\r
46         ISessionContext ctx = SimanticsUI.getSessionContext();\r
47         if (ctx != null) {\r
48             trim.attachToSession(ctx.getSession());\r
49         }\r
50         return trim;\r
51     }\r
52 \r
53     @Override\r
54     public void dispose() {\r
55         contextProvider.removeContextChangedListener(this);\r
56         trim = null;\r
57         super.dispose();\r
58     }\r
59 \r
60     @Override\r
61     public void sessionContextChanged(SessionContextChangedEvent event) {\r
62 //        System.out.println("session changed for '" + event.getHandle() + "' from '" + event.getOldValue() + "' to '" + event.getNewValue() + "'");\r
63         GraphRequestStatusTrim trim = this.trim;\r
64         if (trim != null) {\r
65             ISessionContext ctx = event.getNewValue();\r
66             trim.attachToSession((ctx != null) ? ctx.getSession() : null);\r
67         }\r
68     }\r
69 \r
70 }\r