Hi All
I would like to have the same behaviour on FocusEvents in ULCTable and
ULCTableTree.
In my snippet this is not the case...
The ULCTableTree does not get any FocusEvent (Mouse and Tab) even on the
UI side.
What's wrong?
The workaround with the mouseevent does not solve my problem because I
still do not have the FocusLostEvent.
Another workaround with the selectionListener is as well not helpfull
because then I miss the FocusLostEvent also.
I'm using ULC 6.1.
Thanks a lot!
Alex
***
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ULCBoxPane;
import com.ulcjava.base.application.ULCComponent;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCTable;
import com.ulcjava.base.application.ULCTableTree;
import com.ulcjava.base.application.ULCTextField;
import com.ulcjava.base.application.event.FocusEvent;
import com.ulcjava.base.application.event.serializable.IFocusListener;
import com.ulcjava.base.application.table.DefaultTableModel;
import com.ulcjava.base.application.tabletree.DefaultTableTreeModel;
import com.ulcjava.base.application.tabletree.ITableTreeNode;
import com.ulcjava.base.application.util.BorderedComponentUtilities;
import com.ulcjava.base.client.UITableTree;
import com.ulcjava.base.development.DevelopmentRunner;
public class MyTableTree extends AbstractApplication {
public static void main(String args[]) {
DevelopmentRunner.setApplicationClass(MyTableTree.class);
DevelopmentRunner.run();
}
public void start() {
ULCTextField editField = new ULCTextField();
ULCComponent borderedEditField =
BorderedComponentUtilities.createBorderedComponent(editField, "To Do
Item");
IFocusListener focusListener = new IFocusListener(){
public void focusGained(FocusEvent arg0) {
System.out.println(this.getClass().getName() + ".focusGained()");
}
public void focusLost(FocusEvent arg0) {
System.out.println(this.getClass().getName() + ".focusLost()");
}
};
Object[] rowOne = new Object[] {
"rowOne:columnOne", "rowOne:columnTwo",
"rowOne:columnThree"};
Object[] rowTwo = new Object[] {
"rowTwo:columnOne", "rowTwo:columnTwo",
"rowTwo:columnThree"};
DefaultTableModel defaultTableModel =
new DefaultTableModel(new Object[0][0],
new String[] {
"column1",
"column2",
"column3"});
defaultTableModel.addRow(rowOne);
defaultTableModel.addRow(rowTwo);
ULCTable table = new ULCTable(defaultTableModel);
table.addFocusListener(focusListener);
ULCScrollPane tablePane = new ULCScrollPane(table);
ULCComponent borderedTable =
BorderedComponentUtilities.createBorderedComponent(tablePane, "table");
MyTableTreeNode root = new MyTableTreeNode("root");
MyTableTreeNode one = new MyTableTreeNode("one");
root.addKid(one);
MyTableTreeNode two = new MyTableTreeNode("two");
root.addKid(two);
DefaultTableTreeModel tableTreeModel = new
DefaultTableTreeModel(root, new String[]{"name"});
// ULCTableTree tableTree = new ULCTableTree(tableTreeModel);
MyULCTableTree tableTree = new MyULCTableTree(tableTreeModel);
tableTree.addFocusListener(focusListener);
ULCScrollPane tableTreePane = new ULCScrollPane(tableTree);
ULCComponent borderedTableTree =
BorderedComponentUtilities.createBorderedComponent(tableTreePane,
"tableTree");
ULCBoxPane rootBox = new ULCBoxPane(true);
rootBox.add(ULCBoxPane.BOX_EXPAND_TOP, borderedEditField);
rootBox.add(ULCBoxPane.BOX_EXPAND_CENTER, borderedTable);
rootBox.add(ULCBoxPane.BOX_EXPAND_BOTTOM, borderedTableTree);
ULCFrame frame = new ULCFrame("ULC ToDoList Sample");
frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
frame.add(rootBox);
frame.setVisible(true);
}
static class MyTableTreeNode implements ITableTreeNode {
private List kids = new ArrayList();
private ITableTreeNode parent = null;
private String name = null;
MyTableTreeNode(String name){
this.name = name;
}
public ITableTreeNode getChildAt(int arg0) {
return
(kids.size()>0)?(ITableTreeNode)kids.get(arg0):null;
}
public int getChildCount() {
return kids.size();
}
public ITableTreeNode getParent() {
return this.parent;
}
public int getIndex(ITableTreeNode arg0) {
return (kids.size()>0)?kids.indexOf(arg0):0;
}
public Object getValueAt(int arg0) {
return (kids.size() >
0)?kids.get(arg0).toString():null;
}
public boolean isLeaf() {
return kids.size() == 0;
}
public void setParent(ITableTreeNode parent) {
this.parent = parent;
}
public void addKid(ITableTreeNode kid){
kids.add(kid);
}
public String toString(){
return this.name;
}
}
public static class MyULCTableTree extends ULCTableTree {
public MyULCTableTree(DefaultTableTreeModel model) {
super(model);
}
protected String typeString() {
return MyUITableTree.class.getName();
}
}
public static class MyUITableTree extends UITableTree {
private boolean hasFocus = false;
FocusListener focusListener = new FocusListener(){
public void
focusGained(java.awt.event.FocusEvent arg0) {
System.out.println(this.getClass().getName() + ".focusGained() -
MyUITableTree");
}
public void focusLost(java.awt.event.FocusEvent
arg0) {
System.out.println(this.getClass().getName() + ".focusLost() -
MyUITableTree");
}
};
protected void postInitializeState() {
super.postInitializeState();
getBasicTableTree().addFocusListener(focusListener);
getBasicTableTree().addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
System.out.println(this.getClass().getName() + ".mouseClicked()");
// getBasicTableTree().requestFocus();
fireFocusGainedULC();
}
public void mousePressed(MouseEvent e) { /* noop */ }
public void mouseReleased(MouseEvent e) { /* noop */ }
public void mouseEntered(MouseEvent e) { /* noop */ }
public void mouseExited(MouseEvent e) { /* noop */ }
});
}
}
}
Alex Stucki
Bedag Informatik AG
Software-Entwicklung
Gutenbergstrasse 1
3011 Bern
Telefon: +41 (0)31 633 21 21 (direkt 633 25 35)
E-Mail: mailto:[EMAIL PROTECTED]
www.bedag.ch
_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer