import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.window.DefaultToolTip;
+import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
break;
case 1:
- data.editType(table, editor, propertyInfo, selectedItem, column, false);
+ data.editType(table, editor, propertyInfo, selectedItem, column, null, false);
break;
case 2:
SCLContext sclContext = SCLContext.getCurrent();
Object oldGraph = sclContext.get("graph");
try {
- CompileSCLMonitorRequest compileSCLMonitorRequest = new CompileSCLMonitorRequest(graph, context) {
- @Override
- protected String getExpressionText(ReadGraph graph) throws DatabaseException {
- return expression;
- }
- };
+ CompileSCLMonitorRequest compileSCLMonitorRequest = new ValidationCompilationRequest(graph, context, expression);
Function1<Variable,Object> exp = graph.syncRequest(compileSCLMonitorRequest);
sclContext.put("graph", graph);
//return exp.apply(context.getParent(graph));
item.setText(4, info.label);
item.setText(5, info.description);
+ if (info.valid != null)
+ item.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_RED));
+
item.setForeground(fg);
item.setData(info);
selectedItems.add(item);
}
+ new DefaultToolTip(table, ToolTip.NO_RECREATE, false) {
+
+ @Override
+ protected boolean shouldCreateToolTip(Event event) {
+ TableItem item = table.getItem(new Point(event.x, event.y));
+ if (item != null) {
+ ComponentTypeViewerPropertyInfo info = (ComponentTypeViewerPropertyInfo) item.getData();
+ return info.valid != null;
+ }
+ return false;
+ }
+
+ @Override
+ protected String getText(Event event) {
+ TableItem item = table.getItem(new Point(event.x, event.y));
+ if (item != null) {
+ ComponentTypeViewerPropertyInfo info = (ComponentTypeViewerPropertyInfo) item.getData();
+ return info.valid.replaceAll("\n", "");
+ }
+ return super.getText(event);
+ }
+ };
+
table.setTopIndex(topIndex);
table.setSelection(selectedItems.toArray(new TableItem[selectedItems.size()]));
table.redraw();
return 100.0;
}
+ private static final class ValidationCompilationRequest extends CompileSCLMonitorRequest {
+ private final String expression;
+
+ private ValidationCompilationRequest(ReadGraph graph, Variable context, String expression)
+ throws DatabaseException {
+ super(graph, context);
+ this.expression = expression;
+ }
+
+ @Override
+ protected String getExpressionText(ReadGraph graph) throws DatabaseException {
+ return expression;
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode() + 37 * expression.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj) && ((ValidationCompilationRequest)obj).expression.equals(expression);
+ }
+ }
+
}
\ No newline at end of file