]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/RenameDiagramComponents.java
Allow selection of modules to rename through checkboxes and Select All/Clear Selectio...
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / RenameDiagramComponents.java
1 package org.simantics.modeling.ui.actions;\r
2 \r
3 import org.eclipse.core.runtime.IStatus;\r
4 import org.eclipse.core.runtime.Status;\r
5 import org.eclipse.jface.dialogs.Dialog;\r
6 import org.eclipse.ui.PlatformUI;\r
7 import org.simantics.Simantics;\r
8 import org.simantics.db.ReadGraph;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.WriteGraph;\r
11 import org.simantics.db.common.request.UniqueRead;\r
12 import org.simantics.db.common.request.WriteRequest;\r
13 import org.simantics.db.exception.DatabaseException;\r
14 import org.simantics.db.layer0.adapter.ActionFactory;\r
15 import org.simantics.modeling.ui.Activator;\r
16 import org.simantics.modeling.ui.diagram.renaming.ComponentsRenamingDialog;\r
17 import org.simantics.modeling.ui.diagram.renaming.ComponentsRenamingModel;\r
18 \r
19 /**\r
20  * @author Hannu Niemistö\r
21  */\r
22 public class RenameDiagramComponents implements ActionFactory {\r
23 \r
24     @Override\r
25     public Runnable create(Object target) {\r
26         if (!(target instanceof Resource))\r
27             return null;\r
28         final Resource composite = (Resource)target;\r
29 \r
30         return new Runnable() {\r
31             @Override\r
32             public void run() {\r
33                 try {\r
34                     ComponentsRenamingModel model = Simantics.getSession().syncRequest(new UniqueRead<ComponentsRenamingModel>() {\r
35                         @Override\r
36                         public ComponentsRenamingModel perform(ReadGraph graph) throws DatabaseException {\r
37                             return new ComponentsRenamingModel().read(graph, composite);\r
38                         }\r
39                     });\r
40                     ComponentsRenamingDialog dialog = new ComponentsRenamingDialog(\r
41                             PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),\r
42                             model);\r
43                     if(dialog.open() == Dialog.OK) {\r
44                         Simantics.getSession().syncRequest(new WriteRequest() {\r
45                             @Override\r
46                             public void perform(WriteGraph graph)\r
47                                     throws DatabaseException {\r
48                                 graph.markUndoPoint();\r
49                                 model.write(graph);\r
50                             }\r
51                         });\r
52                     }\r
53                 } catch (DatabaseException e) {\r
54                     Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "RenameDiagramComponents action failed, see exception for details", e));\r
55                 }\r
56             }\r
57         };\r
58     }\r
59 \r
60 }\r