def actionPerformed(self, e):
        bugs_tab = self.tabbed_panes[self.key].getComponentAt(1)
        tab_count = str(bugs_tab.getTabCount())

        request_tab = self.view.set_request_tab_pane(self.request_response)
        response_tab = self.view.set_response_tab_pane(self.request_response)
        bugs_tabbed_pane = self.view.set_bugs_tabbed_pane(request_tab, response_tab)

        bugs_tab.add(tab_count, bugs_tabbed_pane)
        index = bugs_tab.indexOfTab(tab_count)
        panel_tab = JPanel(GridBagLayout())
        panel_tab.setOpaque(False)
        label_title = JLabel(tab_count)

        # Create a button to close tab
        button_close = JButton("x")
        button_close.setToolTipText("Close tab")
        button_close.setOpaque(False);
        button_close.setContentAreaFilled(False);
        button_close.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0))
        button_close.setPreferredSize(Dimension(18, 18))
        button_close.setMargin(Insets(0, 0, 0, 0))
        button_close.setForeground(Color.gray)

        panel_tab.add(label_title)
        panel_tab.add(button_close)

        bugs_tab.setTabComponentAt(index, panel_tab)

        button_close.addMouseListener(CloseTab(button_close, bugs_tab))
Beispiel #2
0
    def __init__(self,
                 kconfig_file="Kconfig",
                 config_file=".config",
                 systemLogger=None):
        """[summary]

        Parameters
        ----------
            kconfig_file : string (default: "Kconfig")
                The Kconfig configuration file
            config_file : string (default: ".config")
                The save file which will be used for loading and saving the settings
            systemLogger (default: None)
                A system logger object. If None then print statements are used for logging.
        """
        global log
        if systemLogger:
            log = systemLogger

        # Load Kconfig configuration files
        self.kconfig = Kconfig(kconfig_file)
        setKConfig(self.kconfig)

        if os.path.isfile(config_file):
            log.info(self.kconfig.load_config(config_file))
        elif os.path.isfile(".config"):
            log.info(self.kconfig.load_config(".config"))

        self.tree = KConfigTree(self.kconfig)
        self.tree.addTreeSelectionListener(self.treeSelectionChanged)
        jTreeSP = JScrollPane(self.tree)

        self.jta = JTextArea()
        self.jta.setEditable(False)
        jTextSP = JScrollPane(self.jta)

        toolPanel = JPanel()
        toolPanel.setLayout(BoxLayout(toolPanel, BoxLayout.X_AXIS))
        toolPanel.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0))

        toolPanel.add(JLabel("Search: "))

        jSearchPanel = JPanel()
        jSearchPanel.setLayout(BoxLayout(jSearchPanel, BoxLayout.X_AXIS))
        self.jSearchField = JTextField()
        jSearchPanel.setBackground(self.jSearchField.getBackground())
        jSearchPanel.setBorder(self.jSearchField.getBorder())
        self.jSearchField.setBorder(None)
        self.jSearchField.getDocument().addDocumentListener(
            SearchListener(self.tree))
        jSearchPanel.add(self.jSearchField)

        clearSearchButton = JButton(u'\u00d7',
                                    actionPerformed=self.clearSearch)
        d = clearSearchButton.getPreferredSize()
        clearSearchButton.setPreferredSize(Dimension(d.height, d.height))
        clearSearchButton.setBackground(self.jSearchField.getBackground())
        clearSearchButton.setBorder(None)
        clearSearchButton.setOpaque(False)
        clearSearchButton.setContentAreaFilled(False)
        clearSearchButton.setFocusPainted(False)
        jSearchPanel.add(clearSearchButton)

        toolPanel.add(jSearchPanel)

        self.showAllCheckBox = JCheckBox("Show all",
                                         actionPerformed=self.OnShowAllCheck)
        toolPanel.add(self.showAllCheckBox)

        splitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, jTreeSP, jTextSP)
        splitPane.setOneTouchExpandable(True)
        splitPane.setDividerLocation(300)

        treePanel = JPanel(BorderLayout())
        treePanel.add(toolPanel, BorderLayout.NORTH)
        treePanel.add(splitPane, BorderLayout.CENTER)

        loadSavePanel = JPanel()
        loadSavePanel.setLayout(BoxLayout(loadSavePanel, BoxLayout.X_AXIS))
        loadSavePanel.add(
            JButton("Load", actionPerformed=self.loadConfigDialog))
        loadSavePanel.add(
            JButton("Save as", actionPerformed=self.writeConfigDialog))

        self.rootPanel = JPanel()
        self.rootPanel.setLayout(BorderLayout())
        self.rootPanel.add(loadSavePanel, BorderLayout.PAGE_START)
        self.rootPanel.add(treePanel, BorderLayout.CENTER)
