[Anygui-checkins] CVS: anygui/lib/anygui/backends javagui.py,1.49,1.50
Brought to you by:
mlh
From: Magnus L. H. <ml...@us...> - 2002-08-13 18:50:16
|
Update of /cvsroot/anygui/anygui/lib/anygui/backends In directory usw-pr-cvs1:/tmp/cvs-serv9458/lib/anygui/backends Modified Files: javagui.py Log Message: Checked in a semi-functional ListBoxWrapper. I don't think the wrapper itself is that flawed -- but int uncovered some strange behaviour in javagui itself. For some reason, in enterMainLoop, the ListBoxWrapper's parent is a dummy, something which is not true for LabelWrapper. Index: javagui.py =================================================================== RCS file: /cvsroot/anygui/anygui/lib/anygui/backends/javagui.py,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -r1.49 -r1.50 *** javagui.py 22 Jul 2002 03:08:48 -0000 1.49 --- javagui.py 13 Aug 2002 18:50:13 -0000 1.50 *************** *** 5,10 **** Application - WindowWrapper LabelWrapper '''.split() --- 5,11 ---- Application LabelWrapper + ListBoxWrapper + WindowWrapper '''.split() *************** *** 65,68 **** --- 66,73 ---- # @@@ Cookie-cutter from tkgui def enterMainLoop(self): + #FIXME: For LabelWrappers, the following is false, but for ListBoxWrappers, it + #is true, something which makes ListBoxWrappers sort of ... not work. :P + #[mlh20020813] + #assert isDummy(self.proxy.state['container'].wrapper.widget) self.proxy.push() *************** *** 152,157 **** else: return "" # @@@ What would be the best behaviour here? Should there be an exception? - - # @@@ -------------------- Continue here -------------------- ################################################################ --- 157,160 ---- *************** *** 164,167 **** --- 167,236 ---- widget.verticalAlignment = swing.SwingConstants.TOP # @@@ Should be settable from Proxy return widget + + + ################################################################ + + class JScrollableListBox(swing.JPanel): + # Replacement for swing.JList + + def __init__(self): + self._jlist = swing.JList() + self.layout = awt.BorderLayout() + self._jscrollpane = swing.JScrollPane(self._jlist) + self.add(self._jscrollpane, awt.BorderLayout.CENTER) + + def getModel(self): + return self._jlist.model + + def setSelectionMode(self, mode): + self._jlist.selectionMode = mode + + def getSelectedIndex(self): + return self._jlist.selectedIndex + + def setSelectedIndex(self, index): + self._jlist.selectedIndex = index + + def setListData(self, items): + self._jlist.setListData(items) + + def setMouseReleased(self, callback): + self._jlist.mouseReleased = callback + + + class ListBoxWrapper(ComponentWrapper): + + def widgetFactory(self, *args, **kwds): + widget = JScrollableListBox() + widget.setSelectionMode(swing.ListSelectionModel.SINGLE_SELECTION) + return widget + + def setSelection(self, selection): + self.widget.setSelectedIndex(selection) + + def getSelection(self): + if isDummy(self.widget): return 0 + return self.widget.getSelectedIndex() + + def setItems(self, items): + temp = java.util.Vector() + for item in items: + temp.addElement(str(item)) + self.widget.setListData(items) + + def widgetSetUp(self): + # Won't work because it (1) reacts to programmatic + # changes, and (2) reacts to both mouse-down and + # mouse-up events: + # self._java_comp.valueChanged = self._java_clicked + + # mlh20011217: Wouldn't it be OK to generate events + # on programmatic changes? + + # This works, however: + self.widget.setMouseReleased(self.clickHandler) + + def clickHandler(self, event): + send(self, 'select') ################################################################ |