protected String paintableId;
private boolean immediate;
+ private boolean nullSelectionAllowed = true;
private int selectMode = Table.SELECT_MODE_NONE;
showRowHeaders = uidl.getBooleanAttribute("rowheaders");
showColHeaders = uidl.getBooleanAttribute("colheaders");
+
+ nullSelectionAllowed = uidl.hasAttribute("nsa") ? uidl
+ .getBooleanAttribute("nsa") : true;
if (uidl.hasVariable("sortascending")) {
sortAscending = uidl.getBooleanVariable("sortascending");
toggleSelection(true);
setRowFocus(this);
+ // Ctrl click (Single selection)
+ } else if ((event.getCtrlKey() || event
+ .getMetaKey()
+ && selectMode == SELECT_MODE_SINGLE)) {
+ if (!isSelected()
+ || (isSelected() && nullSelectionAllowed)) {
+
+ if (!isSelected()) {
+ deselectAll();
+ }
+
+ toggleSelection(true);
+ setRowFocus(this);
+ }
+
// Shift click
} else if (event.getShiftKey()
&& selectMode == SELECT_MODE_MULTI
if (selectMode > SELECT_MODE_NONE
&& keycode == getNavigationSelectKey()) {
if (selectMode == SELECT_MODE_SINGLE) {
- boolean wasSelected = focusedRow.isSelected();
- deselectAll();
- if (!wasSelected) {
+ boolean wasSelected = focusedRow.isSelected();
+ deselectAll();
+ if (!wasSelected || !nullSelectionAllowed ) {
focusedRow.toggleSelection(true);
}
target.addAttribute("cols", cols);
target.addAttribute("rows", rows);
+ if (!isNullSelectionAllowed()) {
+ target.addAttribute("nsa", false);
+ }
+
target.addAttribute("firstrow",
(reqFirstRowToPaint >= 0 ? reqFirstRowToPaint
: firstToBeRenderedInClient));