[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.platform.swt] Re: Table: cannot select any cell that is not first column

You can actually add a mouse down listener to select other cell...

table.addListener(SWT.MouseDown, new Listener() {
           public void handleEvent(Event event) {
               table.deselectAll();

               Rectangle clientArea = table.getClientArea();
               Point pt = new Point(event.x, event.y);
               int index = table.getTopIndex();

while (index < table.getItemCount()) {
boolean visible = false;
final TableItem item = table.getItem(index);
for (int i = 0; i < table.getColumnCount(); i++) {
Rectangle rect = item.getBounds(i);
if ( rect.contains(pt) ) {
final int column = i;
final Text text = new Text(table, SWT.NONE);
Listener textListener = new Listener() {
public void handleEvent(final Event e) {
switch (e.type) {
case SWT.FocusOut:
item.setText(column, text.getText());
text.dispose();
break;
case SWT.Traverse:
switch (e.detail) {
case SWT.TRAVERSE_RETURN:
item.setText(column, text.getText());
// FALL THROUGH
case SWT.TRAVERSE_ESCAPE:
text.dispose();
e.doit = false;
}
break;
}
}
};
text.addListener(SWT.FocusOut, textListener);
text.addListener(SWT.Traverse, textListener);
editor.setEditor(text, item, i);
text.setText(item.getText(i));
text.selectAll();
text.setFocus(); return;
}
if ( !visible && rect.intersects(clientArea) ) {
visible = true;
}
}
if ( !visible )
return;
index++;
}
}
});