Hi Alex, Thanks for pointing out the problem.
This is a bug in ULCTableTree. I have created an issue: https://www.canoo.com/jira/browse/UBA-7043 In the extension, do the following: protected void postInitializeState() { super.postInitializeState(); getBasicTableTree().getBasicTable().addFocusListener(focusListen er); getBasicTableTree().getBasicTable().addMouseListener(new MouseListener() { Thanks and regards, Janak >-----Original Message----- >From: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] Behalf Of Stucki >Alexander, Bedag >Sent: Friday, September 01, 2006 7:59 PM >To: [EMAIL PROTECTED] >Subject: [ULC-developer] Missing FocusEvents in ULCTableTree > > >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 _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer
