]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/Paste.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / Paste.java
1 package org.simantics.modeling.ui.actions;\r
2 \r
3 import org.simantics.Simantics;\r
4 import org.simantics.browsing.ui.BuiltinKeys;\r
5 import org.simantics.browsing.ui.NodeContext;\r
6 import org.simantics.db.Resource;\r
7 import org.simantics.db.common.primitiverequest.Adapter;\r
8 import org.simantics.db.common.utils.Logger;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.db.layer0.adapter.ActionFactory;\r
11 import org.simantics.db.layer0.adapter.PasteHandler;\r
12 import org.simantics.modeling.ui.modelBrowser.handlers.StandardPasteHandler;\r
13 \r
14 public class Paste implements ActionFactory {\r
15 \r
16         @Override\r
17     public Runnable create(Object target) {\r
18 \r
19                 if (!(target instanceof Resource))\r
20                         return null;\r
21                 \r
22                 final Resource resource = (Resource)target;\r
23                 \r
24         return new Runnable() {\r
25             @Override\r
26             public void run() {\r
27 \r
28                 try {\r
29                         PasteHandler handler = Simantics.getSession().syncRequest(new Adapter<PasteHandler>(resource, PasteHandler.class));\r
30                         if (handler != null) {\r
31                             Simantics.getSession().markUndoPoint();\r
32                                 StandardPasteHandler.pasteResourceFromClipboardWithoutMonitor(handler);\r
33                         }\r
34                 } catch (DatabaseException e) {\r
35                         Logger.defaultLogError(e);\r
36                 }\r
37                 \r
38             }\r
39         };\r
40     }\r
41 \r
42 }\r