}
// for table item
- void _select(int index) {
- _select(index, false);
+ void _select(int index, int buttonType, int stateMask) {
+
+ if (buttonType == 3) { // mouse right button
+ if (!isSelected(index)) {
+ setSelection(index);
+ }
+ } else {
+ if ((stateMask & SWT.CTRL) != 0) {
+ isCtrlKeyOn = true;
+ } else {
+ isCtrlKeyOn = false;
+ }
+ if ((stateMask & SWT.SHIFT) != 0) {
+ isShiftKeyOn = true;
+ } else {
+ isShiftKeyOn = false;
+ }
+ _select(index, false);
+ }
+
}
void _select(int index, boolean isAdd) {
if ((getStyle() & SWT.SINGLE) != 0
|| (!isCtrlKeyOn && !isShiftKeyOn && !isAdd)) {
setSelection(index);
- } else if ((isCtrlKeyOn && !isShiftKeyOn) || isAdd) {
+ } else if (isCtrlKeyOn || isAdd) { // ctrl key priority > shift key priority
if (this.isSelected(index)) {
if (selection.length == 1) {
this.deselect(index);
}
}
-// Event e = new Event();
-// e.item = items[index];
-// e.widget = this;
-// notifyListeners(SWT.Selection, e);
}
public int getItemCount() {
this.addPaintListener(patinListener);
this.addListener(SWT.MouseDown, eventListener);
- this.addListener(SWT.KeyDown, controlKeyEvent);
- this.addListener(SWT.KeyUp, controlKeyEvent);
+ this.addListener(SWT.KeyDown, eventListener);
+ this.addListener(SWT.KeyUp, eventListener);
}
private Listener eventListener = new Listener() {
public void handleEvent(Event event) {
switch(event.type) {
case SWT.MouseDown:
- item.getParentTable()._select(item.getIndex());
- if (event.button == 3) { // right button
- event.data = item;
- item.notifyListeners(SWT.MouseDown, event);
- }
+ event.data = item;
+ item.notifyListeners(SWT.MouseDown, event);
+ break;
+ case SWT.KeyDown:
+ item.getParentTable().notifyListeners(SWT.KeyDown, event);
+ break;
+ case SWT.KeyUp:
+ item.getParentTable().notifyListeners(SWT.KeyUp, event);
break;
default:
break;
gc.drawLine(rect.width - 1, 0, rect.width -1, rect.height);
}
};
-
- private Listener controlKeyEvent = new Listener() {
- @Override
- public void handleEvent(Event event) {
- switch(event.type) {
- case SWT.KeyDown:
- item.getParentTable().notifyListeners(SWT.KeyDown, event);
- break;
- case SWT.KeyUp:
- item.getParentTable().notifyListeners(SWT.KeyUp, event);
- break;
- default:
- break;
- }
- }
- };
}