import org.simantics.db.common.NamedResource;
import org.simantics.db.common.request.WriteRequest;
import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.function.DbConsumer;
import org.simantics.layer0.Layer0;
import org.simantics.modeling.userComponent.ComponentTypeCommands;
+import org.simantics.scl.runtime.function.Function2;
import org.simantics.scl.runtime.function.Function4;
import org.simantics.utils.ui.ErrorLogger;
this.componentType = componentType;
this.form = form;
}
-
+
public void editName(Table table, TableEditor editor, final ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column,
Pattern namePattern) {
+ editName(table, editor, propertyInfo, selectedItem, column, namePattern, null);
+ }
+
+ public void editName(Table table, TableEditor editor, final ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column,
+ Pattern namePattern, DbConsumer<WriteGraph> extraWriter) {
+ editName(table, editor, propertyInfo, selectedItem, column,
+ (pInfo, name) -> validatePropertyName(pInfo, name, namePattern),
+ extraWriter);
+ }
+
+ public void editName(Table table, TableEditor editor, ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column,
+ Function2<ComponentTypeViewerPropertyInfo, String, String> nameValidator)
+ {
+ editName(table, editor, propertyInfo, selectedItem, column, nameValidator, null);
+ }
+
+ public void editName(Table table, TableEditor editor, final ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column,
+ Function2<ComponentTypeViewerPropertyInfo, String, String> nameValidator, DbConsumer<WriteGraph> extraWriter) {
int extraStyle = propertyInfo.immutable ? SWT.READ_ONLY : 0;
final Text text = new Text(table, SWT.NONE | extraStyle);
org.eclipse.swt.widgets.Listener listener =
if (e.type == SWT.Modify) {
// validate current name
- String error = validatePropertyName(propertyInfo, text.getText(), namePattern);
+ String error = nameValidator.apply(propertyInfo, text.getText());
if (error != null) {
text.setBackground(text.getDisplay().getSystemColor(SWT.COLOR_RED));
form.setMessage(error, IMessageProvider.ERROR);
final String newValue = text.getText();
text.dispose();
- String error = validatePropertyName(propertyInfo, newValue, namePattern);
+ String error = nameValidator.apply(propertyInfo, newValue);
if (error != null)
return;
ComponentTypeCommands.rename(graph, propertyInfo.resource, newValue);
if (setLabel)
ComponentTypeCommands.setLabel(graph, propertyInfo.resource, ComponentTypeCommands.camelCaseNameToLabel(newValue));
+
+ if (extraWriter != null)
+ extraWriter.accept(graph);
}
});
}
}
text.dispose();
+ if (validator != null) {
+ String error = validator.apply(Simantics.getSession(), componentType, propertyInfo.resource, newValue);
+ if (error != null)
+ return;
+ }
+
if (writer != null) {
Simantics.getSession().async(new WriteRequest() {
@Override