Sounds about right. We can probably fix this by restoring the boolean isEditing() method to the editor interfaces. We might also need to add an endEdit() method that takes a boolean (representing whether the operation was cancelled or not). In that case, we might want to rename edit() to beginEdit().
On Nov 30, 2010, at 10:41 AM, Chris Bartlett wrote: > Firstly, I must state that I have only briefly examined the recent row > editing changes, so apologies if any of the below text is inaccurate. > > > A quick look suggests that the problem is due to the row editor being open > when another call to RowEditor#edit(TableView, int, int) is made. > That attempts to open the TableViewRowEditor and add a > ContainerMouseListener, but one is already there. > The pre-existing ContainerMouseListeners would normally be removed in the > TableViewRowEditor#close(boolean) method. > > I imagine that you are more likely to see this problem if you are using an > edit effect as this will prolong the time taken for the row editor window to > close. > > I assume that you are using the provided > org.apache.pivot.wtk.content.TableViewRowEditor class for your RowEditor? > This extends Window, so you if you have a reference to it, you should be able > to call Window#isOpen() to first check to see if the editor is still open, > and avoid opening another one. > You could also explicitly call the Window#close() or Window#close(boolean) > methods and wait for the window to close before opening the row editor on > another row. > You may find it useful to register a WindowStateListener on the > TableViewRowEditor to better track and control window closing. > > > When trying to replicate this with the (unchanged) > org.apache.pivot.tests.TableViewTest2 class from trunk, I was also able to > produce another exception by rapidly left-clicking in the TableView. > > java.lang.IndexOutOfBoundsException: index -1 out of bounds. > at > org.apache.pivot.collections.ArrayList.verifyIndexBounds(ArrayList.java:577) > at org.apache.pivot.collections.ArrayList.get(ArrayList.java:346) > at org.apache.pivot.wtk.TablePane$Row.get(TablePane.java:263) > at > org.apache.pivot.wtk.content.TableViewRowEditor$3.selectedIndexChanged(TableViewRowEditor.java:134) > at > org.apache.pivot.wtk.CardPane$CardPaneListenerList.selectedIndexChanged(CardPane.java:52) > at org.apache.pivot.wtk.CardPane.setSelectedIndex(CardPane.java:93) > at > org.apache.pivot.wtk.skin.CardPaneSkin$1.transitionCompleted(CardPaneSkin.java:717) > at org.apache.pivot.wtk.effects.Transition$1.run(Transition.java:52) > at > org.apache.pivot.wtk.ApplicationContext$QueuedCallback.run(ApplicationContext.java:1474) > at java.awt.event.InvocationEvent.dispatch(Unknown Source) > at java.awt.EventQueue.dispatchEvent(Unknown Source) > at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) > at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) > at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) > at java.awt.EventDispatchThread.pumpEvents(Unknown Source) > at java.awt.EventDispatchThread.pumpEvents(Unknown Source) > at java.awt.EventDispatchThread.run(Unknown Source) > > > Regards, > > Chris > > On 30 November 2010 21:33, lello <[email protected]> wrote: > > Hi all, > > I have been trying to implement a tableview in which the row editor is > called every time a row is selected (no need for a double click). > The code I used is the following: > > myTableView.getTableViewSelectionListeners().add(new > TableViewSelectionListener.Adapter() { > @Override > public void selectedRowChanged(TableView tv, Object o) > { > int row = tv.getSelectedIndex(); > tv.getRowEditor().edit(tv, row, 0); > } > > } > ); > > The code seems to work. Indeed the row editor is called when I move with the > cursor on the row. > However, when I move "too fast", i get the following error: > > Duplicate listener org.apache.pivot.wtk.content.tableviewrowedito...@d2f5f1 > added to org.apache.pivot.wtk.container$containermouselistenerl...@10c276 > java.lang.IllegalArgumentException: Component already has a parent. > at org.apache.pivot.wtk.TablePane$Row.insert(TablePane.java:199) > at org.apache.pivot.wtk.TablePane$Row.add(TablePane.java:187) > at > org.apache.pivot.wtk.content.TableViewRowEditor.open(TableViewRowEditor.java:291) > at org.apache.pivot.wtk.Window.open(Window.java:585) > at > org.apache.pivot.wtk.content.TableViewRowEditor.edit(TableViewRowEditor.java:182) > > Any help is appreciated, > Lello > -- > View this message in context: > http://apache-pivot-users.399431.n3.nabble.com/TableView-selectedRowChanged-tp1992938p1992938.html > Sent from the Apache Pivot - Users mailing list archive at Nabble.com. >
