## page was renamed from JyhtonNutpad #format wiki #language en #pragma section-numbers off = Swing Sampler = SwingExamples <<TableOfContents>> ---- From: Jeff Emanuel <jemanuel <at> frii.com><<BR>> Subject: Re: Tranlating a simple Java editor into Jython<<BR>> Newsgroups: gmane.comp.lang.jython.user<<BR>> Date: 2007-03-24 19:07:37 GMT<<BR>> <<BR>> Anton Vredegoor wrote:<<BR>> <<BR>> > Hello All,<<BR>> > <<BR>> > I'm an experienced Python programmer with only a very basic <<BR>> > understanding of Java. I'm currently trying to translate this very<<BR>> > simple Java editor into Jython.<<BR>> > Any hints or complete or partial translations of <<BR>> > the code are very welcome.<<BR>> > http://leepoint.net/notes-java/examples/components/editor/nutpad.html[[BR]] > <<BR>> Here''s a quick translation. For the Java inner classes,<<BR>> translate them to top level classes that take the outer instance<<BR>> as a constructor argument. Java inner classes have an implicit<<BR>> pointer to the enclosing class instance. You must make that<<BR>> explicit.<<BR>> <<BR>> {{{#!python from java.awt import * from java.awt.event import * from javax.swing import * from java.io import * from java.lang import System,Integer #/////////////////////////////////////////////////////////////////////// NutPad class NutPad(JFrame): #... Components _editArea=None _fileChooser = JFileChooser() #============================================================== constructor def __init__(self): #... Create actions for menu items, buttons, ... self._openAction = OpenAction(self) self._saveAction = SaveAction(self) self._exitAction = ExitAction(self) #... Create scrollable text area. self._editArea = JTextArea(15, 80) self._editArea.border=BorderFactory.createEmptyBorder(2,2,2,2) self._editArea.font=Font("monospaced", Font.PLAIN, 14) scrollingText = JScrollPane(self._editArea) #-- Create a content pane, set layout, add component. content = JPanel() content.setLayout(BorderLayout()) content.add(scrollingText, BorderLayout.CENTER); #... Create menubar menuBar = JMenuBar() fileMenu = menuBar.add(JMenu("File")) fileMenu.setMnemonic('F') fileMenu.add(self._openAction) # Note use of actions, not text. fileMenu.add(self._saveAction) fileMenu.addSeparator() fileMenu.add(self._exitAction) #... Set window content and menu. self.setContentPane(content) self.setJMenuBar(menuBar) #... Set other window characteristics. self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) self.setTitle("NutPad") self.pack() self.setLocationRelativeTo(None) self.visible=1 #//////////////////////////////////////////////// inner class OpenAction class OpenAction(AbstractAction): #============================================= constructor def __init__(self,outer): # outer instance. AbstractAction.__init__(self,"Open...") self.outer=outer self.putValue(AbstractAction.MNEMONIC_KEY, Integer(ord('O'))) #========================================= actionPerformed def actionPerformed(self, e): retval = self.outer._fileChooser.showOpenDialog(self.outer) if retval==JFileChooser.APPROVE_OPTION: f = self.outer._fileChooser.getSelectedFile() try: reader = FileReader(f) self.outer._editArea.read(reader, "") # Use TextComponent read except IOException,ioex: System.out.println(e); System.exit(1); #////////////////////////////////////////////////// inner class SaveAction class SaveAction(AbstractAction): #============================================= constructor def __init__(self,outer): AbstractAction.__init__(self,"Save...") self.outer=outer self.putValue(AbstractAction.MNEMONIC_KEY, Integer(ord('S'))) #========================================= actionPerformed def actionPerformed(self, e): retval = self.outer._fileChooser.showSaveDialog(self.outer) if retval == JFileChooser.APPROVE_OPTION: f = self.outer._fileChooser.getSelectedFile() try: writer = FileWriter(f) self.outer._editArea.write(writer) # TextComponent write except IOException,ioex: JOptionPane.showMessageDialog(self.outer, ioex) System.exit(1) #/////////////////////////////////////////////////// inner class ExitAction class ExitAction(AbstractAction): #============================================= constructor def __init__(self,outer): AbstractAction.__init__(self,"Exit") self.outer=outer self.putValue(AbstractAction.MNEMONIC_KEY, Integer(ord('X'))) #========================================= actionPerformed def actionPerformed(self, e): System.exit(0); #===================================================================== main if __name__=="__main__": NutPad() }}}