import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
+import org.eclipse.nebula.widgets.nattable.config.EditableRule;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IEditableRule;
+import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes;
import org.eclipse.nebula.widgets.nattable.edit.gui.ICellEditDialog;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
//make cell editable
configRegistry.registerConfigAttribute(
EditConfigAttributes.CELL_EDITABLE_RULE,
- IEditableRule.ALWAYS_EDITABLE,
+ getEditRule(matrix.getBodyDataProvider()),
+// IEditableRule.ALWAYS_EDITABLE,
DisplayMode.EDIT,
CharacterMatrixConfigLabelAccumulator.CATEGORICAL_EDITABLE
);
//make cell editable
configRegistry.registerConfigAttribute(
EditConfigAttributes.CELL_EDITABLE_RULE,
- IEditableRule.ALWAYS_EDITABLE,
+ getEditRule(matrix.getBodyDataProvider()),
+// IEditableRule.ALWAYS_EDITABLE,
DisplayMode.EDIT,
CharacterMatrixConfigLabelAccumulator.QUANTITATIVE_EDITABLE
);
DisplayMode.NORMAL,
CharacterMatrixConfigLabelAccumulator.QUANTITATIVE);
+
+
//Open cell editor in dialog
configRegistry.registerConfigAttribute(
EditConfigAttributes.OPEN_IN_DIALOG,
DisplayMode.EDIT,
CharacterMatrixConfigLabelAccumulator.QUANTITATIVE_EDITABLE);
}
+
+
+ private static IEditableRule getEditRule(final IDataProvider dataProvider) {
+ return new EditableRule(){
+ public boolean isEditable(int columnIndex, int rowIndex) {
+ Object dataValue = dataProvider.getDataValue(columnIndex, rowIndex);
+ if (dataValue instanceof Set && ((Set)dataValue).size()>1){
+ return false;
+ }else return true;
+ }
+ };
+ }
}