from java.awt import *
from java.awt.event import *
from javax.swing import *
class ExtendedListSelector(MouseListener, MouseMotionListener):
'''
Helper class for extended list selections.
Click + drag to select range of entries.
Ctrl + click + drag for non-contiguous ranges.
'''
def __init__(self, list):
self.list = list
self.selstartindex = -1
def mouseClicked(self, evt):
pass
def mouseEntered(self, evt):
pass
def mouseExited(self, evt):
pass
def mousePressed(self, evt):
self.selstartindex = self.list.locationToIndex(evt.point)
def mouseReleased(self, evt):
self.selstartindex = -1
def mouseDragged(self, evt):
i = self.list.locationToIndex(evt.point)
self.list.addSelectionInterval(self.selstartindex, i)
def mouseMoved(self, evt):
pass
class ListTest(JFrame):
def __init__(self):
rows = \
['apple', 'battle', 'cattle', 'dawdle', 'easel', 'fizzle']
list = JList(rows)
list.selectionMode = \
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
listselector = ExtendedListSelector(list)
list.addMouseListener(listselector)
list.addMouseMotionListener(listselector)
s = JScrollPane(list)
self.contentPane.add(s)
self.size = 200, 300
if __name__ == '__main__':
lt = ListTest()
lt.visible = 1
lt=ListTest()
lt.setVisible(1)
# jHepWork @S.Chekanov