You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pivot.apache.org by "Roger Whitcomb (JIRA)" <ji...@apache.org> on 2018/01/16 20:09:00 UTC

[jira] [Commented] (PIVOT-1011) Move ListenerList implementations of interfaces into the interface itself

    [ https://issues.apache.org/jira/browse/PIVOT-1011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16327706#comment-16327706 ] 

Roger Whitcomb commented on PIVOT-1011:
---------------------------------------

Finished a bunch more files:

Sending core\src\org\apache\pivot\beans\BeanAdapter.java
Sending core\src\org\apache\pivot\beans\NamespaceBinding.java
Sending core\src\org\apache\pivot\collections\ArrayQueue.java
Sending core\src\org\apache\pivot\collections\ArrayStack.java
Sending core\src\org\apache\pivot\collections\EnumMap.java
Sending core\src\org\apache\pivot\collections\EnumSet.java
Sending core\src\org\apache\pivot\collections\HashMap.java
Sending core\src\org\apache\pivot\collections\HashSet.java
Sending core\src\org\apache\pivot\collections\LinkedQueue.java
Sending core\src\org\apache\pivot\collections\LinkedStack.java
Sending core\src\org\apache\pivot\collections\ListListener.java
Sending core\src\org\apache\pivot\collections\Map.java
Sending core\src\org\apache\pivot\collections\MapListener.java
Sending core\src\org\apache\pivot\collections\Queue.java
Sending core\src\org\apache\pivot\collections\QueueListener.java
Sending core\src\org\apache\pivot\collections\Set.java
Sending core\src\org\apache\pivot\collections\SetListener.java
Sending core\src\org\apache\pivot\collections\Stack.java
Sending core\src\org\apache\pivot\collections\StackListener.java
Sending core\src\org\apache\pivot\collections\adapter\MapAdapter.java
Sending core\src\org\apache\pivot\collections\adapter\SetAdapter.java
Sending core\src\org\apache\pivot\collections\concurrent\SynchronizedMap.java
Sending core\src\org\apache\pivot\collections\concurrent\SynchronizedQueue.java
Sending core\src\org\apache\pivot\collections\concurrent\SynchronizedSet.java
Sending core\src\org\apache\pivot\collections\concurrent\SynchronizedStack.java
Sending core\src\org\apache\pivot\collections\immutable\ImmutableMap.java
Sending core\src\org\apache\pivot\collections\immutable\ImmutableSet.java
Sending core\test\org\apache\pivot\collections\test\QueueTest.java
Sending demos\src\org\apache\pivot\demos\dnd\FileDropTargetDemo.java
Sending examples\src\org\apache\pivot\examples\keyboard\ComponentKeyListenerExample.java
Sending tests\src\org\apache\pivot\tests\CheckedListViewTest.java
Sending tutorials\src\org\apache\pivot\tutorials\calculator\Calculator.java
Sending tutorials\src\org\apache\pivot\tutorials\stocktracker\StockTrackerWindow.java
Sending wtk\src\org\apache\pivot\wtk\Component.java
Sending wtk\src\org\apache\pivot\wtk\ComponentKeyListener.java
Sending wtk\src\org\apache\pivot\wtk\RadioButtonGroup.java
Sending wtk\src\org\apache\pivot\wtk\skin\CalendarButtonSkin.java
Sending wtk\src\org\apache\pivot\wtk\skin\ColorChooserButtonSkin.java
Sending wtk\src\org\apache\pivot\wtk\skin\ListButtonSkin.java
Sending wtk\src\org\apache\pivot\wtk\skin\MenuBarItemSkin.java
Sending wtk\src\org\apache\pivot\wtk\text\ComponentNode.java
Sending wtk\src\org\apache\pivot\wtk\text\ComponentNodeListener.java
Sending wtk\src\org\apache\pivot\wtk\text\ImageNode.java
Sending wtk\src\org\apache\pivot\wtk\text\ImageNodeListener.java
Sending wtk-terra\src\org\apache\pivot\wtk\skin\terra\TerraFileBrowserSkin.java
Sending wtk-terra\src\org\apache\pivot\wtk\skin\terra\TerraSuggestionPopupSkin.java
Sending wtk-terra\src\org\apache\pivot\wtk\skin\terra\TerraTooltipSkin.java
Sending wtk-terra\src\org\apache\pivot\wtk\skin\terra\TerraVFSBrowserSkin.java
Transmitting file data ................................................done
Committing transaction...
Committed revision 1821299.

> Move ListenerList implementations of interfaces into the interface itself
> -------------------------------------------------------------------------
>
>                 Key: PIVOT-1011
>                 URL: https://issues.apache.org/jira/browse/PIVOT-1011
>             Project: Pivot
>          Issue Type: Improvement
>          Components: core-collections, core-util, web, wtk, wtk-terra
>         Environment: All
>            Reporter: Roger Whitcomb
>            Assignee: Roger Whitcomb
>            Priority: Minor
>         Attachments: 1011.diffs
>
>
> A universal paradigm in Pivot is to have a "listener" interface for a class or data structure that is used to notify listeners of changes in the class/data.  There is then an "Adapter" static class in the interface file that implements the interface with default implementations.  Then there is a very separate enclosed static class that implements the "ListenerList" interface of that listener interface.  And usually (or always) this "listener list" class is defined/used only in the class that needs to notify the listeners.  However, this class must be very parallel to not only the interface itself, but also the "Adapter" class, and yet it is in a different place.
> So, it seems somewhat reasonable to move all these "listener list" classes into the interfaces themselves, so all three related things are located in the same file.  A preliminary POC of this concept was done with "Query.java", and "QueryListener.java" and it looks good.
> This doesn't seem to require changes to client code, because the accessor methods only refer to "ListenerList<....>" and not to the listener list class itself (in order to be more general, of course), but which helps us to hide the implementing class away inside the interface.
> I will attach the diff of the POC, to hopefully make this more clear.  It may seem a somewhat nebulous concept, but the idea is to keep "like things" together for clarity.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)