--- /dev/null
+package org.simantics.diagram.profile.view;\r
+\r
+import java.util.List;\r
+\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.simantics.Simantics;\r
+import org.simantics.browsing.ui.swt.ModelledActionImpl;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.common.utils.OrderedSetUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.SelectionHints;\r
+import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.utils.ui.ISelectionUtils;\r
+\r
+public class AddEntriesAction extends ModelledActionImpl<Resource> {\r
+\r
+ public AddEntriesAction(Resource configuration) {\r
+ super(configuration);\r
+ }\r
+ \r
+ public void run(final Resource runtimeDiagram) {\r
+\r
+ ISelection selection = getParameter(DiagramResource.URIs.ProfilesView_SelectedAvailableEntries);\r
+ final List<Resource> selectedEntries = ISelectionUtils.getPossibleKeys(selection, SelectionHints.KEY_MAIN, Resource.class);\r
+ if(selectedEntries != null && !selectedEntries.isEmpty()) {\r
+ try {\r
+ Simantics.getSession().syncRequest(new WriteRequest() {\r
+\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ \r
+ DiagramResource DIA = DiagramResource.getInstance(graph);\r
+ Resource activeProfile = graph.getPossibleObject(runtimeDiagram, DIA.RuntimeDiagram_HasRuntimeProfile);\r
+ Resource list = graph.getPossibleObject(activeProfile, DIA.HasEntries);\r
+ \r
+ for(Resource entry : selectedEntries) {\r
+ OrderedSetUtils.add(graph, list, entry);\r
+ }\r
+ \r
+ }\r
+\r
+ });\r
+ } catch (DatabaseException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+}\r