bodyDataLayer.setConfigLabelAccumulator(new IConfigLabelAccumulator() {
@Override
public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition) {
- if (columnPosition == 0) {
+ if (bodyDataProvider.isCheckBoxColumn(columnPosition)) {
configLabels.addLabel(CHECK_BOX_LABEL);
} else if (validationResult != null && keyName != null) {
int keyColumn = bodyDataProvider.getVariableIndex(keyName);
new EditableRule() {
@Override
public boolean isEditable(int columnIndex, int rowIndex) {
- return columnIndex == 0;
+ return bodyDataProvider.isEditable(columnIndex, rowIndex);
}
});
LOGGER.error("Failed to read possible tech type key name for {}", componentType, e);
}
}
- return keyName.startsWith("_") ? keyName.substring(1) : keyName;
+ return keyName != null && keyName.startsWith("_") ? keyName.substring(1) : keyName;
}
@Override
super.dispose();
}
+ public Resource getComponentType() {
+ return this.componentType;
+ }
+
public void setComponentType(Resource componentType) {
if (Objects.equals(this.componentType, componentType))
return;
this.componentType = componentType;
this.keyName = getKeyColumnName(componentType);
-
- Simantics.getSession().asyncRequest(new TableDataRequest(componentType), new TableDataListener(componentType));
+
+ if (componentType != null) {
+ Simantics.getSession().asyncRequest(new TableDataRequest(componentType), new TableDataListener(componentType));
+ }
}
private final class TableDataListener implements Listener<Triple<Resource, String, List<Integer>>> {
@Override
public void execute(Triple<Resource, String, List<Integer>> result) {
TechTypeTable.this.getDisplay().asyncExec(() -> {
+ if (isDisposed() || result == null)
+ return;
+
TechTypeTable.this.tableResource = result.first;
String data = result.second;
int[] enabled = result.third.stream().mapToInt(Integer::intValue).toArray();