Home » Eclipse Projects » Remote Application Platform (RAP) » [Tree] Focus Problem
() 1 Vote
[Tree] Focus Problem [message #495242] |
Wed, 04 November 2009 10:23 |
Steffen Kay Messages: 14 Registered: September 2009 |
Junior Member |
|
|
Hello,
i have found an issue in the Tree-Control.
Tested against CVS-Head (4th November).
The Problem:
You click (also doubleclick) on a TreeItem to set the focus to a specific Text-Control. The Text-Control get its focusGain-Event and there seems to be no problem. However, if you click a second time on the same TreeItem so that the same Text-Control should gain the focus it does not get the focus. I expect by clicking on a TreeItem the Text-Ctrl get first a focusLost-Event because the Tree-Control gain the Focus but this is not the case. Only if you manually set the focus to another control, e.g. with your mousepointer, the Text-Ctrl get the focusLost-Event and you are able to reset the focus to the same Text-Ctrl by clicking on the appropriate TreeItem.
Strangely, if you use a Table-Control instead you can't reproduce this problem. By using this control the Text-Control always get the focusLost-Event.
In following source you can find a sample-code for testing. Implemented is also a Table-Control to see the difference.
package raptest;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class MClass
{
enum CtrlEnum
{
Ctrl_1,
Ctrl_2,
Ctrl_3,
};
enum EventDialog
{
TextDlg,
TreeDlg,
TableDlg,
};
private TextDialog textDialog;
private TreeDialog treeDialog;
private TableDialog tableDialog;
public MClass(Display display)
{
// Init Dialogs and size/locate them
textDialog = new TextDialog(display, this);
treeDialog = new TreeDialog(display, this);
tableDialog = new TableDialog(display, this);
textDialog.setSize(400,200);
treeDialog.setSize(400,200);
tableDialog.setSize(400,200);
textDialog.setLocation(50,50);
treeDialog.setLocation(50,250);
tableDialog.setLocation(50,450);
textDialog.layout(true,true);
textDialog.open();
treeDialog.open();
tableDialog.open();
blockShell(treeDialog);
}
public static void blockShell(Shell shell)
{
Display display = null;
if (shell == null)
{
display = Display.getCurrent();
}
else
{
display = shell.getDisplay();
}
while (shell != null && !shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
}
public void ClickedEventHandler(CtrlEnum ctrlEnum, EventDialog eventDialog)
{
if(eventDialog != EventDialog.TextDlg)
{
textDialog.setFocusToItem(ctrlEnum);
}
if(eventDialog != EventDialog.TreeDlg)
{
treeDialog.setFocusToItem(ctrlEnum);
}
if(eventDialog != EventDialog.TableDlg)
{
tableDialog.setFocusToItem(ctrlEnum);
}
}
public class TextDialog extends Shell
{
private Tree tree;
public TextDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TextDialog");
RowLayout rowLayout = new RowLayout();
//rowLayout.pack = true;
rowLayout.type = SWT.VERTICAL;
rowLayout.fill = true;
this.setLayout(rowLayout);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
Text text = new Text(this, SWT.BORDER);
text.setData(ctrlEnum);
text.setText(ctrlEnum.toString());
Point size = text.computeSize(SWT.DEFAULT, SWT.DEFAULT);
text.setLayoutData(new RowData(200, size.y));
// Give every Text-Control a FocusListener
text.addFocusListener(new FocusListener()
{
@Override
public void focusLost(FocusEvent event)
{
Text text = (Text)event.widget;
System.out.println("focusLost (" + text.getData().toString() + ")" + System.currentTimeMillis());
}
@Override
public void focusGained(FocusEvent event)
{
Text text = (Text)event.widget;
System.out.println("focusGain (" + text.getData().toString() + ")" + System.currentTimeMillis());
setFocusToTreeItem((CtrlEnum) text.getData());
mClass.ClickedEventHandler((CtrlEnum) text.getData(), EventDialog.TextDlg);
}
});
}
tree = new Tree(this, SWT.SINGLE | SWT.BORDER);
tree.setSize(100, 100);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TreeItem treeItem = new TreeItem(tree, SWT.NONE);
treeItem.setData(ctrlEnum);
treeItem.setText(ctrlEnum.toString());
}
tree.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TreeItem[] selItems = tree.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
private void setFocusToTreeItem(CtrlEnum ctrlEnum)
{
for(TreeItem treeItem : tree.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching Text-Control
for(Control control : getChildren())
{
if(control instanceof Text)
{
CtrlEnum ctrlEnumData = (CtrlEnum) control.getData();
if(ctrlEnum == ctrlEnumData)
{
Text text = (Text)control;
text.selectAll();
text.setFocus();
break;
}
}
}
setFocusToTreeItem(ctrlEnum);
}
}
public class TreeDialog extends Shell
{
private Tree tree;
public TreeDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TreeDialog");
this.setLayout(new FillLayout());
tree = new Tree(this, SWT.SINGLE);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TreeItem treeItem = new TreeItem(tree, SWT.NONE);
treeItem.setData(ctrlEnum);
treeItem.setText(ctrlEnum.toString());
}
tree.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TreeItem[] selItems = tree.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching treeItem
for(TreeItem treeItem : tree.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
}
public class TableDialog extends Shell
{
private Table table;
public TableDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TableDialog");
this.setLayout(new FillLayout());
table = new Table(this, SWT.SINGLE);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TableItem tableItem = new TableItem(table, SWT.NONE);
tableItem.setData(ctrlEnum);
tableItem.setText(ctrlEnum.toString());
}
table.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TableItem[] selItems = table.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching treeItem
for(TableItem treeItem : table.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
}
}
[Updated on: Wed, 04 November 2009 14:51] Report message to a moderator
|
|
| | | | |
Re: [Tree] Focus Problem [message #495341 is a reply to message #495308] |
Wed, 04 November 2009 15:51 |
Ivan Furnadjiev Messages: 2426 Registered: July 2009 Location: Sofia, Bulgaria |
Senior Member |
|
|
Steffen,
maybe your first post is truncated... It ends with:
"In the attachment you can find a sample-code for testing. Implemented
is also a Table-Control to see the difference. "
No code, no RAP version used...
Best,
Ivan
Steffen wrote:
> Ivan Furnadjiev wrote on Wed, 04 November 2009 09:25
>> Steffen,
>>
>> where is the attachment?
>>
>> Best,
>> Ivan
>
>
> Oh sorry, i was not able to add an attachment, so i added the
> sample-source in my first post. (the ultra long source :lol: )
>
|
|
|
Re: [Tree] Focus Problem [message #496186 is a reply to message #495242] |
Mon, 09 November 2009 10:21 |
Steffen Kay Messages: 14 Registered: September 2009 |
Junior Member |
|
|
Here the source a 2nd time:
RAP-Version: CVS-Head (4th November)
package raptest;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class MClass
{
enum CtrlEnum
{
Ctrl_1,
Ctrl_2,
Ctrl_3,
};
enum EventDialog
{
TextDlg,
TreeDlg,
TableDlg,
};
private TextDialog textDialog;
private TreeDialog treeDialog;
private TableDialog tableDialog;
public MClass(Display display)
{
// Init Dialogs and size/locate them
textDialog = new TextDialog(display, this);
treeDialog = new TreeDialog(display, this);
tableDialog = new TableDialog(display, this);
textDialog.setSize(400,200);
treeDialog.setSize(400,200);
tableDialog.setSize(400,200);
textDialog.setLocation(50,50);
treeDialog.setLocation(50,250);
tableDialog.setLocation(50,450);
textDialog.layout(true,true);
textDialog.open();
treeDialog.open();
tableDialog.open();
blockShell(treeDialog);
}
public static void blockShell(Shell shell)
{
Display display = null;
if (shell == null)
{
display = Display.getCurrent();
}
else
{
display = shell.getDisplay();
}
while (shell != null && !shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
}
public void ClickedEventHandler(CtrlEnum ctrlEnum, EventDialog eventDialog)
{
if(eventDialog != EventDialog.TextDlg)
{
textDialog.setFocusToItem(ctrlEnum);
}
if(eventDialog != EventDialog.TreeDlg)
{
treeDialog.setFocusToItem(ctrlEnum);
}
if(eventDialog != EventDialog.TableDlg)
{
tableDialog.setFocusToItem(ctrlEnum);
}
}
public class TextDialog extends Shell
{
private Tree tree;
public TextDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TextDialog");
RowLayout rowLayout = new RowLayout();
//rowLayout.pack = true;
rowLayout.type = SWT.VERTICAL;
rowLayout.fill = true;
this.setLayout(rowLayout);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
Text text = new Text(this, SWT.BORDER);
text.setData(ctrlEnum);
text.setText(ctrlEnum.toString());
Point size = text.computeSize(SWT.DEFAULT, SWT.DEFAULT);
text.setLayoutData(new RowData(200, size.y));
// Give every Text-Control a FocusListener
text.addFocusListener(new FocusListener()
{
@Override
public void focusLost(FocusEvent event)
{
Text text = (Text)event.widget;
System.out.println("focusLost (" + text.getData().toString() + ")" + System.currentTimeMillis());
}
@Override
public void focusGained(FocusEvent event)
{
Text text = (Text)event.widget;
System.out.println("focusGain (" + text.getData().toString() + ")" + System.currentTimeMillis());
setFocusToTreeItem((CtrlEnum) text.getData());
mClass.ClickedEventHandler((CtrlEnum) text.getData(), EventDialog.TextDlg);
}
});
}
tree = new Tree(this, SWT.SINGLE | SWT.BORDER);
tree.setSize(100, 100);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TreeItem treeItem = new TreeItem(tree, SWT.NONE);
treeItem.setData(ctrlEnum);
treeItem.setText(ctrlEnum.toString());
}
tree.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TreeItem[] selItems = tree.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
private void setFocusToTreeItem(CtrlEnum ctrlEnum)
{
for(TreeItem treeItem : tree.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching Text-Control
for(Control control : getChildren())
{
if(control instanceof Text)
{
CtrlEnum ctrlEnumData = (CtrlEnum) control.getData();
if(ctrlEnum == ctrlEnumData)
{
Text text = (Text)control;
text.selectAll();
text.setFocus();
break;
}
}
}
setFocusToTreeItem(ctrlEnum);
}
}
public class TreeDialog extends Shell
{
private Tree tree;
public TreeDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TreeDialog");
this.setLayout(new FillLayout());
tree = new Tree(this, SWT.SINGLE);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TreeItem treeItem = new TreeItem(tree, SWT.NONE);
treeItem.setData(ctrlEnum);
treeItem.setText(ctrlEnum.toString());
}
tree.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TreeItem[] selItems = tree.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching treeItem
for(TreeItem treeItem : tree.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
}
public class TableDialog extends Shell
{
private Table table;
public TableDialog(Display display, final MClass mClass)
{
super(display);
this.getShell().setText("TableDialog");
this.setLayout(new FillLayout());
table = new Table(this, SWT.SINGLE);
for(CtrlEnum ctrlEnum : CtrlEnum.values())
{
TableItem tableItem = new TableItem(table, SWT.NONE);
tableItem.setData(ctrlEnum);
tableItem.setText(ctrlEnum.toString());
}
table.addSelectionListener(new SelectionListener()
{
@Override
public void widgetSelected(SelectionEvent e){ }
@Override
public void widgetDefaultSelected(SelectionEvent e)
{
TableItem[] selItems = table.getSelection();
if(selItems.length > 0)
{
// we have a Single-Selection
System.out.println("widgetDefaultSelected");
CtrlEnum ctrlEnum = (CtrlEnum) selItems[0].getData();
mClass.ClickedEventHandler(ctrlEnum, EventDialog.TreeDlg);
}
}
});
}
public void setFocusToItem(CtrlEnum ctrlEnum)
{
// Search the matching treeItem
for(TableItem treeItem : table.getItems())
{
CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
if(ctrlEnum == ctrlEnumData)
{
treeItem.setText(treeItem.getData().toString() + " SELECTED");
}
else
{
treeItem.setText(treeItem.getData().toString());
}
}
}
}
}
[Updated on: Mon, 09 November 2009 10:29] Report message to a moderator
|
|
|
Re: [Tree] Focus Problem [message #496200 is a reply to message #496186] |
Mon, 09 November 2009 10:44 |
Ivan Furnadjiev Messages: 2426 Registered: July 2009 Location: Sofia, Bulgaria |
Senior Member |
|
|
Hi Steffen,
the problem exists only if you click on the tree that is in non focused
(active) shell (dialog). If you have only one Shell - TextDialog for
example, everything is working as expected. The actual problem is that,
clicking on the Tree does not activate the parent shell. Please file a
bugzilla about this issue.
Best,
Ivan
Steffen wrote:
> Here the source a 2nd time:
>
>
> package raptest;
>
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.events.FocusEvent;
> import org.eclipse.swt.events.FocusListener;
> import org.eclipse.swt.events.SelectionEvent;
> import org.eclipse.swt.events.SelectionListener;
> import org.eclipse.swt.graphics.Point;
> import org.eclipse.swt.layout.FillLayout;
> import org.eclipse.swt.layout.RowData;
> import org.eclipse.swt.layout.RowLayout;
> import org.eclipse.swt.widgets.Control;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Shell;
> import org.eclipse.swt.widgets.Table;
> import org.eclipse.swt.widgets.TableItem;
> import org.eclipse.swt.widgets.Text;
> import org.eclipse.swt.widgets.Tree;
> import org.eclipse.swt.widgets.TreeItem;
>
> public class MClass
> {
> enum CtrlEnum
> {
> Ctrl_1,
> Ctrl_2,
> Ctrl_3,
> };
>
> enum EventDialog
> {
> TextDlg,
> TreeDlg,
> TableDlg,
> };
>
> private TextDialog textDialog;
> private TreeDialog treeDialog;
> private TableDialog tableDialog;
>
> public MClass(Display display)
> {
> // Init Dialogs and size/locate them
> textDialog = new TextDialog(display, this);
> treeDialog = new TreeDialog(display, this);
> tableDialog = new TableDialog(display, this);
>
> textDialog.setSize(400,200);
> treeDialog.setSize(400,200);
> tableDialog.setSize(400,200);
>
> textDialog.setLocation(50,50);
> treeDialog.setLocation(50,250);
> tableDialog.setLocation(50,450);
>
> textDialog.layout(true,true);
> textDialog.open();
> treeDialog.open();
> tableDialog.open();
> blockShell(treeDialog);
> }
>
> public static void blockShell(Shell shell)
> {
> Display display = null;
> if (shell == null)
> {
> display = Display.getCurrent();
> }
> else
> {
> display = shell.getDisplay();
> }
>
> while (shell != null && !shell.isDisposed())
> {
> if (!display.readAndDispatch())
> {
> display.sleep();
> }
> }
> }
>
> public void ClickedEventHandler(CtrlEnum ctrlEnum, EventDialog
> eventDialog)
> {
> if(eventDialog != EventDialog.TextDlg)
> {
> textDialog.setFocusToItem(ctrlEnum);
> }
> if(eventDialog != EventDialog.TreeDlg)
> {
> treeDialog.setFocusToItem(ctrlEnum);
> }
> if(eventDialog != EventDialog.TableDlg)
> {
> tableDialog.setFocusToItem(ctrlEnum);
> }
> }
>
> public class TextDialog extends Shell
> {
> private Tree tree;
>
> public TextDialog(Display display, final MClass mClass)
> {
> super(display);
> this.getShell().setText("TextDialog");
> RowLayout rowLayout = new RowLayout();
> //rowLayout.pack = true;
> rowLayout.type = SWT.VERTICAL;
> rowLayout.fill = true;
>
> this.setLayout(rowLayout);
>
> for(CtrlEnum ctrlEnum : CtrlEnum.values())
> {
> Text text = new Text(this, SWT.BORDER);
> text.setData(ctrlEnum);
> text.setText(ctrlEnum.toString());
> Point size = text.computeSize(SWT.DEFAULT, SWT.DEFAULT);
> text.setLayoutData(new RowData(200, size.y));
>
> // Give every Text-Control a FocusListener
> text.addFocusListener(new FocusListener()
> {
> @Override
> public void focusLost(FocusEvent event)
> {
> Text text = (Text)event.widget;
> System.out.println("focusLost (" +
> text.getData().toString() + ")" + System.currentTimeMillis());
> }
>
> @Override
> public void focusGained(FocusEvent event)
> {
> Text text = (Text)event.widget;
>
> System.out.println("focusGain (" +
> text.getData().toString() + ")" + System.currentTimeMillis());
>
> setFocusToTreeItem((CtrlEnum) text.getData());
>
> mClass.ClickedEventHandler((CtrlEnum)
> text.getData(), EventDialog.TextDlg);
> }
> });
> }
>
> tree = new Tree(this, SWT.SINGLE | SWT.BORDER);
> tree.setSize(100, 100);
>
> for(CtrlEnum ctrlEnum : CtrlEnum.values())
> {
> TreeItem treeItem = new TreeItem(tree, SWT.NONE);
> treeItem.setData(ctrlEnum);
> treeItem.setText(ctrlEnum.toString());
> }
>
> tree.addSelectionListener(new SelectionListener()
> {
>
> @Override
> public void widgetSelected(SelectionEvent e){ }
>
> @Override
> public void widgetDefaultSelected(SelectionEvent e)
> {
> TreeItem[] selItems = tree.getSelection();
> if(selItems.length > 0)
> {
> // we have a Single-Selection
> System.out.println("widgetDefaultSelected");
> CtrlEnum ctrlEnum = (CtrlEnum)
> selItems[0].getData();
> mClass.ClickedEventHandler(ctrlEnum,
> EventDialog.TreeDlg);
> }
> }
> });
> }
>
> private void setFocusToTreeItem(CtrlEnum ctrlEnum)
> {
> for(TreeItem treeItem : tree.getItems())
> {
> CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
>
> if(ctrlEnum == ctrlEnumData)
> {
> treeItem.setText(treeItem.getData().toString() + "
> SELECTED");
> }
> else {
> treeItem.setText(treeItem.getData().toString());
> }
> }
> }
>
> public void setFocusToItem(CtrlEnum ctrlEnum)
> {
> // Search the matching Text-Control
> for(Control control : getChildren())
> {
> if(control instanceof Text)
> {
>
> CtrlEnum ctrlEnumData = (CtrlEnum) control.getData();
> if(ctrlEnum == ctrlEnumData)
> {
> Text text = (Text)control;
> text.selectAll();
> text.setFocus();
> break;
> }
> }
> }
>
> setFocusToTreeItem(ctrlEnum);
> }
> }
>
> public class TreeDialog extends Shell
> {
> private Tree tree;
> public TreeDialog(Display display, final MClass mClass)
> {
> super(display);
> this.getShell().setText("TreeDialog");
> this.setLayout(new FillLayout());
>
> tree = new Tree(this, SWT.SINGLE);
>
> for(CtrlEnum ctrlEnum : CtrlEnum.values())
> {
> TreeItem treeItem = new TreeItem(tree, SWT.NONE);
> treeItem.setData(ctrlEnum);
> treeItem.setText(ctrlEnum.toString());
> }
>
> tree.addSelectionListener(new SelectionListener()
> {
>
> @Override
> public void widgetSelected(SelectionEvent e){ }
>
> @Override
> public void widgetDefaultSelected(SelectionEvent e)
> {
> TreeItem[] selItems = tree.getSelection();
> if(selItems.length > 0)
> {
> // we have a Single-Selection
> System.out.println("widgetDefaultSelected");
> CtrlEnum ctrlEnum = (CtrlEnum)
> selItems[0].getData();
> mClass.ClickedEventHandler(ctrlEnum,
> EventDialog.TreeDlg);
> }
> }
> });
> }
>
> public void setFocusToItem(CtrlEnum ctrlEnum)
> {
> // Search the matching treeItem
> for(TreeItem treeItem : tree.getItems())
> {
> CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
>
> if(ctrlEnum == ctrlEnumData)
> {
> treeItem.setText(treeItem.getData().toString() + "
> SELECTED");
> }
> else {
> treeItem.setText(treeItem.getData().toString());
> }
> }
> }
> }
>
> public class TableDialog extends Shell
> {
> private Table table;
> public TableDialog(Display display, final MClass mClass)
> {
> super(display);
> this.getShell().setText("TableDialog");
> this.setLayout(new FillLayout());
>
> table = new Table(this, SWT.SINGLE);
>
> for(CtrlEnum ctrlEnum : CtrlEnum.values())
> {
> TableItem tableItem = new TableItem(table, SWT.NONE);
> tableItem.setData(ctrlEnum);
> tableItem.setText(ctrlEnum.toString());
> }
>
> table.addSelectionListener(new SelectionListener()
> {
>
> @Override
> public void widgetSelected(SelectionEvent e){ }
>
> @Override
> public void widgetDefaultSelected(SelectionEvent e)
> {
> TableItem[] selItems = table.getSelection();
> if(selItems.length > 0)
> {
> // we have a Single-Selection
> System.out.println("widgetDefaultSelected");
> CtrlEnum ctrlEnum = (CtrlEnum)
> selItems[0].getData();
> mClass.ClickedEventHandler(ctrlEnum,
> EventDialog.TreeDlg);
> }
> }
> });
> }
>
> public void setFocusToItem(CtrlEnum ctrlEnum)
> {
> // Search the matching treeItem
> for(TableItem treeItem : table.getItems())
> {
> CtrlEnum ctrlEnumData = (CtrlEnum) treeItem.getData();
>
> if(ctrlEnum == ctrlEnumData)
> {
> treeItem.setText(treeItem.getData().toString() + "
> SELECTED");
> }
> else {
> treeItem.setText(treeItem.getData().toString());
> }
> }
> }
> }
> }
>
>
|
|
| |
Goto Forum:
Current Time: Thu Apr 25 19:44:59 GMT 2024
Powered by FUDForum. Page generated in 0.04246 seconds
|