Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewListener.java Wed Jan 24 
04:37:05 2018
@@ -18,14 +18,48 @@ package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.List;
 import org.apache.pivot.util.Filter;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Table view listener interface.
  */
 public interface TableViewListener {
     /**
+     * Table view listeners.
+     */
+    public static class Listeners extends ListenerList<TableViewListener> 
implements TableViewListener {
+        @Override
+        public void tableDataChanged(TableView tableView, List<?> 
previousTableData) {
+            forEach(listener -> listener.tableDataChanged(tableView, 
previousTableData));
+        }
+
+        @Override
+        public void columnSourceChanged(TableView tableView, TableView 
previousColumnSource) {
+            forEach(listener -> listener.columnSourceChanged(tableView, 
previousColumnSource));
+        }
+
+        @Override
+        public void rowEditorChanged(TableView tableView, TableView.RowEditor 
previousRowEditor) {
+            forEach(listener -> listener.rowEditorChanged(tableView, 
previousRowEditor));
+        }
+
+        @Override
+        public void selectModeChanged(TableView tableView, 
TableView.SelectMode previousSelectMode) {
+            forEach(listener -> listener.selectModeChanged(tableView, 
previousSelectMode));
+        }
+
+        @Override
+        public void disabledRowFilterChanged(TableView tableView,
+            Filter<?> previousDisabledRowFilter) {
+            forEach(listener -> listener.disabledRowFilterChanged(tableView, 
previousDisabledRowFilter));
+        }
+    }
+
+    /**
      * Table view listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TableViewListener {
         @Override
         public void tableDataChanged(TableView tableView, List<?> 
previousTableData) {
@@ -60,7 +94,8 @@ public interface TableViewListener {
      * @param tableView The source of this event.
      * @param previousTableData The previous data list for this table view.
      */
-    public void tableDataChanged(TableView tableView, List<?> 
previousTableData);
+    default public void tableDataChanged(TableView tableView, List<?> 
previousTableData) {
+    }
 
     /**
      * Called when a table view's column source has changed.
@@ -68,7 +103,8 @@ public interface TableViewListener {
      * @param tableView The source of this event.
      * @param previousColumnSource The previous column source for this table.
      */
-    public void columnSourceChanged(TableView tableView, TableView 
previousColumnSource);
+    default public void columnSourceChanged(TableView tableView, TableView 
previousColumnSource) {
+    }
 
     /**
      * Called when a table view's row editor has changed.
@@ -76,7 +112,8 @@ public interface TableViewListener {
      * @param tableView The source of this event.
      * @param previousRowEditor The row editor that was previously used.
      */
-    public void rowEditorChanged(TableView tableView, TableView.RowEditor 
previousRowEditor);
+    default public void rowEditorChanged(TableView tableView, 
TableView.RowEditor previousRowEditor) {
+    }
 
     /**
      * Called when a table view's select mode has changed.
@@ -84,7 +121,8 @@ public interface TableViewListener {
      * @param tableView The source of the event.
      * @param previousSelectMode What the select mode used to be.
      */
-    public void selectModeChanged(TableView tableView, TableView.SelectMode 
previousSelectMode);
+    default public void selectModeChanged(TableView tableView, 
TableView.SelectMode previousSelectMode) {
+    }
 
     /**
      * Called when a table view's disabled row filter has changed.
@@ -92,5 +130,6 @@ public interface TableViewListener {
      * @param tableView The table view in question.
      * @param previousDisabledRowFilter What the previous filter for disabled 
rows was.
      */
-    public void disabledRowFilterChanged(TableView tableView, Filter<?> 
previousDisabledRowFilter);
+    default public void disabledRowFilterChanged(TableView tableView, 
Filter<?> previousDisabledRowFilter) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewRowListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewRowListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewRowListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewRowListener.java Wed Jan 
24 04:37:05 2018
@@ -16,13 +16,48 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Table view row listener interface.
  */
 public interface TableViewRowListener {
     /**
+     * Table view row listeners.
+     */
+    public static class Listeners extends ListenerList<TableViewRowListener>
+        implements TableViewRowListener {
+        @Override
+        public void rowInserted(TableView tableView, int index) {
+            forEach(listener -> listener.rowInserted(tableView, index));
+        }
+
+        @Override
+        public void rowsRemoved(TableView tableView, int index, int count) {
+            forEach(listener -> listener.rowsRemoved(tableView, index, count));
+        }
+
+        @Override
+        public void rowUpdated(TableView tableView, int index) {
+            forEach(listener -> listener.rowUpdated(tableView, index));
+        }
+
+        @Override
+        public void rowsCleared(TableView tableView) {
+            forEach(listener -> listener.rowsCleared(tableView));
+        }
+
+        @Override
+        public void rowsSorted(TableView tableView) {
+            forEach(listener -> listener.rowsSorted(tableView));
+        }
+    }
+
+    /**
      * Table row listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TableViewRowListener {
         @Override
         public void rowInserted(TableView tableView, int index) {
@@ -56,7 +91,8 @@ public interface TableViewRowListener {
      * @param tableView The source of the event.
      * @param index The index of the row that was inserted.
      */
-    public void rowInserted(TableView tableView, int index);
+    default public void rowInserted(TableView tableView, int index) {
+    }
 
     /**
      * Called when rows have been removed from the table view.
@@ -66,7 +102,8 @@ public interface TableViewRowListener {
      * @param count The number of rows that were removed, or <tt>-1</tt> if all
      * rows were removed.
      */
-    public void rowsRemoved(TableView tableView, int index, int count);
+    default public void rowsRemoved(TableView tableView, int index, int count) 
{
+    }
 
     /**
      * Called when an row in the table view has been updated.
@@ -74,19 +111,22 @@ public interface TableViewRowListener {
      * @param tableView The source of the event.
      * @param index The first index affected by the event.
      */
-    public void rowUpdated(TableView tableView, int index);
+    default public void rowUpdated(TableView tableView, int index) {
+    }
 
     /**
      * Called when the rows in a table view have been cleared.
      *
      * @param tableView The source of the event.
      */
-    public void rowsCleared(TableView tableView);
+    default public void rowsCleared(TableView tableView) {
+    }
 
     /**
      * Called when the rows in a table have been sorted.
      *
      * @param tableView The source of the event.
      */
-    public void rowsSorted(TableView tableView);
+    default public void rowsSorted(TableView tableView) {
+    }
 }

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSelectionListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSelectionListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSelectionListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSelectionListener.java 
Wed Jan 24 04:37:05 2018
@@ -17,14 +17,43 @@
 package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Table view selection listener interface.
  */
 public interface TableViewSelectionListener {
     /**
+     * Table view selection listeners.
+     */
+    public static class Listeners extends 
ListenerList<TableViewSelectionListener>
+        implements TableViewSelectionListener {
+        @Override
+        public void selectedRangeAdded(TableView tableView, int rangeStart, 
int rangeEnd) {
+            forEach(listener -> listener.selectedRangeAdded(tableView, 
rangeStart, rangeEnd));
+        }
+
+        @Override
+        public void selectedRangeRemoved(TableView tableView, int rangeStart, 
int rangeEnd) {
+            forEach(listener -> listener.selectedRangeRemoved(tableView, 
rangeStart, rangeEnd));
+        }
+
+        @Override
+        public void selectedRangesChanged(TableView tableView, Sequence<Span> 
previousSelection) {
+            forEach(listener -> listener.selectedRangesChanged(tableView, 
previousSelection));
+        }
+
+        @Override
+        public void selectedRowChanged(TableView tableView, Object 
previousSelectedRow) {
+            forEach(listener -> listener.selectedRowChanged(tableView, 
previousSelectedRow));
+        }
+    }
+
+    /**
      * Table view selection listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TableViewSelectionListener {
         @Override
         public void selectedRangeAdded(TableView tableView, int rangeStart, 
int rangeEnd) {
@@ -54,7 +83,8 @@ public interface TableViewSelectionListe
      * @param rangeStart The start index of the range that was added, 
inclusive.
      * @param rangeEnd The end index of the range that was added, inclusive.
      */
-    public void selectedRangeAdded(TableView tableView, int rangeStart, int 
rangeEnd);
+    default public void selectedRangeAdded(TableView tableView, int 
rangeStart, int rangeEnd) {
+    }
 
     /**
      * Called when a range has been removed from a table view's selection.
@@ -64,7 +94,8 @@ public interface TableViewSelectionListe
      * inclusive.
      * @param rangeEnd The end index of the range that was removed, inclusive.
      */
-    public void selectedRangeRemoved(TableView tableView, int rangeStart, int 
rangeEnd);
+    default public void selectedRangeRemoved(TableView tableView, int 
rangeStart, int rangeEnd) {
+    }
 
     /**
      * Called when a table view's selection state has been reset.
@@ -75,7 +106,8 @@ public interface TableViewSelectionListe
      * indirectly as a result of a model change, contains the current 
selection.
      * Otherwise, contains <tt>null</tt>.
      */
-    public void selectedRangesChanged(TableView tableView, Sequence<Span> 
previousSelectedRanges);
+    default public void selectedRangesChanged(TableView tableView, 
Sequence<Span> previousSelectedRanges) {
+    }
 
     /**
      * Called when a table view's selected item has changed.
@@ -83,5 +115,6 @@ public interface TableViewSelectionListe
      * @param tableView The source of the event.
      * @param previousSelectedRow The row that was previously selected.
      */
-    public void selectedRowChanged(TableView tableView, Object 
previousSelectedRow);
+    default public void selectedRowChanged(TableView tableView, Object 
previousSelectedRow) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSortListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSortListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSortListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TableViewSortListener.java Wed Jan 
24 04:37:05 2018
@@ -16,13 +16,44 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Table view sort listener interface.
  */
 public interface TableViewSortListener {
     /**
+     * Table view sort listeners.
+     */
+    public static class Listeners extends ListenerList<TableViewSortListener>
+        implements TableViewSortListener {
+        @Override
+        public void sortAdded(TableView tableView, String columnName) {
+            forEach(listener -> listener.sortAdded(tableView, columnName));
+        }
+
+        @Override
+        public void sortUpdated(TableView tableView, String columnName,
+            SortDirection previousSortDirection) {
+            forEach(listener -> listener.sortUpdated(tableView, columnName, 
previousSortDirection));
+        }
+
+        @Override
+        public void sortRemoved(TableView tableView, String columnName, 
SortDirection sortDirection) {
+            forEach(listener -> listener.sortRemoved(tableView, columnName, 
sortDirection));
+        }
+
+        @Override
+        public void sortChanged(TableView tableView) {
+            forEach(listener -> listener.sortChanged(tableView));
+        }
+    }
+
+    /**
      * Table view sort listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TableViewSortListener {
         @Override
         public void sortAdded(TableView tableView, String columnName) {
@@ -52,7 +83,8 @@ public interface TableViewSortListener {
      * @param tableView The source of this event.
      * @param columnName The new column name added to the sort criteria.
      */
-    public void sortAdded(TableView tableView, String columnName);
+    default public void sortAdded(TableView tableView, String columnName) {
+    }
 
     /**
      * Called when a sort has been updated in a table view.
@@ -61,8 +93,9 @@ public interface TableViewSortListener {
      * @param columnName The column that was updated.
      * @param previousSortDirection The previous value of the sort direction 
for this column.
      */
-    public void sortUpdated(TableView tableView, String columnName,
-        SortDirection previousSortDirection);
+    default public void sortUpdated(TableView tableView, String columnName,
+        SortDirection previousSortDirection) {
+    }
 
     /**
      * Called when a sort has been removed from a table view.
@@ -71,12 +104,14 @@ public interface TableViewSortListener {
      * @param columnName The column name that was removed from the sort 
criteria.
      * @param sortDirection What the sort direction was for this column.
      */
-    public void sortRemoved(TableView tableView, String columnName, 
SortDirection sortDirection);
+    default public void sortRemoved(TableView tableView, String columnName, 
SortDirection sortDirection) {
+    }
 
     /**
      * Called when a table view's sort has changed.
      *
      * @param tableView The source of this event.
      */
-    public void sortChanged(TableView tableView);
+    default public void sortChanged(TableView tableView) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextArea.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextArea.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextArea.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextArea.java Wed Jan 24 04:37:05 
2018
@@ -480,65 +480,6 @@ public class TextArea extends Component
         }
     }
 
-    private static class TextAreaListenerList extends 
ListenerList<TextAreaListener> implements
-        TextAreaListener {
-        @Override
-        public void maximumLengthChanged(TextArea textArea, int 
previousMaximumLength) {
-            forEach(listener -> listener.maximumLengthChanged(textArea, 
previousMaximumLength));
-        }
-
-        @Override
-        public void editableChanged(TextArea textArea) {
-            forEach(listener -> listener.editableChanged(textArea));
-        }
-    }
-
-    private static class TextAreaContentListenerList extends
-        ListenerList<TextAreaContentListener> implements 
TextAreaContentListener {
-        @Override
-        public void paragraphInserted(TextArea textArea, int index) {
-            forEach(listener -> listener.paragraphInserted(textArea, index));
-        }
-
-        @Override
-        public void paragraphsRemoved(TextArea textArea, int index,
-            Sequence<TextArea.Paragraph> removed) {
-            forEach(listener -> listener.paragraphsRemoved(textArea, index, 
removed));
-        }
-
-        @Override
-        public void textChanged(TextArea textArea) {
-            forEach(listener -> listener.textChanged(textArea));
-        }
-    }
-
-    private static class TextAreaSelectionListenerList extends
-        ListenerList<TextAreaSelectionListener> implements 
TextAreaSelectionListener {
-        @Override
-        public void selectionChanged(TextArea textArea, int 
previousSelectionStart,
-            int previousSelectionLength) {
-            forEach(listener -> listener.selectionChanged(textArea, 
previousSelectionStart, previousSelectionLength));
-        }
-    }
-
-    private static class TextAreaBindingListenerList extends
-        ListenerList<TextAreaBindingListener> implements 
TextAreaBindingListener {
-        @Override
-        public void textKeyChanged(TextArea textArea, String previousTextKey) {
-            forEach(listener -> listener.textKeyChanged(textArea, 
previousTextKey));
-        }
-
-        @Override
-        public void textBindTypeChanged(TextArea textArea, BindType 
previousTextBindType) {
-            forEach(listener -> listener.textBindTypeChanged(textArea, 
previousTextBindType));
-        }
-
-        @Override
-        public void textBindMappingChanged(TextArea textArea, TextBindMapping 
previousTextBindMapping) {
-            forEach(listener -> listener.textBindMappingChanged(textArea, 
previousTextBindMapping));
-        }
-    }
-
     private ArrayList<Paragraph> paragraphs = new ArrayList<>();
     private ParagraphSequence paragraphSequence = new ParagraphSequence();
 
@@ -558,10 +499,10 @@ public class TextArea extends Component
 
     private LinkedStack<Edit> editHistory = new 
LinkedStack<>(MAXIMUM_EDIT_HISTORY_LENGTH);
 
-    private TextAreaListenerList textAreaListeners = new 
TextAreaListenerList();
-    private TextAreaContentListenerList textAreaContentListeners = new 
TextAreaContentListenerList();
-    private TextAreaSelectionListenerList textAreaSelectionListeners = new 
TextAreaSelectionListenerList();
-    private TextAreaBindingListenerList textAreaBindingListeners = new 
TextAreaBindingListenerList();
+    private TextAreaListener.Listeners textAreaListeners = new 
TextAreaListener.Listeners();
+    private TextAreaContentListener.Listeners textAreaContentListeners = new 
TextAreaContentListener.Listeners();
+    private TextAreaSelectionListener.Listeners textAreaSelectionListeners = 
new TextAreaSelectionListener.Listeners();
+    private TextAreaBindingListener.Listeners textAreaBindingListeners = new 
TextAreaBindingListener.Listeners();
 
     private static final int INITIAL_PARAGRAPH_CAPACITY = 256;
     private static final int MAXIMUM_EDIT_HISTORY_LENGTH = 30;

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaBindingListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaBindingListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaBindingListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaBindingListener.java Wed 
Jan 24 04:37:05 2018
@@ -16,13 +16,39 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Text area binding listener interface.
  */
 public interface TextAreaBindingListener {
     /**
+     * Text area binding listeners.
+     */
+    public static class Listeners extends ListenerList<TextAreaBindingListener>
+        implements TextAreaBindingListener {
+        @Override
+        public void textKeyChanged(TextArea textArea, String previousTextKey) {
+            forEach(listener -> listener.textKeyChanged(textArea, 
previousTextKey));
+        }
+
+        @Override
+        public void textBindTypeChanged(TextArea textArea, BindType 
previousTextBindType) {
+            forEach(listener -> listener.textBindTypeChanged(textArea, 
previousTextBindType));
+        }
+
+        @Override
+        public void textBindMappingChanged(TextArea textArea,
+            TextArea.TextBindMapping previousTextBindMapping) {
+            forEach(listener -> listener.textBindMappingChanged(textArea, 
previousTextBindMapping));
+        }
+    }
+
+    /**
      * Text area binding listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TextAreaBindingListener {
         @Override
         public void textKeyChanged(TextArea textArea, String previousTextKey) {
@@ -47,7 +73,8 @@ public interface TextAreaBindingListener
      * @param textArea The component that has changed.
      * @param previousTextKey What the text key used to be for this component.
      */
-    public void textKeyChanged(TextArea textArea, String previousTextKey);
+    default public void textKeyChanged(TextArea textArea, String 
previousTextKey) {
+    }
 
     /**
      * Called when a text area's text bind type has changed.
@@ -55,7 +82,8 @@ public interface TextAreaBindingListener
      * @param textArea The source of this event.
      * @param previousTextBindType The previous bind type for this component.
      */
-    public void textBindTypeChanged(TextArea textArea, BindType 
previousTextBindType);
+    default public void textBindTypeChanged(TextArea textArea, BindType 
previousTextBindType) {
+    }
 
     /**
      * Called when a text area's text bind mapping has changed.
@@ -63,6 +91,7 @@ public interface TextAreaBindingListener
      * @param textArea The source of this event.
      * @param previousTextBindMapping The previous bind mapping for this 
component.
      */
-    public void textBindMappingChanged(TextArea textArea,
-        TextArea.TextBindMapping previousTextBindMapping);
+    default public void textBindMappingChanged(TextArea textArea,
+        TextArea.TextBindMapping previousTextBindMapping) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaContentListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaContentListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaContentListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaContentListener.java Wed 
Jan 24 04:37:05 2018
@@ -17,14 +17,39 @@
 package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Text area text listener interface.
  */
 public interface TextAreaContentListener {
     /**
+     * Text area content listeners.
+     */
+    public static class Listeners extends ListenerList<TextAreaContentListener>
+        implements TextAreaContentListener {
+        @Override
+        public void paragraphInserted(TextArea textArea, int index) {
+            forEach(listener -> listener.paragraphInserted(textArea, index));
+        }
+
+        @Override
+        public void paragraphsRemoved(TextArea textArea, int index,
+            Sequence<TextArea.Paragraph> removed) {
+            forEach(listener -> listener.paragraphsRemoved(textArea, index, 
removed));
+        }
+
+        @Override
+        public void textChanged(TextArea textArea) {
+            forEach(listener -> listener.textChanged(textArea));
+        }
+    }
+
+    /**
      * Text input text listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TextAreaContentListener {
         @Override
         public void paragraphInserted(TextArea textArea, int index) {
@@ -50,7 +75,8 @@ public interface TextAreaContentListener
      * @param textArea The source of the event.
      * @param index The index at which the paragraph was inserted.
      */
-    public void paragraphInserted(TextArea textArea, int index);
+    default public void paragraphInserted(TextArea textArea, int index) {
+    }
 
     /**
      * Called when paragraphs have been removed from a text area's paragraph
@@ -60,12 +86,14 @@ public interface TextAreaContentListener
      * @param index The starting index from which the paragraphs were removed.
      * @param removed The paragraphs that were removed.
      */
-    public void paragraphsRemoved(TextArea textArea, int index, 
Sequence<TextArea.Paragraph> removed);
+    default public void paragraphsRemoved(TextArea textArea, int index, 
Sequence<TextArea.Paragraph> removed) {
+    }
 
     /**
      * Called when a text area's text has changed.
      *
      * @param textArea The source of the event.
      */
-    public void textChanged(TextArea textArea);
+    default public void textChanged(TextArea textArea) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaListener.java Wed Jan 24 
04:37:05 2018
@@ -16,13 +16,32 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Text area listener interface.
  */
 public interface TextAreaListener {
     /**
+     * Text area listeners.
+     */
+    public static class Listeners extends ListenerList<TextAreaListener> 
implements TextAreaListener {
+        @Override
+        public void maximumLengthChanged(TextArea textArea, int 
previousMaximumLength) {
+            forEach(listener -> listener.maximumLengthChanged(textArea, 
previousMaximumLength));
+        }
+
+        @Override
+        public void editableChanged(TextArea textArea) {
+            forEach(listener -> listener.editableChanged(textArea));
+        }
+    }
+
+    /**
      * Text area listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TextAreaListener {
         @Override
         public void maximumLengthChanged(TextArea textArea, int 
previousMaximumLength) {
@@ -41,12 +60,14 @@ public interface TextAreaListener {
      * @param textArea The source of this event.
      * @param previousMaximumLength What the maximum length used to be.
      */
-    public void maximumLengthChanged(TextArea textArea, int 
previousMaximumLength);
+    default public void maximumLengthChanged(TextArea textArea, int 
previousMaximumLength) {
+    }
 
     /**
      * Called when a text area's editable state has changed.
      *
      * @param textArea The source of this event.
      */
-    public void editableChanged(TextArea textArea);
+    default public void editableChanged(TextArea textArea) {
+    }
 }

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaSelectionListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaSelectionListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaSelectionListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextAreaSelectionListener.java Wed 
Jan 24 04:37:05 2018
@@ -16,11 +16,25 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Text area selection listener interface.
  */
 public interface TextAreaSelectionListener {
     /**
+     * Text area selection listeners.
+     */
+    public static class Listeners extends 
ListenerList<TextAreaSelectionListener>
+        implements TextAreaSelectionListener {
+        @Override
+        public void selectionChanged(TextArea textArea, int 
previousSelectionStart,
+            int previousSelectionLength) {
+            forEach(listener -> listener.selectionChanged(textArea, 
previousSelectionStart, previousSelectionLength));
+        }
+    }
+
+    /**
      * Called when a text area's selection state has changed.
      *
      * @param textArea The source of this event.

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java Wed Jan 24 04:37:05 
2018
@@ -188,47 +188,6 @@ public class TextPane extends Container
         }
     }
 
-    private static class TextPaneListenerList extends 
ListenerList<TextPaneListener> implements
-        TextPaneListener {
-        @Override
-        public void documentChanged(TextPane textPane, Document previousText) {
-            forEach(listener -> listener.documentChanged(textPane, 
previousText));
-        }
-
-        @Override
-        public void editableChanged(TextPane textPane) {
-            forEach(listener -> listener.editableChanged(textPane));
-        }
-    }
-
-    private static class TextPaneCharacterListenerList extends
-        ListenerList<TextPaneCharacterListener> implements 
TextPaneCharacterListener {
-        /**
-         * @param index Index into the whole document.
-         */
-        @Override
-        public void charactersInserted(TextPane textPane, int index, int 
count) {
-            forEach(listener -> listener.charactersInserted(textPane, index, 
count));
-        }
-
-        /**
-         * @param index Index into the whole document.
-         */
-        @Override
-        public void charactersRemoved(TextPane textPane, int index, int count) 
{
-            forEach(listener -> listener.charactersRemoved(textPane, index, 
count));
-        }
-    }
-
-    private static class TextPaneSelectionListenerList extends
-        ListenerList<TextPaneSelectionListener> implements 
TextPaneSelectionListener {
-        @Override
-        public void selectionChanged(TextPane textPane, int 
previousSelectionStart,
-            int previousSelectionLength) {
-            forEach(listener -> listener.selectionChanged(textPane, 
previousSelectionStart, previousSelectionLength));
-        }
-    }
-
     private Document document = null;
     private AttributedStringCharacterIterator composedText = null;
 
@@ -338,9 +297,9 @@ public class TextPane extends Container
 
     private LinkedStack<Edit> editHistory = new 
LinkedStack<>(MAXIMUM_EDIT_HISTORY_LENGTH);
 
-    private TextPaneListenerList textPaneListeners = new 
TextPaneListenerList();
-    private TextPaneCharacterListenerList textPaneCharacterListeners = new 
TextPaneCharacterListenerList();
-    private TextPaneSelectionListenerList textPaneSelectionListeners = new 
TextPaneSelectionListenerList();
+    private TextPaneListener.Listeners textPaneListeners = new 
TextPaneListener.Listeners();
+    private TextPaneCharacterListener.Listeners textPaneCharacterListeners = 
new TextPaneCharacterListener.Listeners();
+    private TextPaneSelectionListener.Listeners textPaneSelectionListeners = 
new TextPaneSelectionListener.Listeners();
 
     private static final int MAXIMUM_EDIT_HISTORY_LENGTH = 100;
 

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneCharacterListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneCharacterListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneCharacterListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneCharacterListener.java Wed 
Jan 24 04:37:05 2018
@@ -16,13 +16,39 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Text pane character listener interface.
  */
 public interface TextPaneCharacterListener {
     /**
+     * Text pane character listeners.
+     */
+    public static class Listeners extends 
ListenerList<TextPaneCharacterListener>
+        implements TextPaneCharacterListener {
+        /**
+         * @param index Index into the whole document.
+         */
+        @Override
+        public void charactersInserted(TextPane textPane, int index, int 
count) {
+            forEach(listener -> listener.charactersInserted(textPane, index, 
count));
+        }
+
+        /**
+         * @param index Index into the whole document.
+         */
+        @Override
+        public void charactersRemoved(TextPane textPane, int index, int count) 
{
+            forEach(listener -> listener.charactersRemoved(textPane, index, 
count));
+        }
+    }
+
+    /**
      * Text pane character listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TextPaneCharacterListener {
         @Override
         public void charactersInserted(TextPane textPane, int index, int 
count) {
@@ -42,7 +68,8 @@ public interface TextPaneCharacterListen
      * @param index    The starting point of the text insertion.
      * @param count    The count of characters inserted there.
      */
-    public void charactersInserted(TextPane textPane, int index, int count);
+    default public void charactersInserted(TextPane textPane, int index, int 
count) {
+    }
 
     /**
      * Called when characters have been removed from a text pane.
@@ -51,5 +78,6 @@ public interface TextPaneCharacterListen
      * @param index    The starting point where text was removed.
      * @param count    Number of characters removed starting from there.
      */
-    public void charactersRemoved(TextPane textPane, int index, int count);
+    default public void charactersRemoved(TextPane textPane, int index, int 
count) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneListener.java Wed Jan 24 
04:37:05 2018
@@ -16,6 +16,7 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
 import org.apache.pivot.wtk.text.Document;
 
 /**
@@ -23,8 +24,25 @@ import org.apache.pivot.wtk.text.Documen
  */
 public interface TextPaneListener {
     /**
+     * Text pane listeners.
+     */
+    public static class Listeners extends ListenerList<TextPaneListener> 
implements TextPaneListener {
+        @Override
+        public void documentChanged(TextPane textPane, Document previousText) {
+            forEach(listener -> listener.documentChanged(textPane, 
previousText));
+        }
+
+        @Override
+        public void editableChanged(TextPane textPane) {
+            forEach(listener -> listener.editableChanged(textPane));
+        }
+    }
+
+    /**
      * Text pane listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TextPaneListener {
         @Override
         public void documentChanged(TextPane textPane, Document 
previousDocument) {
@@ -43,12 +61,14 @@ public interface TextPaneListener {
      * @param textPane         The text pane that changed.
      * @param previousDocument What the document used to be.
      */
-    public void documentChanged(TextPane textPane, Document previousDocument);
+    default public void documentChanged(TextPane textPane, Document 
previousDocument) {
+    }
 
     /**
      * Called when a text pane's editable state has changed.
      *
      * @param textPane The source of this event.
      */
-    public void editableChanged(TextPane textPane);
+    default public void editableChanged(TextPane textPane) {
+    }
 }

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneSelectionListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneSelectionListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneSelectionListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPaneSelectionListener.java Wed 
Jan 24 04:37:05 2018
@@ -16,11 +16,25 @@
  */
 package org.apache.pivot.wtk;
 
+import org.apache.pivot.util.ListenerList;
+
 /**
  * Text pane selection listener interface.
  */
 public interface TextPaneSelectionListener {
     /**
+     * Text pane selection listeners.
+     */
+    public static class Listeners extends 
ListenerList<TextPaneSelectionListener>
+        implements TextPaneSelectionListener {
+        @Override
+        public void selectionChanged(TextPane textPane, int 
previousSelectionStart,
+            int previousSelectionLength) {
+            forEach(listener -> listener.selectionChanged(textPane, 
previousSelectionStart, previousSelectionLength));
+        }
+    }
+
+    /**
      * Called when a text pane's selection state has changed.
      *
      * @param textPane                The source of this event.

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeView.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeView.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeView.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeView.java Wed Jan 24 04:37:05 
2018
@@ -208,154 +208,6 @@ public class TreeView extends Component
     }
 
     /**
-     * Tree view listener list.
-     */
-    private static class TreeViewListenerList extends 
ListenerList<TreeViewListener> implements
-        TreeViewListener {
-
-        @Override
-        public void treeDataChanged(TreeView treeView, List<?> 
previousTreeData) {
-            forEach(listener -> listener.treeDataChanged(treeView, 
previousTreeData));
-        }
-
-        @Override
-        public void nodeRendererChanged(TreeView treeView, NodeRenderer 
previousNodeRenderer) {
-            forEach(listener -> listener.nodeRendererChanged(treeView, 
previousNodeRenderer));
-        }
-
-        @Override
-        public void nodeEditorChanged(TreeView treeView, TreeView.NodeEditor 
previousNodeEditor) {
-            forEach(listener -> listener.nodeEditorChanged(treeView, 
previousNodeEditor));
-        }
-
-        @Override
-        public void selectModeChanged(TreeView treeView, SelectMode 
previousSelectMode) {
-            forEach(listener -> listener.selectModeChanged(treeView, 
previousSelectMode));
-        }
-
-        @Override
-        public void checkmarksEnabledChanged(TreeView treeView) {
-            forEach(listener -> listener.checkmarksEnabledChanged(treeView));
-        }
-
-        @Override
-        public void showMixedCheckmarkStateChanged(TreeView treeView) {
-            forEach(listener -> 
listener.showMixedCheckmarkStateChanged(treeView));
-        }
-
-        @Override
-        public void disabledNodeFilterChanged(TreeView treeView,
-            Filter<?> previousDisabledNodeFilter) {
-            forEach(listener -> listener.disabledNodeFilterChanged(treeView, 
previousDisabledNodeFilter));
-        }
-
-        @Override
-        public void disabledCheckmarkFilterChanged(TreeView treeView,
-            Filter<?> previousDisabledCheckmarkFilter) {
-            forEach(listener -> 
listener.disabledCheckmarkFilterChanged(treeView, 
previousDisabledCheckmarkFilter));
-        }
-    }
-
-    /**
-     * Tree view branch listener list.
-     */
-    private static class TreeViewBranchListenerList extends 
ListenerList<TreeViewBranchListener>
-        implements TreeViewBranchListener {
-        @Override
-        public void branchExpanded(TreeView treeView, Path path) {
-            forEach(listener -> listener.branchExpanded(treeView, path));
-        }
-
-        @Override
-        public void branchCollapsed(TreeView treeView, Path path) {
-            forEach(listener -> listener.branchCollapsed(treeView, path));
-        }
-
-        @Override
-        public Vote previewBranchExpandedChange(TreeView treeView, Path path) {
-            VoteResult vote = new VoteResult(Vote.APPROVE);
-
-            forEach(listener -> 
vote.tally(listener.previewBranchExpandedChange(treeView, path)));
-
-            return vote.get();
-        }
-
-        @Override
-        public void branchExpandedChangeVetoed(TreeView treeView, Path path, 
Vote reason) {
-            forEach(listener -> listener.branchExpandedChangeVetoed(treeView, 
path, reason));
-        }
-    }
-
-    /**
-     * Tree view node listener list.
-     */
-    private static class TreeViewNodeListenerList extends 
ListenerList<TreeViewNodeListener>
-        implements TreeViewNodeListener {
-        @Override
-        public void nodeInserted(TreeView treeView, Path path, int index) {
-            forEach(listener -> listener.nodeInserted(treeView, path, index));
-        }
-
-        @Override
-        public void nodesRemoved(TreeView treeView, Path path, int index, int 
count) {
-            forEach(listener -> listener.nodesRemoved(treeView, path, index, 
count));
-        }
-
-        @Override
-        public void nodeUpdated(TreeView treeView, Path path, int index) {
-            forEach(listener -> listener.nodeUpdated(treeView, path, index));
-        }
-
-        @Override
-        public void nodesCleared(TreeView treeView, Path path) {
-            forEach(listener -> listener.nodesCleared(treeView, path));
-        }
-
-        @Override
-        public void nodesSorted(TreeView treeView, Path path) {
-            forEach(listener -> listener.nodesSorted(treeView, path));
-        }
-    }
-
-    /**
-     * Tree view node state listener list.
-     */
-    private static class TreeViewNodeStateListenerList extends
-        ListenerList<TreeViewNodeStateListener> implements 
TreeViewNodeStateListener {
-        @Override
-        public void nodeCheckStateChanged(TreeView treeView, Path path,
-            TreeView.NodeCheckState previousCheckState) {
-            forEach(listener -> listener.nodeCheckStateChanged(treeView, path, 
previousCheckState));
-        }
-    }
-
-    /**
-     * Tree view selection listener list.
-     */
-    private static class TreeViewSelectionListenerList extends
-        ListenerList<TreeViewSelectionListener> implements 
TreeViewSelectionListener {
-        @Override
-        public void selectedPathAdded(TreeView treeView, Path path) {
-            forEach(listener -> listener.selectedPathAdded(treeView, path));
-        }
-
-        @Override
-        public void selectedPathRemoved(TreeView treeView, Path path) {
-            forEach(listener -> listener.selectedPathRemoved(treeView, path));
-        }
-
-        @Override
-        public void selectedPathsChanged(TreeView treeView, Sequence<Path> 
previousSelectedPaths) {
-            forEach(listener -> listener.selectedPathsChanged(treeView, 
previousSelectedPaths));
-        }
-
-        @Override
-        public void selectedNodeChanged(TreeView treeView, Object 
previousSelectedNode) {
-            forEach(listener -> listener.selectedNodeChanged(treeView, 
previousSelectedNode));
-        }
-    }
-
-    /**
      * A comparator that sorts paths by the order in which they would visually
      * appear in a fully expanded tree, otherwise known as their "row order".
      */
@@ -819,11 +671,11 @@ public class TreeView extends Component
     private NodeEditor nodeEditor = null;
 
     // Listener lists
-    private TreeViewListenerList treeViewListeners = new 
TreeViewListenerList();
-    private TreeViewBranchListenerList treeViewBranchListeners = new 
TreeViewBranchListenerList();
-    private TreeViewNodeListenerList treeViewNodeListeners = new 
TreeViewNodeListenerList();
-    private TreeViewNodeStateListenerList treeViewNodeStateListeners = new 
TreeViewNodeStateListenerList();
-    private TreeViewSelectionListenerList treeViewSelectionListeners = new 
TreeViewSelectionListenerList();
+    private TreeViewListener.Listeners treeViewListeners = new 
TreeViewListener.Listeners();
+    private TreeViewBranchListener.Listeners treeViewBranchListeners = new 
TreeViewBranchListener.Listeners();
+    private TreeViewNodeListener.Listeners treeViewNodeListeners = new 
TreeViewNodeListener.Listeners();
+    private TreeViewNodeStateListener.Listeners treeViewNodeStateListeners = 
new TreeViewNodeStateListener.Listeners();
+    private TreeViewSelectionListener.Listeners treeViewSelectionListeners = 
new TreeViewSelectionListener.Listeners();
 
     // other properties
     private String treeDataKey = null;

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewBranchListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewBranchListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewBranchListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewBranchListener.java Wed 
Jan 24 04:37:05 2018
@@ -17,15 +17,49 @@
 package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence.Tree.Path;
+import org.apache.pivot.util.ListenerList;
 import org.apache.pivot.util.Vote;
+import org.apache.pivot.util.VoteResult;
 
 /**
  * Tree view branch listener interface.
  */
 public interface TreeViewBranchListener {
     /**
+     * Tree view branch listener list.
+     */
+    public static class Listeners extends ListenerList<TreeViewBranchListener>
+        implements TreeViewBranchListener {
+        @Override
+        public void branchExpanded(TreeView treeView, Path path) {
+            forEach(listener -> listener.branchExpanded(treeView, path));
+        }
+
+        @Override
+        public void branchCollapsed(TreeView treeView, Path path) {
+            forEach(listener -> listener.branchCollapsed(treeView, path));
+        }
+
+        @Override
+        public Vote previewBranchExpandedChange(TreeView treeView, Path path) {
+            VoteResult vote = new VoteResult(Vote.APPROVE);
+
+            forEach(listener -> 
vote.tally(listener.previewBranchExpandedChange(treeView, path)));
+
+            return vote.get();
+        }
+
+        @Override
+        public void branchExpandedChangeVetoed(TreeView treeView, Path path, 
Vote reason) {
+            forEach(listener -> listener.branchExpandedChangeVetoed(treeView, 
path, reason));
+        }
+    }
+
+    /**
      * Tree view branch listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TreeViewBranchListener {
         @Override
         public void branchExpanded(TreeView treeView, Path path) {
@@ -55,7 +89,8 @@ public interface TreeViewBranchListener
      * @param treeView The source of the event.
      * @param path The path of the node that was shown.
      */
-    public void branchExpanded(TreeView treeView, Path path);
+    default public void branchExpanded(TreeView treeView, Path path) {
+    }
 
     /**
      * Called when a tree node is collapsed.
@@ -63,7 +98,8 @@ public interface TreeViewBranchListener
      * @param treeView The source of the event.
      * @param path The path of the node that was collapsed.
      */
-    public void branchCollapsed(TreeView treeView, Path path);
+    default public void branchCollapsed(TreeView treeView, Path path) {
+    }
 
     /**
      * Called before a tree node is expanded or collapsed to allow the 
application
@@ -73,7 +109,9 @@ public interface TreeViewBranchListener
      * @param path The path of the node about to be collapsed or expanded.
      * @return The accumulated vote as to whether to allow this expansion or 
collapse.
      */
-    public Vote previewBranchExpandedChange(TreeView treeView, Path path);
+    default public Vote previewBranchExpandedChange(TreeView treeView, Path 
path) {
+        return Vote.APPROVE;
+    }
 
     /**
      * Called when the {@link #previewBranchExpandedChange 
previewBranchExpandedChange()}
@@ -85,6 +123,7 @@ public interface TreeViewBranchListener
      * @param path The path of the node whose state will remain the same.
      * @param reason The tallied vote result that caused the veto.
      */
-    public void branchExpandedChangeVetoed(TreeView treeView, Path path, Vote 
reason);
+    default public void branchExpandedChangeVetoed(TreeView treeView, Path 
path, Vote reason) {
+    }
 
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewListener.java Wed Jan 24 
04:37:05 2018
@@ -18,14 +18,64 @@ package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.List;
 import org.apache.pivot.util.Filter;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Tree view listener interface.
  */
 public interface TreeViewListener {
     /**
+     * Tree view listener list.
+     */
+    public static class Listeners extends ListenerList<TreeViewListener> 
implements TreeViewListener {
+        @Override
+        public void treeDataChanged(TreeView treeView, List<?> 
previousTreeData) {
+            forEach(listener -> listener.treeDataChanged(treeView, 
previousTreeData));
+        }
+
+        @Override
+        public void nodeRendererChanged(TreeView treeView, 
TreeView.NodeRenderer previousNodeRenderer) {
+            forEach(listener -> listener.nodeRendererChanged(treeView, 
previousNodeRenderer));
+        }
+
+        @Override
+        public void nodeEditorChanged(TreeView treeView, TreeView.NodeEditor 
previousNodeEditor) {
+            forEach(listener -> listener.nodeEditorChanged(treeView, 
previousNodeEditor));
+        }
+
+        @Override
+        public void selectModeChanged(TreeView treeView, TreeView.SelectMode 
previousSelectMode) {
+            forEach(listener -> listener.selectModeChanged(treeView, 
previousSelectMode));
+        }
+
+        @Override
+        public void checkmarksEnabledChanged(TreeView treeView) {
+            forEach(listener -> listener.checkmarksEnabledChanged(treeView));
+        }
+
+        @Override
+        public void showMixedCheckmarkStateChanged(TreeView treeView) {
+            forEach(listener -> 
listener.showMixedCheckmarkStateChanged(treeView));
+        }
+
+        @Override
+        public void disabledNodeFilterChanged(TreeView treeView,
+            Filter<?> previousDisabledNodeFilter) {
+            forEach(listener -> listener.disabledNodeFilterChanged(treeView, 
previousDisabledNodeFilter));
+        }
+
+        @Override
+        public void disabledCheckmarkFilterChanged(TreeView treeView,
+            Filter<?> previousDisabledCheckmarkFilter) {
+            forEach(listener -> 
listener.disabledCheckmarkFilterChanged(treeView, 
previousDisabledCheckmarkFilter));
+        }
+    }
+
+    /**
      * Tree view listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TreeViewListener {
         @Override
         public void treeDataChanged(TreeView treeView, List<?> 
previousTreeData) {
@@ -77,7 +127,8 @@ public interface TreeViewListener {
      * @param treeView         The source of this event.
      * @param previousTreeData The previous data for this tree.
      */
-    public void treeDataChanged(TreeView treeView, List<?> previousTreeData);
+    default public void treeDataChanged(TreeView treeView, List<?> 
previousTreeData) {
+    }
 
     /**
      * Called when a tree view's node renderer has changed.
@@ -85,7 +136,8 @@ public interface TreeViewListener {
      * @param treeView             The source of this event.
      * @param previousNodeRenderer The previous renderer for tree nodes.
      */
-    public void nodeRendererChanged(TreeView treeView, TreeView.NodeRenderer 
previousNodeRenderer);
+    default public void nodeRendererChanged(TreeView treeView, 
TreeView.NodeRenderer previousNodeRenderer) {
+    }
 
     /**
      * Called when a tree view's node editor has changed.
@@ -93,7 +145,8 @@ public interface TreeViewListener {
      * @param treeView           The source of this event.
      * @param previousNodeEditor The previous editor for tree nodes.
      */
-    public void nodeEditorChanged(TreeView treeView, TreeView.NodeEditor 
previousNodeEditor);
+    default public void nodeEditorChanged(TreeView treeView, 
TreeView.NodeEditor previousNodeEditor) {
+    }
 
     /**
      * Called when a tree view's select mode has changed.
@@ -101,21 +154,24 @@ public interface TreeViewListener {
      * @param treeView           The source of this event.
      * @param previousSelectMode What the tree view's select mode was before 
the change.
      */
-    public void selectModeChanged(TreeView treeView, TreeView.SelectMode 
previousSelectMode);
+    default public void selectModeChanged(TreeView treeView, 
TreeView.SelectMode previousSelectMode) {
+    }
 
     /**
      * Called when a tree view's checkmarks enabled flag has changed.
      *
      * @param treeView The source of this event.
      */
-    public void checkmarksEnabledChanged(TreeView treeView);
+    default public void checkmarksEnabledChanged(TreeView treeView) {
+    }
 
     /**
      * Called when a tree view's "show mixed checkmark state" flag has changed.
      *
      * @param treeView The tree view that has changed.
      */
-    public void showMixedCheckmarkStateChanged(TreeView treeView);
+    default public void showMixedCheckmarkStateChanged(TreeView treeView) {
+    }
 
     /**
      * Called when a tree view's disabled node filter has changed.
@@ -123,7 +179,8 @@ public interface TreeViewListener {
      * @param treeView                   The tree view that has changed.
      * @param previousDisabledNodeFilter The previous filter that determines 
the disabled nodes.
      */
-    public void disabledNodeFilterChanged(TreeView treeView, Filter<?> 
previousDisabledNodeFilter);
+    default public void disabledNodeFilterChanged(TreeView treeView, Filter<?> 
previousDisabledNodeFilter) {
+    }
 
     /**
      * Called when a tree view's disabled checkmark filter has changed.
@@ -131,6 +188,7 @@ public interface TreeViewListener {
      * @param treeView                        The source of this event.
      * @param previousDisabledCheckmarkFilter The previous filter that 
determined the disabled checkmarks.
      */
-    public void disabledCheckmarkFilterChanged(TreeView treeView,
-        Filter<?> previousDisabledCheckmarkFilter);
+    default public void disabledCheckmarkFilterChanged(TreeView treeView,
+        Filter<?> previousDisabledCheckmarkFilter) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeListener.java Wed Jan 
24 04:37:05 2018
@@ -17,14 +17,48 @@
 package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence.Tree.Path;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Tree view node listener interface.
  */
 public interface TreeViewNodeListener {
     /**
+     * Tree view node listener list.
+     */
+    public static class Listeners extends ListenerList<TreeViewNodeListener>
+        implements TreeViewNodeListener {
+        @Override
+        public void nodeInserted(TreeView treeView, Path path, int index) {
+            forEach(listener -> listener.nodeInserted(treeView, path, index));
+        }
+
+        @Override
+        public void nodesRemoved(TreeView treeView, Path path, int index, int 
count) {
+            forEach(listener -> listener.nodesRemoved(treeView, path, index, 
count));
+        }
+
+        @Override
+        public void nodeUpdated(TreeView treeView, Path path, int index) {
+            forEach(listener -> listener.nodeUpdated(treeView, path, index));
+        }
+
+        @Override
+        public void nodesCleared(TreeView treeView, Path path) {
+            forEach(listener -> listener.nodesCleared(treeView, path));
+        }
+
+        @Override
+        public void nodesSorted(TreeView treeView, Path path) {
+            forEach(listener -> listener.nodesSorted(treeView, path));
+        }
+    }
+
+    /**
      * Tree view node listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TreeViewNodeListener {
         @Override
         public void nodeInserted(TreeView treeView, Path path, int index) {
@@ -59,7 +93,8 @@ public interface TreeViewNodeListener {
      * @param path     The path to the branch where the node was inserted.
      * @param index    The index of the newly inserted node within the branch.
      */
-    public void nodeInserted(TreeView treeView, Path path, int index);
+    default public void nodeInserted(TreeView treeView, Path path, int index) {
+    }
 
     /**
      * Called when nodes have been removed from the tree view.
@@ -70,7 +105,8 @@ public interface TreeViewNodeListener {
      * @param count    The number of nodes that were removed, or <tt>-1</tt> 
if all
      * nodes were removed.
      */
-    public void nodesRemoved(TreeView treeView, Path path, int index, int 
count);
+    default public void nodesRemoved(TreeView treeView, Path path, int index, 
int count) {
+    }
 
     /**
      * Called when a node in the tree view has been updated.
@@ -79,7 +115,8 @@ public interface TreeViewNodeListener {
      * @param path     Path to the branch that is the parent of the updated 
node.
      * @param index    Index of the updated node within the branch.
      */
-    public void nodeUpdated(TreeView treeView, Path path, int index);
+    default public void nodeUpdated(TreeView treeView, Path path, int index) {
+    }
 
     /**
      * Called when the nodes in a branch have been cleared.
@@ -87,7 +124,8 @@ public interface TreeViewNodeListener {
      * @param treeView The source of this event.
      * @param path     Path to the branch where the nodes were cleared.
      */
-    public void nodesCleared(TreeView treeView, Path path);
+    default public void nodesCleared(TreeView treeView, Path path) {
+    }
 
     /**
      * Called when the nodes in a branch have been sorted.
@@ -95,5 +133,6 @@ public interface TreeViewNodeListener {
      * @param treeView The source of this event.
      * @param path     Path to the branch where the nodes were sorted.
      */
-    public void nodesSorted(TreeView treeView, Path path);
+    default public void nodesSorted(TreeView treeView, Path path) {
+    }
 }

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeStateListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeStateListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeStateListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewNodeStateListener.java Wed 
Jan 24 04:37:05 2018
@@ -17,12 +17,25 @@
 package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence.Tree.Path;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Tree view node state listener interface.
  */
 public interface TreeViewNodeStateListener {
     /**
+     * Tree view node state listener list.
+     */
+    public static class Listeners extends 
ListenerList<TreeViewNodeStateListener>
+        implements TreeViewNodeStateListener {
+        @Override
+        public void nodeCheckStateChanged(TreeView treeView, Path path,
+            TreeView.NodeCheckState previousCheckState) {
+            forEach(listener -> listener.nodeCheckStateChanged(treeView, path, 
previousCheckState));
+        }
+    }
+
+    /**
      * Called when a node's checked state has changed.
      *
      * @param treeView           The source of this event.

Modified: 
pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewSelectionListener.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewSelectionListener.java?rev=1822073&r1=1822072&r2=1822073&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewSelectionListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TreeViewSelectionListener.java Wed 
Jan 24 04:37:05 2018
@@ -18,14 +18,43 @@ package org.apache.pivot.wtk;
 
 import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.collections.Sequence.Tree.Path;
+import org.apache.pivot.util.ListenerList;
 
 /**
  * Tree view selection listener.
  */
 public interface TreeViewSelectionListener {
     /**
+     * Tree view selection listener list.
+     */
+    public static class Listeners extends 
ListenerList<TreeViewSelectionListener>
+        implements TreeViewSelectionListener {
+        @Override
+        public void selectedPathAdded(TreeView treeView, Path path) {
+            forEach(listener -> listener.selectedPathAdded(treeView, path));
+        }
+
+        @Override
+        public void selectedPathRemoved(TreeView treeView, Path path) {
+            forEach(listener -> listener.selectedPathRemoved(treeView, path));
+        }
+
+        @Override
+        public void selectedPathsChanged(TreeView treeView, Sequence<Path> 
previousSelectedPaths) {
+            forEach(listener -> listener.selectedPathsChanged(treeView, 
previousSelectedPaths));
+        }
+
+        @Override
+        public void selectedNodeChanged(TreeView treeView, Object 
previousSelectedNode) {
+            forEach(listener -> listener.selectedNodeChanged(treeView, 
previousSelectedNode));
+        }
+    }
+
+    /**
      * Tree view selection listener adapter.
+     * @deprecated Since 2.1 and Java 8 the interface itself has default 
implementations.
      */
+    @Deprecated
     public static class Adapter implements TreeViewSelectionListener {
         @Override
         public void selectedPathAdded(TreeView treeView, Path path) {
@@ -54,7 +83,8 @@ public interface TreeViewSelectionListen
      * @param treeView The source of this event.
      * @param path     The path that has been added to the selection.
      */
-    public void selectedPathAdded(TreeView treeView, Path path);
+    default public void selectedPathAdded(TreeView treeView, Path path) {
+    }
 
     /**
      * Called when a selected path has been removed from a tree view.
@@ -62,7 +92,8 @@ public interface TreeViewSelectionListen
      * @param treeView The source of this event.
      * @param path     The path that was removed from the selection.
      */
-    public void selectedPathRemoved(TreeView treeView, Path path);
+    default public void selectedPathRemoved(TreeView treeView, Path path) {
+    }
 
     /**
      * Called when a tree view's selection state has been reset.
@@ -70,7 +101,8 @@ public interface TreeViewSelectionListen
      * @param treeView              The source of this event.
      * @param previousSelectedPaths The list of paths that were previously 
selected.
      */
-    public void selectedPathsChanged(TreeView treeView, Sequence<Path> 
previousSelectedPaths);
+    default public void selectedPathsChanged(TreeView treeView, Sequence<Path> 
previousSelectedPaths) {
+    }
 
     /**
      * Called when a tree view's selected node has changed.
@@ -78,5 +110,6 @@ public interface TreeViewSelectionListen
      * @param treeView             The source of this event.
      * @param previousSelectedNode The node that used to be selected.
      */
-    public void selectedNodeChanged(TreeView treeView, Object 
previousSelectedNode);
+    default public void selectedNodeChanged(TreeView treeView, Object 
previousSelectedNode) {
+    }
 }


Reply via email to