X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Feditor%2FModelUpdateEditor.java;h=ea14039eecb0bbe3fc1c65f5c45cdf8a6c225d60;hb=a93da57d733f096747647e5ebf1e0b2578417ac3;hp=919fe4b68238d05311533d363553bdad6de0bc17;hpb=20a9fae0ba905dc60889d87b57830caf79eeffc7;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/editor/ModelUpdateEditor.java b/org.simantics.interop.update/src/org/simantics/interop/update/editor/ModelUpdateEditor.java index 919fe4b..ea14039 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/editor/ModelUpdateEditor.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/editor/ModelUpdateEditor.java @@ -40,6 +40,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; +import org.simantics.Simantics; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.Session; @@ -59,7 +60,6 @@ import org.simantics.interop.update.model.UpdateOp; import org.simantics.interop.update.model.UpdateStatus; import org.simantics.interop.update.model.UpdateTree; import org.simantics.interop.utils.TableUtils; -import org.simantics.ui.SimanticsUI; import org.simantics.utils.datastructures.Pair; import org.simantics.utils.ui.ExceptionUtils; @@ -89,6 +89,7 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList private Color containsColor; private Color deletedColor; private Color addedColor; + private Color disabledColor; private ModelUpdate update; @@ -99,12 +100,14 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList super(parent,SWT.NONE); checked = manager.createImage(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/tick.png")); unchecked = manager.createImage(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/cross.png")); + unchecked = manager.createImage(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/cross.png")); warning = manager.createImage(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/error.png")); containsColor = new Color(parent.getDisplay(), new RGB(255,255,220)); deletedColor = new Color(parent.getDisplay(), new RGB(255,220,220)); addedColor = new Color(parent.getDisplay(), new RGB(220,255,220)); + disabledColor = new Color(parent.getDisplay(), new RGB(128,128,128)); this.setLayout(new GridLayout(1,false)); @@ -195,18 +198,15 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList changeViewer.setUseHashlookup(true); - TableViewerColumn selection = TableUtils.addColumn(changeViewer, getColumntTitle(0), false, false, 20); - TableViewerColumn diagram = TableUtils.addColumn(changeViewer, getColumntTitle(1), true, true, 100); - TableViewerColumn symbol = TableUtils.addColumn(changeViewer, getColumntTitle(2), true, true, 100); - TableViewerColumn property = TableUtils.addColumn(changeViewer, getColumntTitle(3), true, true, 100); - TableViewerColumn oldValue = TableUtils.addColumn(changeViewer, getColumntTitle(4), true, true, 100); - TableViewerColumn newValue = TableUtils.addColumn(changeViewer, getColumntTitle(5), true, true, 100); - - diagram.setLabelProvider(getLabelProvider(1)); - symbol.setLabelProvider(getLabelProvider(2)); - property.setLabelProvider(getLabelProvider(3)); - oldValue.setLabelProvider(getLabelProvider(4)); - newValue.setLabelProvider(getLabelProvider(5)); + TableViewerColumn cols[] = new TableViewerColumn[getChangeListColumnCount()]; + TableViewerColumn selection = TableUtils.addColumn(changeViewer, getColumntTitle(0), false, false, getChangeListColumnWidth(0)); + cols[0] = selection; + for (int i = 1 ; i < getChangeListColumnCount(); i++) { + TableViewerColumn column = TableUtils.addColumn(changeViewer, getColumntTitle(i), true, getChangeListColumnSortable(i), getChangeListColumnWidth(i)); + cols[i] = column; + column.setLabelProvider(getLabelProvider(i)); + configureChangeListColumn(i, column); + } selection.setLabelProvider(new SelectionLabelProvider()); selection.getColumn().addSelectionListener(new SelectionAdapter() { @@ -264,8 +264,28 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList }); } + protected int getChangeListColumnCount() { + return 6; + } + + protected int getChangeListColumnWidth(int col) { + if (col == 0) + return 20; + return 100; + } + + protected boolean getChangeListColumnSortable(int col) { + if (col == 0) + return false; + return true; + } + + protected void configureChangeListColumn(int col, TableViewerColumn column) { + + } + protected Session getSession() { - return SimanticsUI.getSession(); + return Simantics.getSession(); } protected String getColumntTitle(int i) { @@ -358,7 +378,7 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList selectedStructure.remove(n); } changeBrowser.setChecked(n, sel); - changeBrowser.setGrayed(n, false); + changeBrowser.setGrayed(n, !op.enabled()); } } } else { @@ -408,6 +428,8 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList protected void setInputs() { changeViewer.setInput(update.getUpdateList().getChanges()); changeBrowser.setInput(update.getUpdateTree()); + updateAllButton.setEnabled(true); + updateSelectedButton.setEnabled(true); } private void applyAll() { @@ -537,11 +559,36 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList if (update == null || !update.isInit()) return null; PropertyChange pc = (PropertyChange)element; + if (pc.applied()) + return null; if (pc.selected()) return checked; else return unchecked; } + + @Override + public Color getForeground(Object element) { + PropertyChange pc = (PropertyChange)element; + if (!pc.enabled()) + return disabledColor; + return null; + } + } + + protected abstract class PropertyChangeLabelProvider extends ColumnLabelProvider { + + public PropertyChangeLabelProvider() { + + } + + @Override + public Color getForeground(Object element) { + PropertyChange pc = (PropertyChange)element; + if (!pc.enabled()) + return disabledColor; + return null; + } } private class UpdateNodeLabelProvider extends ColumnLabelProvider { @@ -600,6 +647,14 @@ public abstract class ModelUpdateEditor extends Composite implements WarningList return addedColor; return null; } + + @Override + public Color getForeground(Object element) { + final UpdateNode node = (UpdateNode)element; + if (node.getOp() != null && !node.getOp().enabled()) + return disabledColor; + return null; + } } private class SelectionEditingSupport extends EditingSupport {