import org.simantics.interop.update.Activator;
import org.simantics.interop.update.model.UpdateNode;
import org.simantics.interop.update.model.UpdateNode.Status;
+import org.simantics.interop.update.model.UpdateOp;
import org.simantics.interop.update.model.UpdateTree;
import org.simantics.interop.utils.TableUtils;
import org.simantics.ui.workbench.ResourceEditorPart2;
TreeViewerColumn dataColumn = TableUtils.addColumn(changeBrowser, "Data", true, 600);
- dataColumn.setLabelProvider(new UpdateNodeLabelProvicer());
+ dataColumn.setLabelProvider(new UpdateNodeLabelProvider());
changeBrowser.addCheckStateListener(new ICheckStateListener() {
while (!nodeStack.isEmpty()) {
UpdateNode n = nodeStack.pop();
if (n.getOp() != null) {
- boolean applied = n.getOp().applied();
- if (applied) {
- changeBrowser.setChecked(n, true);
+ UpdateOp op = n.getOp();
+ if (!op.isAdd() && !op.isDelete()) {
changeBrowser.setGrayed(n, true);
- selectedStructure.remove(n);
+ changeBrowser.setChecked(n, true);
} else {
- boolean sel = n.getOp().selected();
- if (sel) {
- selectedStructure.add(n);
-
- } else {
+ boolean applied = op.applied();
+ if (applied) {
+ changeBrowser.setChecked(n, true);
+ changeBrowser.setGrayed(n, true);
selectedStructure.remove(n);
+ } else {
+ boolean sel = op.selected();
+ if (sel) {
+ selectedStructure.add(n);
+
+ } else {
+ selectedStructure.remove(n);
+ }
+ changeBrowser.setChecked(n, sel);
+ changeBrowser.setGrayed(n, false);
}
- changeBrowser.setChecked(n, sel);
- changeBrowser.setGrayed(n, false);
}
} else {
changeBrowser.setGrayed(n, true);
}
}
- private class UpdateNodeLabelProvicer extends ColumnLabelProvider {
+ private class UpdateNodeLabelProvider extends ColumnLabelProvider {
@Override
public String getText(Object element) {
--- /dev/null
+package org.simantics.interop.update.model;
+
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.interop.test.GraphChanges;
+
+/**
+ * No-operation.
+ *
+ * @author MLMARKO
+ *
+ */
+public class NopOp extends UpdateOp{
+
+ private Resource r;
+ public NopOp(Resource r, GraphChanges changes) {
+ super(changes);
+ this.r = r;
+ }
+
+ @Override
+ protected void _apply(WriteGraph g) throws DatabaseException {
+
+ }
+
+ @Override
+ public Resource getCreatedResource() {
+ return r;
+ }
+
+ @Override
+ public Resource getResource() {
+ return r;
+ }
+
+ @Override
+ public boolean isAdd() {
+ return false;
+ }
+
+ @Override
+ public boolean isDelete() {
+ return false;
+ }
+
+ @Override
+ public boolean requiresParentOps() {
+ return false;
+ }
+
+ @Override
+ public boolean requiresSubOps() {
+ return false;
+ }
+
+}
public void addChild(UpdateNode node) {
children.add(node);
+ if (op != null && node.op != null) {
+ if (!op.getSubOps().contains(node.op)) {
+ op.addSubOp(node.op);
+ node.op.addParentOp(op);
+ }
+ }
}
public ImageDescriptor getImage(ReadGraph graph) throws DatabaseException {
public UpdateTree(ReadGraph g, GraphChanges changes, UpdateOperations updateOps) throws DatabaseException {
this.changes = changes;
this.nodes = new HashMap<Resource, UpdateNode>();
- this.rootNode = createNode(Status.EXIST, changes.getResource1());
+ this.rootNode = createNode(g, Status.EXIST, changes.getResource1());
nodes.put(changes.getResource1(), rootNode);
nodes.put(changes.getResource2(), rootNode);
this.updateOps = updateOps;
return rootNode;
}
- protected UpdateNode createNode(Status status, Resource r) {
+ public GraphChanges getChanges() {
+ return changes;
+ }
+
+ protected UpdateNode createNode(ReadGraph g, Status status, Resource r) throws DatabaseException {
return new UpdateNode(status, r);
}
return new UpdateNode(status, op);
}
- private UpdateNode createNode(Resource r1, Resource r2) {
+ private UpdateNode createNode(ReadGraph g, Resource r1, Resource r2) throws DatabaseException {
UpdateNode node = null;
if (r1 != null && r2 != null) {
- node = createNode(Status.EXIST, r1);
+ node = createNode(g, Status.EXIST, r1);
nodes.put(r1, node);
nodes.put(r2, node);
} else if (r1 != null) {
if (nodes.containsKey(r2))
return nodes.get(r2);
- UpdateNode node = createNode(r1, r2);
+ UpdateNode node = createNode(g, r1, r2);
connectParent(g,node);
return node;
}
UpdateNode parent = nodes.get(parentResource);
if (parent == null) {
if (changes.getComparable().containsLeft(parentResource)) {
- parent = createNode(parentResource, changes.getComparable().getRight(parentResource));
+ parent = createNode(g, parentResource, changes.getComparable().getRight(parentResource));
} else if (changes.getComparable().containsRight(parentResource)) {
- parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource);
+ parent = createNode(g, changes.getComparable().getLeft(parentResource) ,parentResource);
} else {
return null;
}