Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Standard Widget Toolkit (SWT) » Problem with Table & CellEditor & mouse click
Problem with Table & CellEditor & mouse click [message #445926] Fri, 12 November 2004 10:15 Go to next message
Michael Seele is currently offline Michael SeeleFriend
Messages: 124
Registered: July 2009
Senior Member
hi,
i use the tableCursor snipped for my application, but i have a problem:

every time when a cell is in the editable mode, and the user clicks on
another cell, the text of the previous selected cell will not be saved in
the previous selected cell! and not the text of the new selected cell will
be show in the editor, the text of the previous selected cell will be
shown!
how can i fix this???

thx mseele
Re: Problem with Table & CellEditor & mouse click [message #446041 is a reply to message #445926] Tue, 16 November 2004 15:23 Go to previous messageGo to next message
Michael Seele is currently offline Michael SeeleFriend
Messages: 124
Registered: July 2009
Senior Member
Michael Seele wrote:

> hi,
> i use the tableCursor snipped for my application, but i have a problem:

> every time when a cell is in the editable mode, and the user clicks on
> another cell, the text of the previous selected cell will not be saved in
> the previous selected cell! and not the text of the new selected cell will
> be show in the editor, the text of the previous selected cell will be
> shown!
> how can i fix this???

> thx mseele

can anybody help me? please help me, i'm distraught!!!
Re: Problem with Table & CellEditor & mouse click [message #446046 is a reply to message #445926] Tue, 16 November 2004 16:59 Go to previous message
Veronika Irvine is currently offline Veronika IrvineFriend
Messages: 1272
Registered: July 2009
Senior Member
Add a focus listener to the Text widget - see below:

public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout());

// create a a table with 3 columns and fill with data
final Table table = new Table(shell, SWT.BORDER | SWT.MULTI
| SWT.FULL_SELECTION);
table.setLayoutData(new GridData(GridData.FILL_BOTH));
TableColumn column1 = new TableColumn(table, SWT.NONE);
TableColumn column2 = new TableColumn(table, SWT.NONE);
TableColumn column3 = new TableColumn(table, SWT.NONE);
for (int i = 0; i < 100; i++) {
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[] { "cell "+i+" 0", "cell
"+i+" 1", "cell "+i+" 2"});
}
column1.pack();
column2.pack();
column3.pack();

// create a TableCursor to navigate around the table
final TableCursor cursor = new TableCursor(table,
SWT.NONE);
// create an editor to edit the cell when the user hits
"ENTER"
// while over a cell in the table
final ControlEditor editor = new ControlEditor(cursor);
editor.grabHorizontal = true;
editor.grabVertical = true;

cursor.addSelectionListener(new SelectionAdapter() {
// when the TableEditor is over a cell, select the
corresponding row in
// the table
public void widgetSelected(SelectionEvent e) {
table.setSelection(new TableItem[]
{cursor.getRow()});
}
// when the user hits "ENTER" in the TableCursor,
pop up a text editor so that
// they can change the text of the cell
public void widgetDefaultSelected(SelectionEvent
e){
final Text text = new Text(cursor,
SWT.NONE);
TableItem row = cursor.getRow();
int column = cursor.getColumn();
text.setText(row.getText(column));
text.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e)
{
// close the text editor
and copy the data over
// when the user hits
"ENTER"
if (e.character == SWT.CR)
{
TableItem row =
cursor.getRow();
int column =
cursor.getColumn();
row.setText(column,
text.getText());
text.dispose();
}
// close the text editor
when the user hits "ESC"
if (e.character == SWT.ESC)
{
text.dispose();
}
}
});
text.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e)
{
final String newText =
text.getText();
final TableItem row =
cursor.getRow();
final int column =
cursor.getColumn();
display.asyncExec(new
Runnable() {
public void run() {
MessageBox
message = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO);
message.setMessage("Do
you want to apply the change '"+newText+"' to the table at ("+column+",
"+table.indexOf(row)+")?");
int result =
message.open();
if (result
== SWT.YES) {
row.setText(column,
newText);
}
}
});
editor.setEditor(null);
text.dispose();
}
});
editor.setEditor(text);
text.setFocus();
}
});
// Hide the TableCursor when the user hits the "MOD1" or
"MOD2" key.
// This alows the user to select multiple items in the
table.
cursor.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.keyCode == SWT.MOD1 ||
e.keyCode == SWT.MOD2 ||
(e.stateMask & SWT.MOD1) != 0 ||
(e.stateMask & SWT.MOD2) != 0) {
cursor.setVisible(false);
}
}
});
// Show the TableCursor when the user releases the "MOD2"
or "MOD1" key.
// This signals the end of the multiple selection task.
table.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if (e.keyCode == SWT.MOD1 && (e.stateMask &
SWT.MOD2) != 0) return;
if (e.keyCode == SWT.MOD2 && (e.stateMask &
SWT.MOD1) != 0) return;
if (e.keyCode != SWT.MOD1 && (e.stateMask &
SWT.MOD1) != 0) return;
if (e.keyCode != SWT.MOD2 && (e.stateMask &
SWT.MOD2) != 0) return;

TableItem[] selection =
table.getSelection();
TableItem row = (selection.length == 0) ?
table.getItem(table.getTopIndex()) : selection[0];
table.showItem(row);
cursor.setSelection(row, 0);
cursor.setVisible(true);
cursor.setFocus();
}
});

shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

"Michael Seele" <mseele@guh-software.de> wrote in message
news:cn22fk$tdl$1@eclipse.org...
> hi,
> i use the tableCursor snipped for my application, but i have a problem:
>
> every time when a cell is in the editable mode, and the user clicks on
> another cell, the text of the previous selected cell will not be saved in
> the previous selected cell! and not the text of the new selected cell will
> be show in the editor, the text of the previous selected cell will be
> shown!
> how can i fix this???
>
> thx mseele
>
Previous Topic:scolledComposite & canvas
Next Topic:Doubt about LocationListener.changed
Goto Forum:
  


Current Time: Wed Oct 21 10:55:12 GMT 2020

Powered by FUDForum. Page generated in 0.05298 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top