Alex Grönholm avatar Alex Grönholm committed 0f60419

Added a shortcut for ListDataListener

Comments (0)

Files changed (1)

swingutils/events.py

         self.removeMethod(*self.removeMethodArgs)
 
 
+class MultiListenerWrapper(object):
+    def __init__(self, *listeners):
+        self.listeners = listeners
+
+    def unlisten(self):
+        for listener in self.listeners:
+            listener.unlisten()
+
+
 def addEventListener(target, eventInterface, event, listener,
                              *args, **kwargs):
     """
                             listener, *args, **kwargs)
 
 
+def addListDataListener(target, listener, *args, **kwargs):
+    """
+    Shortcut for adding event listeners for all list data events (change,
+    add, remove). The unlisten() method in the return value will unlisten
+    all three listeners.
+    """
+    from javax.swing.event import ListDataListener
+    listener1 = addEventListener(target, ListDataListener, 'contentsChanged',
+                                 listener, *args, **kwargs)
+    listener2 = addEventListener(target, ListDataListener, 'intervalAdded',
+                                 listener, *args, **kwargs)
+    listener3 = addEventListener(target, ListDataListener, 'intervalRemoved',
+                                 listener, *args, **kwargs)
+    return MultiListenerWrapper(listener1, listener2, listener3)
+
+
 def addTreeSelectionListener(target, listener, *args, **kwargs):
     """
     Shortcut for addEventListener(target, TreeSelectionListener,
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.