Beispiel #3
0
class JTabPanel(JSplitPane, ActionListener, FocusListener):
    def __init__(self, ui):
        JSplitPane.__init__(self, JSplitPane.HORIZONTAL_SPLIT)
        self._ui = ui

        # create the executor object
        self._executor = Executor(self, ui.callbacks)

        ####
        # start Left Top split layout
        jLeftTopPanel = JPanel()
        jMenuPanel = JPanel()

        #Load button
        self.jLoad = JButton(Strings.jLoad_text)
        self.jLoad.addActionListener(self)
        #File name text field
        self.jFileName = JTextField(Strings.jFileName_default, 30)
        self.jFileName.setHorizontalAlignment(JTextField.CENTER)
        self.jFileName.setEditable(False)
        #Save button
        self.jSave = JButton(Strings.jSave_text)
        self.jSave.addActionListener(self)
        #Exit button
        self.jExit = JButton(Strings.jExit_text)
        self.jExit.addActionListener(self)
        #Wiki button (URL)
        self.jWiki = JButton(Strings.jWiki_title)
        self.jWiki.setToolTipText(Strings.jWiki_tooltip)
        self.jWiki.addActionListener(self)
        # make it borderless
        self.jWiki.setBorder(EmptyBorder(0, 0, 0, 0))
        self.jWiki.setBorderPainted(False)
        self.jWiki.setContentAreaFilled(False)

        #Console text area
        jConsoleText = JTextArea()
        jConsoleText.setEditable(0)
        jConsoleText.setWrapStyleWord(1)
        jConsoleText.setRows(10)
        #set initial text
        jConsoleText.setText(Strings.jConsoleText_help)
        #make scrollable
        jScrollConsolePane = JScrollPane()
        jScrollConsolePane.setViewportView(jConsoleText)

        jMenuPanelLayout = GroupLayout(jMenuPanel)
        jMenuPanel.setLayout(jMenuPanelLayout)
        jMenuPanelLayout.setHorizontalGroup(
            jMenuPanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).
            addGroup(jMenuPanelLayout.createSequentialGroup().addContainerGap(
            ).addComponent(self.jLoad).addComponent(
                self.jFileName).addPreferredGap(
                    LayoutStyle.ComponentPlacement.RELATED).addComponent(
                        self.jSave).addPreferredGap(
                            LayoutStyle.ComponentPlacement.RELATED).
                     addComponent(self.jWiki).addPreferredGap(
                         LayoutStyle.ComponentPlacement.RELATED).addComponent(
                             self.jExit).addContainerGap()))
        jMenuPanelLayout.setVerticalGroup(
            jMenuPanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addGroup(
                    jMenuPanelLayout.createSequentialGroup().addGroup(
                        jMenuPanelLayout.createParallelGroup(
                            GroupLayout.Alignment.BASELINE).addComponent(
                                self.jLoad).addComponent(
                                    self.jFileName, GroupLayout.PREFERRED_SIZE,
                                    GroupLayout.DEFAULT_SIZE,
                                    GroupLayout.PREFERRED_SIZE).addComponent(
                                        self.jSave).addComponent(
                                            self.jWiki).addComponent(
                                                self.jExit))))

        jLeftTopPanelLayout = GroupLayout(jLeftTopPanel)
        jLeftTopPanel.setLayout(jLeftTopPanelLayout)
        jLeftTopPanelLayout.setHorizontalGroup(
            jLeftTopPanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addComponent(
                    jMenuPanel, GroupLayout.DEFAULT_SIZE,
                    GroupLayout.DEFAULT_SIZE,
                    GroupLayout.DEFAULT_SIZE).addComponent(
                        jScrollConsolePane, GroupLayout.DEFAULT_SIZE,
                        GroupLayout.DEFAULT_SIZE, 32767))
        jLeftTopPanelLayout.setVerticalGroup(
            jLeftTopPanelLayout.
            createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
                GroupLayout.Alignment.TRAILING,
                jLeftTopPanelLayout.createSequentialGroup().addComponent(
                    jMenuPanel, GroupLayout.PREFERRED_SIZE,
                    GroupLayout.DEFAULT_SIZE,
                    GroupLayout.PREFERRED_SIZE).addPreferredGap(
                        LayoutStyle.ComponentPlacement.RELATED).addComponent(
                            jScrollConsolePane, GroupLayout.DEFAULT_SIZE,
                            GroupLayout.DEFAULT_SIZE, 32767)))
        # end Left Top split layout
        ####

        ####
        # start Left Down split layout
        jLeftDownPanel = JPanel()
        jMenu2Panel = JPanel()

        #Clear button
        self.jClear = JButton(Strings.jClear_text)
        self.jClear.setToolTipText(Strings.jClear_tooltip)
        self.jClear.addActionListener(self)

        #Run button
        self.jRun = JButton(Strings.jRun_text)
        self.jRun.setToolTipText(Strings.jRun_tooltip)
        self.jRun.addActionListener(self)

        #Variables text area
        jVarsPane = JTextPane()
        jVarsPane.setFont(Font('Monospaced', Font.PLAIN, 11))
        jVarsPane.addFocusListener(self)
        # set initial value
        jVarsPane.setText(Strings.jVarsPane_header)
        # make scrollable
        jScrollpaneLeftDown = JScrollPane()
        jScrollpaneLeftDown.setViewportView(jVarsPane)

        jMenu2PanelLayout = GroupLayout(jMenu2Panel)
        jMenu2Panel.setLayout(jMenu2PanelLayout)
        jMenu2PanelLayout.setHorizontalGroup(
            jMenu2PanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addGroup(
                    jMenu2PanelLayout.createSequentialGroup().addContainerGap(
                    ).addComponent(self.jClear).addPreferredGap(
                        LayoutStyle.ComponentPlacement.RELATED, 100,
                        32767).addComponent(self.jRun).addContainerGap()))
        jMenu2PanelLayout.setVerticalGroup(
            jMenu2PanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addGroup(
                    jMenu2PanelLayout.createSequentialGroup().addGroup(
                        jMenu2PanelLayout.createParallelGroup(
                            GroupLayout.Alignment.BASELINE).addComponent(
                                self.jClear).addComponent(self.jRun))))
        jLeftDownPanelLayout = GroupLayout(jLeftDownPanel)
        jLeftDownPanel.setLayout(jLeftDownPanelLayout)
        jLeftDownPanelLayout.setHorizontalGroup(
            jLeftDownPanelLayout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addComponent(
                    jMenu2Panel, GroupLayout.DEFAULT_SIZE,
                    GroupLayout.DEFAULT_SIZE,
                    GroupLayout.DEFAULT_SIZE).addComponent(
                        jScrollpaneLeftDown, GroupLayout.DEFAULT_SIZE,
                        GroupLayout.DEFAULT_SIZE, 32767))
        jLeftDownPanelLayout.setVerticalGroup(
            jLeftDownPanelLayout.
            createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
                GroupLayout.Alignment.TRAILING,
                jLeftDownPanelLayout.createSequentialGroup().addComponent(
                    jMenu2Panel, GroupLayout.PREFERRED_SIZE,
                    GroupLayout.DEFAULT_SIZE,
                    GroupLayout.PREFERRED_SIZE).addPreferredGap(
                        LayoutStyle.ComponentPlacement.RELATED).addComponent(
                            jScrollpaneLeftDown, GroupLayout.DEFAULT_SIZE,
                            GroupLayout.DEFAULT_SIZE, 32767)))
        # end Left Down split layout
        ####

        ####
        # start Left layout
        jSplitPaneLeft = JSplitPane(JSplitPane.VERTICAL_SPLIT, jLeftTopPanel,
                                    jLeftDownPanel)
        jSplitPaneLeft.setDividerLocation(300)
        # end Left layout
        ####

        ####
        # start Right layout
        jScriptPane = JTextPane()
        jScriptPane.setFont(Font('Monospaced', Font.PLAIN, 11))
        # set initial value
        jScriptPane.setText(Strings.jScriptPane_header)
        #jScriptPane.addMouseListener(self)

        jScrollPaneRight = JScrollPane()
        jScrollPaneRight.setViewportView(jScriptPane)
        # end Right layout
        ####

        self.setLeftComponent(jSplitPaneLeft)
        self.setRightComponent(jScrollPaneRight)
        self.setDividerLocation(450)

        #Exported variables
        self.jConsoleText = jConsoleText
        self.jScrollConsolePane = jScrollConsolePane
        self.jScriptPane = jScriptPane
        self.jVarsPane = jVarsPane

    def actionPerformed(self, event):
        #Load button was clicked
        #> opens the file chooser
        #> opens and parses the file
        #> populates the persistand value and script panes
        #> display path inside FileName field
        if self.jLoad == event.getSource():
            if self.jFileName.getText() == Strings.jFileName_default:
                jFileChooser = JFileChooser()
            else:
                jFileChooser = JFileChooser(self.jFileName.getText())
            result = jFileChooser.showOpenDialog(None)

            if result == JFileChooser.APPROVE_OPTION:
                selectedFile = jFileChooser.getSelectedFile()

                #Update the Tab Title if it contains a file name or default name
                currentTitle = self._ui.getTabName(self)
                currentFile = FileSystems.getDefault().getPath(
                    self.jFileName.getText()).getFileName().toString()

                if self.jFileName.getText(
                ) == Strings.jFileName_default or currentTitle == currentFile:
                    self._ui.setTabName(
                        self,
                        selectedFile.toPath().getFileName().toString())

                # read from file
                (vars, script) = FileUtils.read(selectedFile.toPath())

                if vars is None or script is None:
                    # content could not be parsed
                    JOptionPane.showMessageDialog(None,
                                                  Strings.FileUtils_error,
                                                  Strings.FileUtils_error,
                                                  JOptionPane.ERROR_MESSAGE)

                else:
                    # update var and scipt content
                    self.jVarsPane.setText(vars)
                    self.jScriptPane.setText(script)
                    self._executor.init(vars)

                    # update the File Name to the current choosen file
                    self.jFileName.setText(selectedFile.getAbsolutePath())

        #Save button clicked
        #> open the file chooser
        #> creates the file content
        #> writes the file on disk
        if self.jSave == event.getSource():
            if self.jFileName.getText() == Strings.jFileName_default:
                jFileChooser = JFileChooser()
            else:
                jFileChooser = JFileChooser(self.jFileName.getText())
            #self.jFileName.setText(selectedFile.getAbsolutePath())
            result = jFileChooser.showSaveDialog(None)
            if result == JFileChooser.APPROVE_OPTION:
                selectedFile = jFileChooser.getSelectedFile()
                self.jFileName.setText(selectedFile.getAbsolutePath())

                FileUtils.write(selectedFile.toPath(),
                                self.jVarsPane.getText(),
                                self.jScriptPane.getText())

        #Wiki button clicked
        if self.jWiki == event.getSource():
            uri = URI.create("https://github.com/DanNegrea/PyRules")
            if uri and Desktop.isDesktopSupported() and Desktop.getDesktop(
            ).isSupported(Desktop.Action.BROWSE):
                Desktop.getDesktop().browse(uri)

        #Exit button clicked
        if self.jExit == event.getSource():
            result = JOptionPane.showConfirmDialog(
                None, Strings.jExit_confim_question,
                Strings.jExit_confim_title, JOptionPane.YES_NO_OPTION)
            if result == 0:
                self._ui.deleteTab(self)

        #Clear button clicked
        if self.jClear == event.getSource():
            self.jConsoleText.setText("")
            self.log(self._executor.getVars(), "state")

        #Run once button clicked
        if self.jRun == event.getSource():
            if self.isRequestFocusEnabled():
                print "is RequestFocusEnabled"
            else:
                print "is NOT RequestFocusEnabled"
            if self.isFocusOwner():
                print "is FocusOwner"
            else:
                print "is NOT FocusOwner"
            # request to init the vars (if edited)
            self.initVars()
            # request execution with toolFlag set to 999 (Run once)
            self.execute(999)

    def focusGained(self, event):
        pass

    #Reinitialize the state variables (Vars)
    def focusLost(self, event):
        if self.jVarsPane == event.getSource():
            self.initVars()

    #Init the vars (persistant variables)
    def initVars(self):
        # get the text from the Vars pane
        end = self.jVarsPane.document.length
        varsText = self.jVarsPane.document.getText(0, end)
        # the executor initializes Vals if required
        self._executor.init(varsText)

    #Call the executor
    def execute(self, toolFlag, messageIsRequest=None, messageInfo=None):
        end = self.jScriptPane.document.length
        scriptText = self.jScriptPane.document.getText(0, end)
        self._executor.execute(scriptText, toolFlag, messageIsRequest,
                               messageInfo)

    #Log the information into the console screen
    # type can be:
    #	err   - when printing errors
    #	state - when printing the state variables (Vars)
    def log(self, obj, type=""):
        if type == "err":
            self.jConsoleText.append(Strings.jConsoleText_error)
        if type == "state":
            self.jConsoleText.append(Strings.jConsoleText_state)

        # if string just append. else use pformat from pprint
        if isinstance(obj, str):
            self.jConsoleText.append(obj + "\n")
        else:
            self.jConsoleText.append(pformat(obj) + "\n")
        # scroll to bottom
        verticalScrollBar = self.jScrollConsolePane.getVerticalScrollBar()
        verticalScrollBar.setValue(verticalScrollBar.getMaximum())
