class GUI(): def __init__(self): self.frame = JFrame('Phone status twitter') self.frame.defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE self.asteriskLoginPanel = gui.AsteriskLoginPanel(buttonAction=self.loginToAsterisk) self.asteriskLoginPanel.render() self.frame.add(self.asteriskLoginPanel) self.asteriskLoginPanel.getRootPane().setDefaultButton(self.asteriskLoginPanel.login) self.frame.pack() self.frame.visible = True def renderTwitterLoginPanel(self): '''Render on the frame the login panel with the fields needed to authenticate with the Twitter API.''' self.twitterLoginPanel = JPanel(GridLayout(0,2)) self.frame.add(self.twitterLoginPanel) self.twitterLoginPanel.setBorder(BorderFactory.createTitledBorder('Twitter account information')) self.twitterLoginField = extragui.EnhancedTextField('asterisk-jython', 15) self.twitterLoginPanel.add(JLabel('Username:'******'password', 15) self.twitterLoginPanel.add(JLabel('Password:'******'Log in', actionPerformed=self.loginToTwitter) self.twitterLoginPanel.add(self.twitterLoginButton) self.twitterLoginPanel.getRootPane().setDefaultButton(self.twitterLoginButton) self.twitterLoginStatusLabel = JLabel('Awaiting information...') self.twitterLoginPanel.add(self.twitterLoginStatusLabel) def renderMainPanel(self): '''Render on the frame the main panel with a status label''' self.mainPanel = JPanel(GridLayout(0,2)) self.frame.add(self.mainPanel) self.mainPanel.setBorder(BorderFactory.createTitledBorder('Application status')) self.mainPanel.add(JLabel('Status:')) self.statusLabel = JTextField('Running...', 15) self.statusLabel.editable = False self.mainPanel.add(self.statusLabel) def loginToAsterisk(self, event): '''Execute the login procedure to the Asterisk Manager interface''' self.manager = PhoneStatusListener(self.asteriskLoginPanel.hostname.text, \ self.asteriskLoginPanel.username.text, \ self.asteriskLoginPanel.password.text, \ self.asteriskLoginPanel.extension.text) try: self.manager.addStatusUpdater(self.statusUpdater) self.manager.start() self.asteriskLoginPanel.visible = False self.renderTwitterLoginPanel() self.twitterLoginField.requestFocusInWindow() self.frame.pack() except: self.asteriskLoginPanel.status.text = "Unable to authenticate" def loginToTwitter(self, event): '''Execute the login procedure to the Twitter platform''' try: self.twitter = twitter.Api(username=self.twitterLoginField.text, \ password=self.twitterPasswordField.text) self.twitter.GetUser(self.twitterLoginField.text) self.twitterLoginPanel.visible = False self.renderMainPanel() self.frame.pack() except: self.twitterLoginStatusLabel.text = "Unable to authenticate" def statusUpdater(self, update): self.statusLabel.text = update self.twitter.PostUpdate(update)