Skip to main content



      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 05:15 Go to next message
Eclipse UserFriend
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 10:23 Go to previous messageGo to next message
Eclipse UserFriend
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 11:59 Go to previous message
Eclipse UserFriend
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: Sat Jul 12 01:11:03 EDT 2025

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

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

Back to the top