]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/editor/ModelUpdateEditor.java
Store Property change selections to UpdateList
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / editor / ModelUpdateEditor.java
index 18dad814361946b46442952f8172a93e79d88152..9ea83a4c94577af32b8065087e26e4528fd0e4b3 100644 (file)
@@ -93,8 +93,7 @@ public abstract class ModelUpdateEditor extends Composite{
        private Color containsColor;
        private Color deletedColor;
        private Color addedColor;
-       
-       private HashSet<Pair<Statement, Statement>> selected = new HashSet<Pair<Statement,Statement>>();
+
        
        private HashSet<UpdateNode> selectedStructure = new HashSet<UpdateNode>();
        
@@ -213,23 +212,23 @@ public abstract class ModelUpdateEditor extends Composite{
                        oldValue.setLabelProvider(getLabelProvider(4));
                        newValue.setLabelProvider(getLabelProvider(5));
                        
-                       selection.setLabelProvider(new SelectionLabelProvider(selected));
+                       selection.setLabelProvider(new SelectionLabelProvider());
                        selection.getColumn().addSelectionListener(new SelectionAdapter() {
                                @Override
                                public void widgetSelected(SelectionEvent e) {
                                        if (updateList.getChanges().size() > 0) {
-                                               if (selected.contains(updateList.getChanges().iterator().next())) {
+                                               if (updateList.getSelected().contains(updateList.getChanges().iterator().next())) {
                                                        for (Pair<Statement, Statement> nr : updateList.getChanges())
-                                                               selected.remove(nr);
+                                                               updateList.removeSelected(nr);
                                                } else {
                                                        for (Pair<Statement, Statement> nr : updateList.getChanges())
-                                                               selected.add(nr);
+                                                               updateList.addSelected(nr);
                                                }
                                                changeViewer.refresh();
                                        }
                                }
                        });
-                       selection.setEditingSupport(new SelectionEditingSupport(changeViewer, selected));
+                       selection.setEditingSupport(new SelectionEditingSupport(changeViewer));
                
                }
                Composite buttonComposite = new Composite(this, SWT.NONE);
@@ -389,6 +388,7 @@ public abstract class ModelUpdateEditor extends Composite{
                for (ICheckStateListener l : checkStateListeners) {
                        l.checkStateChanged(new CheckStateChangedEvent(changeBrowser, null, false));
                }
+               changeViewer.refresh();
        }
        
        
@@ -440,7 +440,6 @@ public abstract class ModelUpdateEditor extends Composite{
                                for (Pair<Statement, Statement> mod : updateList.getChanges()) {
                                        applyLiteralChange(graph, mod);
                                }
-                               selected.clear();
                                updateList.clear();
                                
                                updateTree.getUpdateOps().applyAll(graph);
@@ -493,11 +492,10 @@ public abstract class ModelUpdateEditor extends Composite{
                        public void perform(WriteGraph graph) throws DatabaseException {
                                Layer0Utils.addCommentMetadata(graph, "Apply selected model updates");
                                graph.markUndoPoint();
-                               for (Pair<Statement, Statement> mod : selected) {
+                               for (Pair<Statement, Statement> mod : updateList.getSelected()) {
                                        updateList.removeChange(mod);
                                        applyLiteralChange(graph, mod);
                                }
-                               selected.clear();
                                
                                updateTree.getUpdateOps().applySelected(graph);
                                
@@ -675,9 +673,8 @@ public abstract class ModelUpdateEditor extends Composite{
        
        private class SelectionLabelProvider extends ColumnLabelProvider {
                
-               Collection<?>  selected;
-               public SelectionLabelProvider(Collection<?>  selected) {
-                       this.selected = selected;
+               public SelectionLabelProvider() {
+                       
                }
                @Override
                public String getText(Object element) {
@@ -686,7 +683,9 @@ public abstract class ModelUpdateEditor extends Composite{
                
                @Override
                public Image getImage(Object element) {
-                       if (selected.contains(element))
+                       if (updateList == null)
+                               return null;
+                       if (updateList.getSelected().contains(element))
                                return checked;
                        else
                                return unchecked;
@@ -753,14 +752,10 @@ public abstract class ModelUpdateEditor extends Composite{
        
        private class SelectionEditingSupport extends EditingSupport {
                
-               @SuppressWarnings("rawtypes")
-               Collection selected;
-
                
                @SuppressWarnings("rawtypes")
-               public SelectionEditingSupport(ColumnViewer viewer, Collection selected) {
+               public SelectionEditingSupport(ColumnViewer viewer) {
                        super(viewer);
-                       this.selected = selected;
                        
                }
 
@@ -776,16 +771,20 @@ public abstract class ModelUpdateEditor extends Composite{
                
                @Override
                protected Object getValue(Object element) {
-                       return selected.contains(element);
+                       if (updateList == null)
+                               return false;
+                       return updateList.getSelected().contains(element);
                }
                
                @SuppressWarnings("unchecked")
                @Override
                protected void setValue(Object element, Object value) {
+                       if (updateList == null)
+                               return;
                        if (Boolean.TRUE.equals(value))
-                               selected.add(element);
+                               updateList.addSelected((Pair<Statement, Statement>) element);
                        else
-                               selected.remove(element);
+                               updateList.removeSelected((Pair<Statement, Statement>) element);
                        
                        getViewer().refresh(element);
                }