Beispiel #4
0
class ButtonPanel(Panel):
	
	playButton = None
	helpButton = None
	resetButton = None
	exitButton = None

	def __init__(self, inconsolePanel,dialogPanel):
		self.consolePanel = inconsolePanel
		self.dialogPanel = dialogPanel
		Panel.__init__(self, "gap 1px 1px, insets 0 0 0 0, flowy")

	def initUI(self):

		self.setBackground(Color(0, 50, 0))

		self.playButtonS = ImageIcon('bin/gui/media/' + "playButton.png")
		self.helpButtonS = ImageIcon('bin/gui/media/' + "helpButton.png")
		self.resetButtonS = ImageIcon('bin/gui/media/' + "resetButton.png")
		self.exitButtonS = ImageIcon('bin/gui/media/' + "exitButton.png")
		self.playButtonU = ImageIcon('bin/gui/media/' + "playButton_unselected.png")
		self.helpButtonU = ImageIcon('bin/gui/media/' + "helpButton_unselected.png")
		self.resetButtonU = ImageIcon('bin/gui/media/' + "resetButton_unselected.png")
		self.exitButtonU = ImageIcon('bin/gui/media/' + "exitButton_unselected.png")

		class MouseHoverAdap(MouseAdapter):
			def __init__(self, butt, entImage, leaImage):
				self.entImage = entImage
				self.leaImage = leaImage
				self.butt = butt
				self.butt.setIcon(self.leaImage)
			def mouseEntered(self, m):
				self.butt.setIcon(self.entImage)
				#self.butt.repaint()
			def mouseExited(self, m):
				self.butt.setIcon(self.leaImage)
				#self.butt.repaint()


		self.playButton = JButton(self.playButtonS)
		self.playButton.setForeground(Color(0, 245, 0))
		#self.playButton.setPreferredSize(Dimension(playButton.getIconWidth(), playButton.getIconHeight()))
		#self.playButton.setBackground(Color(125, 125, 25))
		self.playButton.setMaximumSize(Dimension(self.playButtonS.getIconWidth(), self.playButtonS.getIconHeight()))
		self.playButton.setContentAreaFilled(False)

		self.helpButton = JButton(self.helpButtonS)
		self.helpButton.setForeground(Color(0, 235, 0))
		self.helpButton.setMaximumSize(Dimension(self.helpButtonS.getIconWidth(), self.helpButtonS.getIconHeight()))
		self.helpButton.setContentAreaFilled(False)

		self.resetButton = JButton(self.resetButtonS)
		self.resetButton.setForeground(Color(0, 225, 0))
		self.resetButton.setMaximumSize(Dimension(self.resetButtonS.getIconWidth(), self.resetButtonS.getIconHeight()))
		self.resetButton.setContentAreaFilled(False)

		self.exitButton = JButton(self.exitButtonS)
		self.exitButton.setForeground(Color(0, 215, 0))
		self.exitButton.setContentAreaFilled(False)
		self.exitButton.setMaximumSize(Dimension(self.exitButtonS.getIconWidth(), self.exitButtonS.getIconHeight()))
		
		# self.playButton.addMouseListener(MouseHoverAdap(self.playButton, self.playButtonS, self.playButtonU))
		# self.helpButton.addMouseListener(MouseHoverAdap(self.helpButton, self.helpButtonS, self.helpButtonU))
		# self.resetButton.addMouseListener(MouseHoverAdap(self.resetButton, self.resetButtonS, self.resetButtonU))
		# self.exitButton.addMouseListener(MouseHoverAdap(self.exitButton, self.exitButtonS, self.exitButtonU))


		class PlayButtonActionListener(ActionListener):
			def actionPerformed(button, e):
				self.dialogPanel.speak(self.consolePanel.console.do_play(''))
		self.playButton.addActionListener(PlayButtonActionListener())

		class HelpBUttonActionListener(ActionListener):
			def actionPerformed(button, e):
				self.dialogPanel.speak(self.consolePanel.console.do_hint(''))
		self.helpButton.addActionListener(HelpBUttonActionListener())

		class ResetButtonActionListener(ActionListener):
			def actionPerformed(button, e):
				self.dialogPanel.speak(self.consolePanel.console.do_reset(''))
		self.resetButton.addActionListener(ResetButtonActionListener())

		class ExitButtonActionListener(ActionListener):
			def actionPerformed(button, e):
				System.exit(0)
		self.exitButton.addActionListener(ExitButtonActionListener())





	def addUI(self):
		self.add(self.playButton, "push, grow")
		self.add(self.helpButton, "push, grow")
		self.add(self.resetButton, "push, grow")
		self.add(self.exitButton, "push, grow")
