1 package org.simantics.diagram.profile.view;
\r
3 import java.util.List;
\r
5 import org.eclipse.jface.viewers.ISelection;
\r
6 import org.simantics.Simantics;
\r
7 import org.simantics.browsing.ui.swt.ModelledActionImpl;
\r
8 import org.simantics.db.Resource;
\r
9 import org.simantics.db.WriteGraph;
\r
10 import org.simantics.db.common.request.WriteRequest;
\r
11 import org.simantics.db.common.utils.OrderedSetUtils;
\r
12 import org.simantics.db.exception.DatabaseException;
\r
13 import org.simantics.db.layer0.SelectionHints;
\r
14 import org.simantics.diagram.stubs.DiagramResource;
\r
15 import org.simantics.utils.ui.ISelectionUtils;
\r
17 public class RemoveEntriesAction extends ModelledActionImpl<Resource> {
\r
19 public RemoveEntriesAction(Resource configuration) {
\r
20 super(configuration);
\r
23 public void run(Resource runtimeDiagram) {
\r
25 ISelection selection = getParameter(DiagramResource.URIs.ProfilesView_SelectedEntries);
\r
26 final List<ResourcePair> selectedEntries = ISelectionUtils.getPossibleKeys(selection, SelectionHints.KEY_MAIN, ResourcePair.class);
\r
27 if(selectedEntries != null && !selectedEntries.isEmpty()) {
\r
28 System.err.println("RemoveEntriesAction has " + selection + " for " + runtimeDiagram);
\r
30 Simantics.getSession().syncRequest(new WriteRequest() {
\r
33 public void perform(WriteGraph graph) throws DatabaseException {
\r
35 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
36 for(ResourcePair entry : selectedEntries) {
\r
37 Resource list = graph.getPossibleObject(entry.getFirst(), DIA.HasEntries);
\r
38 OrderedSetUtils.remove(graph, list, entry.getSecond());
\r
44 } catch (DatabaseException e) {
\r
45 e.printStackTrace();
\r