pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Bartlett <cbartlet...@gmail.com>
Subject Re: TableView selectedRowChanged
Date Tue, 30 Nov 2010 15:41:49 GMT
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 <rborrelli@gmail.com> 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.TableViewRowEditor$1@d2f5f1
> added to org.apache.pivot.wtk.Container$ContainerMouseListenerList@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.
>

Mime
View raw message