Beispiel #5
0
class ButtonPanel(Panel):

    playButton = None
    helpButton = None
    resetButton = None
    exitButton = None

    def __init__(self, inconsolePanel, dialogPanel):
        self.consolePanel = inconsolePanel
        self.dialogPanel = dialogPanel
        Panel.__init__(self, "gap 1px 1px, insets 0 0 0 0, flowy")

    def initUI(self):

        self.setBackground(Color(0, 50, 0))

        self.playButtonS = ImageIcon('bin/gui/media/' + "playButton.png")
        self.helpButtonS = ImageIcon('bin/gui/media/' + "helpButton.png")
        self.resetButtonS = ImageIcon('bin/gui/media/' + "resetButton.png")
        self.exitButtonS = ImageIcon('bin/gui/media/' + "exitButton.png")
        self.playButtonU = ImageIcon('bin/gui/media/' +
                                     "playButton_unselected.png")
        self.helpButtonU = ImageIcon('bin/gui/media/' +
                                     "helpButton_unselected.png")
        self.resetButtonU = ImageIcon('bin/gui/media/' +
                                      "resetButton_unselected.png")
        self.exitButtonU = ImageIcon('bin/gui/media/' +
                                     "exitButton_unselected.png")

        class MouseHoverAdap(MouseAdapter):
            def __init__(self, butt, entImage, leaImage):
                self.entImage = entImage
                self.leaImage = leaImage
                self.butt = butt
                self.butt.setIcon(self.leaImage)

            def mouseEntered(self, m):
                self.butt.setIcon(self.entImage)
                #self.butt.repaint()
            def mouseExited(self, m):
                self.butt.setIcon(self.leaImage)
                #self.butt.repaint()

        self.playButton = JButton(self.playButtonS)
        self.playButton.setForeground(Color(0, 245, 0))
        #self.playButton.setPreferredSize(Dimension(playButton.getIconWidth(), playButton.getIconHeight()))
        #self.playButton.setBackground(Color(125, 125, 25))
        self.playButton.setMaximumSize(
            Dimension(self.playButtonS.getIconWidth(),
                      self.playButtonS.getIconHeight()))
        self.playButton.setContentAreaFilled(False)

        self.helpButton = JButton(self.helpButtonS)
        self.helpButton.setForeground(Color(0, 235, 0))
        self.helpButton.setMaximumSize(
            Dimension(self.helpButtonS.getIconWidth(),
                      self.helpButtonS.getIconHeight()))
        self.helpButton.setContentAreaFilled(False)

        self.resetButton = JButton(self.resetButtonS)
        self.resetButton.setForeground(Color(0, 225, 0))
        self.resetButton.setMaximumSize(
            Dimension(self.resetButtonS.getIconWidth(),
                      self.resetButtonS.getIconHeight()))
        self.resetButton.setContentAreaFilled(False)

        self.exitButton = JButton(self.exitButtonS)
        self.exitButton.setForeground(Color(0, 215, 0))
        self.exitButton.setContentAreaFilled(False)
        self.exitButton.setMaximumSize(
            Dimension(self.exitButtonS.getIconWidth(),
                      self.exitButtonS.getIconHeight()))

        # self.playButton.addMouseListener(MouseHoverAdap(self.playButton, self.playButtonS, self.playButtonU))
        # self.helpButton.addMouseListener(MouseHoverAdap(self.helpButton, self.helpButtonS, self.helpButtonU))
        # self.resetButton.addMouseListener(MouseHoverAdap(self.resetButton, self.resetButtonS, self.resetButtonU))
        # self.exitButton.addMouseListener(MouseHoverAdap(self.exitButton, self.exitButtonS, self.exitButtonU))

        class PlayButtonActionListener(ActionListener):
            def actionPerformed(button, e):
                self.dialogPanel.speak(self.consolePanel.console.do_play(''))

        self.playButton.addActionListener(PlayButtonActionListener())

        class HelpBUttonActionListener(ActionListener):
            def actionPerformed(button, e):
                self.dialogPanel.speak(self.consolePanel.console.do_hint(''))

        self.helpButton.addActionListener(HelpBUttonActionListener())

        class ResetButtonActionListener(ActionListener):
            def actionPerformed(button, e):
                self.dialogPanel.speak(self.consolePanel.console.do_reset(''))

        self.resetButton.addActionListener(ResetButtonActionListener())

        class ExitButtonActionListener(ActionListener):
            def actionPerformed(button, e):
                System.exit(0)

        self.exitButton.addActionListener(ExitButtonActionListener())

    def addUI(self):
        self.add(self.playButton, "push, grow")
        self.add(self.helpButton, "push, grow")
        self.add(self.resetButton, "push, grow")
        self.add(self.exitButton, "push, grow")