]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/ModelledActionImpl.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.browsing.ui.swt / src / org / simantics / browsing / ui / swt / ModelledActionImpl.java
1 /*******************************************************************************
2  * Copyright (c) 2012 Association for Decentralized Information Management in
3  * Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.browsing.ui.swt;
13
14 import org.eclipse.ui.IWorkbenchSite;
15 import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;
16 import org.simantics.db.Resource;
17 import org.simantics.db.exception.DatabaseException;
18 import org.simantics.db.management.ISessionContext;
19
20 public abstract class ModelledActionImpl<T> implements ModelledAction {
21
22         @SuppressWarnings("unused")
23     private Resource configuration;
24         private WidgetSupport support;
25         
26         public ModelledActionImpl(Resource configuration) {
27                 this.configuration = configuration;
28         }
29         
30         public abstract void run(T input);
31
32         @SuppressWarnings("unchecked")
33         protected <T2> T2 getParameter(String uri) {
34                 
35                 return (T2)support.getParameter(uri);           
36                 
37         }
38         
39         @Override
40         public Runnable create(IWorkbenchSite site, ISessionContext context, final WidgetSupport support) throws DatabaseException {
41         
42                 this.support = support;
43                 
44                 return new Runnable() {
45
46                         @Override
47                         public void run() {
48                                 @SuppressWarnings("unchecked")
49                                 T input = (T)support.getInput();
50                                 
51                                 ModelledActionImpl.this.run(input);
52                         }
53                         
54                 };
55                 
56         }
57         
58 }