""" Hello world application with Jython and JFace Part II - Event listeners and layouts GUID of this code snippet: 53029f4d-a208-4f45-920c-07d81167daee Author: Darius Kucinskas (c) 2008-2009 Email: d[dot]kucinskas[eta]gmail[dot]com Blog: http://blog-of-darius.blogspot.com/ License: GPL """ from org.eclipse.swt import * from org.eclipse.swt.SWT import * from org.eclipse.swt.widgets import * from org.eclipse.swt.layout import * from org.eclipse.jface.window import * class MyListener(Listener): """ Class for event listener """ def __init__(self, app): self.app = app def handleEvent(self, event): """ Close application if button is pressed """ self.app.close() class SWTApp(ApplicationWindow): """ Your second JFace application in jython """ def __init__(self, shell): """ application constructor """ ApplicationWindow.__init__(self, shell) def dispose(self): """ dispose resources here """ pass def createContents(self, parent): """ Creates the main window's contents parent - the main window return - control """ self.getShell().text = 'Second Jython & JFace App' panel = Composite(parent, SWT.BORDER) panel.setLayout(GridLayout(1, True)) """ set layout as one column grid """ label = Label(panel, SWT.CENTER) label.text = 'Hello, World' label.setLayoutData(GridData(SWT.CENTER, SWT.CENTER, False, False, 1, 1)) button = Button(panel, SWT.PUSH) button.text = 'Close' button.setLayoutData(GridData(SWT.CENTER, SWT.CENTER, False, False, 1, 1)) button.addListener(SWT.Selection, MyListener(self)) """ set listener which will react on event (button pressing) """ return panel if __name__ == "__main__": """ The application entry point """ display = Display() shell = Shell(display) app = SWTApp(shell) try: app.setBlockOnOpen(True) app.open() finally: if app != None: app.dispose() display.dispose()Execute your program: Now execute your application. There it is, your second Jython and JFace application.
Saturday, May 16, 2009
Rapid application development with Jython and JFace (part II – event listener and layout)
In first part of this series I showed how to create hello world application with Jython and JFace. Now we will add event listers and layouts. What application is good for if it is not reacting to user input? Events Listeners are special kind of classes and you will derive your class from it in order to be able to react to user actions. So we created MyListener listener. We pass reference to application object to constructor (so we could do many interesting things with it later then event happened). We yest close application on event in MyListener handleEvent method. We connected button 'Close' with MyListener. Event will be fired then user will press this button. Layouts Layouts are used to organize widgets on the screen in desired order. This time we put all widgets in grid which is one column width and two rows in height. Code: