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