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;
import org.simantics.interop.test.GraphChanges;
import org.simantics.interop.update.Activator;
import org.simantics.interop.update.model.ModelUpdate;
-import org.simantics.interop.update.model.PropertyChange;
import org.simantics.interop.update.model.ModelUpdate.WarningListener;
+import org.simantics.interop.update.model.PropertyChange;
import org.simantics.interop.update.model.UpdateList;
import org.simantics.interop.update.model.UpdateNode;
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.Callback;
import org.simantics.utils.datastructures.Pair;
import org.simantics.utils.ui.ExceptionUtils;
private Color containsColor;
private Color deletedColor;
private Color addedColor;
+ private Color disabledColor;
private ModelUpdate update;
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));
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() {
});
}
+ 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) {
selectedStructure.remove(n);
}
changeBrowser.setChecked(n, sel);
- changeBrowser.setGrayed(n, false);
+ changeBrowser.setGrayed(n, !op.enabled());
}
}
} else {
protected void setInputs() {
changeViewer.setInput(update.getUpdateList().getChanges());
changeBrowser.setInput(update.getUpdateTree());
+ updateAllButton.setEnabled(true);
+ updateSelectedButton.setEnabled(true);
}
private void applyAll() {
}
- }, new Callback<DatabaseException>() {
- @Override
- public void run(DatabaseException parameter) {
- if (parameter != null)
- ExceptionUtils.logAndShowError("Cannot update model", parameter);
- }
+ }, e -> {
+ if (e != null)
+ ExceptionUtils.logAndShowError("Cannot update model", e);
});
}
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 {
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 {
- @SuppressWarnings("rawtypes")
public SelectionEditingSupport(ColumnViewer viewer) {
super(viewer);
-
}
@Override
return pc.selected();
}
- @SuppressWarnings("unchecked")
@Override
protected void setValue(Object element, Object value) {
if (update == null || !update.isInit())