Beispiel #1
0
 def init(self):
     w,h,aa,threads = (512, 512, 1, 2)
     canvas = RayTracePanel(w, h, aa, threads)
     self.getContentPane().add(JScrollPane(canvas))
     
     #Save FileChooser
     #fcS = JFileChooser()
     #fcS.addChoosableFileFilter(FileNameExtensionFilter('Windows Bitmap (*.bmp)', ['bmp']))
     #fcS.addChoosableFileFilter(FileNameExtensionFilter('JPEG / JFIF (*.jpg)', ['jpg']))
     #fcS.addChoosableFileFilter(FileNameExtensionFilter('Portable Network Graphics (*.png)', ['png']))
     #def saveFile(event):
     #    '''Performed when the save button is pressed'''
     #    result = fcS.showSaveDialog(frame)
     #    if result == JFileChooser.APPROVE_OPTION:
     #        file = fcS.getSelectedFile()
     #        fname = file.getPath()
     #        ext = fcS.getFileFilter().getExtensions()[0]
     #        if not fname.endswith('.' + ext):
     #            file = File(fname + '.' + ext)
     #        canvas.saveToFile(file, ext)
     
     #Open FileChooser
     #fcO = JFileChooser()
     #fcO.addChoosableFileFilter(FileNameExtensionFilter('RayTrace Scene File (*.rts)', ['rts']))
     #def openFile(event):
     #    '''Performed when the open button is pressed'''
     #    result = fcO.showOpenDialog(frame)
     #    if result == JFileChooser.APPROVE_OPTION:
     #        fname = fcO.getSelectedFile().getPath()
     #        if fname.endswith('.rts'):
     #            f = open(fname, 'rb')
     #            newScene = SceneFactory().buildScene(f)
     #            f.close()
     #            Painter(canvas, newScene, openButton, saveButton, stopButton).start()
         
     def stop(event):
         '''Peformed when the stop button is pressed'''
         canvas.stopRendering()
         
     #Setup Menu
     menuBar = JMenuBar()
     menu = JMenu("File")
     menuBar.add(menu)
     openButton = JMenuItem("Open...", actionPerformed=openFile)
     openButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))
     menu.add(openButton)
     #saveButton = JMenuItem("Save as...", actionPerformed=saveFile)
     #saveButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK))
     #menu.add(saveButton)
     menu.addSeparator()
     stopButton = JMenuItem('Stop Render', actionPerformed=stop)
     stopButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
     stopButton.setEnabled(False)
     menu.add(stopButton)
     menu.addSeparator()
     #closeButton = JMenuItem('Close', actionPerformed=exit)
     #closeButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK))
     #menu.add(closeButton)
     self.setJMenuBar(menuBar)
Beispiel #2
0
    def init(self):
        w, h, aa, threads = (512, 512, 1, 2)
        canvas = RayTracePanel(w, h, aa, threads)
        self.getContentPane().add(JScrollPane(canvas))

        # Save FileChooser
        # fcS = JFileChooser()
        # fcS.addChoosableFileFilter(FileNameExtensionFilter('Windows Bitmap (*.bmp)', ['bmp']))
        # fcS.addChoosableFileFilter(FileNameExtensionFilter('JPEG / JFIF (*.jpg)', ['jpg']))
        # fcS.addChoosableFileFilter(FileNameExtensionFilter('Portable Network Graphics (*.png)', ['png']))
        # def saveFile(event):
        #    '''Performed when the save button is pressed'''
        #    result = fcS.showSaveDialog(frame)
        #    if result == JFileChooser.APPROVE_OPTION:
        #        file = fcS.getSelectedFile()
        #        fname = file.getPath()
        #        ext = fcS.getFileFilter().getExtensions()[0]
        #        if not fname.endswith('.' + ext):
        #            file = File(fname + '.' + ext)
        #        canvas.saveToFile(file, ext)

        # Open FileChooser
        # fcO = JFileChooser()
        # fcO.addChoosableFileFilter(FileNameExtensionFilter('RayTrace Scene File (*.rts)', ['rts']))
        # def openFile(event):
        #    '''Performed when the open button is pressed'''
        #    result = fcO.showOpenDialog(frame)
        #    if result == JFileChooser.APPROVE_OPTION:
        #        fname = fcO.getSelectedFile().getPath()
        #        if fname.endswith('.rts'):
        #            f = open(fname, 'rb')
        #            newScene = SceneFactory().buildScene(f)
        #            f.close()
        #            Painter(canvas, newScene, openButton, saveButton, stopButton).start()

        def stop(event):
            """Peformed when the stop button is pressed"""
            canvas.stopRendering()

        # Setup Menu
        menuBar = JMenuBar()
        menu = JMenu("File")
        menuBar.add(menu)
        openButton = JMenuItem("Open...", actionPerformed=openFile)
        openButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))
        menu.add(openButton)
        # saveButton = JMenuItem("Save as...", actionPerformed=saveFile)
        # saveButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK))
        # menu.add(saveButton)
        menu.addSeparator()
        stopButton = JMenuItem("Stop Render", actionPerformed=stop)
        stopButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0))
        stopButton.setEnabled(False)
        menu.add(stopButton)
        menu.addSeparator()
        # closeButton = JMenuItem('Close', actionPerformed=exit)
        # closeButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK))
        # menu.add(closeButton)
        self.setJMenuBar(menuBar)
    def __init__(self, gui):
        self.program = gui.program
        self.gui = gui

	# 5/14/09 Dorn:  added these lines to allow the input manager to 
	# communicated with the command window to read for input and raw_input
	self.inputManager = JESInputManager()
	self.inputManager.setCommandWindow(self)

        self.inMultiLineCommand = None
        self.setDocument(JESCommandWindowDocument.JESCommandWindowDocument(self))
        self.document = self.getDocument()
        self.setCharacterAttributes(self.document.getTextAttrib(), TRUE)
        self.setBackground(colors.black)
        self.setForeground(colors.white)
        self.setCaretColor(colors.white)
        self.setCaretPosition(0)

        parentKeymap = self.getKeymap()
        commandKeymap = self.addKeymap("commandKeymap", parentKeymap)
        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('\n'),
                                            makeAction(self.enter))

        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('UP'),makeAction(self.up))
        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('DOWN'),makeAction(self.down))

        self.setKeymap(commandKeymap)

        #This is a flag for JESCommandWindowDocument's insertString method.  It
        #indicates whether or not JES made the method call.

        self.currentPos = self.document.getLength()
        self.oldPos = self.currentPos
        #Text cleared with undo (used for redo)
        self.oldText = ''

        self.my_keymap = commandKeymap

        #Initialize command.  Command holds the line or lines of commands
        #entered by the user that will be sent to the interpreter
        self.command = ""

        #initialize heldText.  heldText holds the last text to be copied or cut.
        self.heldText = ""

        self.commandHistory = JESCommandHistory.JESCommandHistory()
        self.isSystem = TRUE
        self.setText(">>> ")
        self.isSystem = FALSE
        self.currentPos = self.document.getLength()
        self.oldPos = self.currentPos
        self.addFocusListener(self)
    def __init__(self, gui):
        self.program = gui.program
        self.gui = gui

	# 5/14/09 Dorn:  added these lines to allow the input manager to 
	# communicated with the command window to read for input and raw_input
	self.inputManager = JESInputManager()
	self.inputManager.setCommandWindow(self)

        self.inMultiLineCommand = None
        self.setDocument(JESCommandWindowDocument.JESCommandWindowDocument(self))
        self.document = self.getDocument()
        self.setCharacterAttributes(self.document.getTextAttrib(), TRUE)
        self.setBackground(colors.black)
        self.setForeground(colors.white)
        self.setCaretColor(colors.white)
        self.setCaretPosition(0)

        parentKeymap = self.getKeymap()
        commandKeymap = self.addKeymap("commandKeymap", parentKeymap)
        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('\n'),
                                            makeAction(self.enter))

        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('UP'),makeAction(self.up))
        commandKeymap.addActionForKeyStroke(KeyStroke.getKeyStroke('DOWN'),makeAction(self.down))

        self.setKeymap(commandKeymap)

        #This is a flag for JESCommandWindowDocument's insertString method.  It
        #indicates whether or not JES made the method call.

        self.currentPos = self.document.getLength()
        self.oldPos = self.currentPos
        #Text cleared with undo (used for redo)
        self.oldText = ''

        self.my_keymap = commandKeymap

        #Initialize command.  Command holds the line or lines of commands
        #entered by the user that will be sent to the interpreter
        self.command = ""

        #initialize heldText.  heldText holds the last text to be copied or cut.
        self.heldText = ""

        self.commandHistory = JESCommandHistory.JESCommandHistory()
        self.isSystem = TRUE
        self.setText(">>> ")
        self.isSystem = FALSE
        self.currentPos = self.document.getLength()
        self.oldPos = self.currentPos
        self.addFocusListener(self)
Beispiel #5
0
    def createMenuBar(self):
        menuBar = JMenuBar()

        fileMenu = JMenu('File')

        data = [['Spam', self.spam], ['Eggs', self.eggs],
                ['Bacon', self.bacon]]

        bGroup = ButtonGroup()
        for name, handler in data:
            rb = JRadioButtonMenuItem(name,
                                      actionPerformed=handler,
                                      selected=(name == 'Spam'))
            bGroup.add(rb)
            fileMenu.add(rb)

        fileMenu.add(JSeparator())  # Using JSeparator()
        for name, handler in data:
            fileMenu.add(JCheckBoxMenuItem(name, actionPerformed=handler))

        fileMenu.addSeparator()  # Using addSeparator()
        exitItem = fileMenu.add(
            JMenuItem('Exit',
                      KeyEvent.VK_X,
                      actionPerformed=self.exit,
                      accelerator=KeyStroke.getKeyStroke(
                          'x', InputEvent.ALT_DOWN_MASK)))
        menuBar.add(fileMenu)

        helpMenu = JMenu('Help')
        aboutItem = helpMenu.add(
            JMenuItem('About', KeyEvent.VK_A, actionPerformed=self.about))
        menuBar.add(helpMenu)

        return menuBar
Beispiel #6
0
    def makeComponents(self):
        # text specific operations
        self.randomUUIDButton = JButton("Generate random UUID", actionPerformed=self.randomUUIDPressed)
        self.clearButton = JButton("Clear", actionPerformed=self.clearPressed)
        self.runButton = JButton("Run as Jython", actionPerformed=self.runPressed)
        self.revertButton = JButton("Revert", actionPerformed=self.revertPressed)

        self.buttonPanel = Box(BoxLayout.X_AXIS) 
        self.buttonPanel.add(Box.createRigidArea(Dimension(5,0)))
        self.buttonPanel.add(self.randomUUIDButton)
        self.buttonPanel.add(Box.createRigidArea(Dimension(5,0)))
        self.buttonPanel.add(self.clearButton)
        self.buttonPanel.add(Box.createRigidArea(Dimension(5,0)))
        self.buttonPanel.add(self.runButton)
        self.buttonPanel.add(Box.createRigidArea(Dimension(5,0)))
        self.buttonPanel.add(self.revertButton)
        self.buttonPanel.add(Box.createRigidArea(Dimension(5,0)))
 
        self.textEditor = JTextPane()
        self.textEditor.setFont(Font("monospaced", Font.PLAIN, 12))
        #self.textEditor.setTabSize(4) # still inserts tabs instead of spaces
        TabKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0, False)
        MyTabActionKey = Object()
        self.textEditor.getInputMap().put(TabKeyStroke, MyTabActionKey)
        actionMap = self.textEditor.getActionMap()
        actionMap.put(MyTabActionKey, AddFourSpacesAction())
        
        self.layout = BorderLayout()
        self.add(self.buttonPanel, BorderLayout.NORTH)
        self.add(JScrollPane(self.textEditor), BorderLayout.CENTER)
Beispiel #7
0
    def __initKeyMap(self):
        os_name = System.getProperty("os.name")
        if os_name.startswith("Win"):
            exit_key = KeyEvent.VK_Z
        else:
            exit_key = KeyEvent.VK_D

        keyBindings = [
            (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
            (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
            (KeyEvent.VK_HOME, 0, "jython.home", self.home),
            (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, "jython.home", self.home),
            (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
            (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),

            ('(', 0, "jython.showTip", self.showTip),
            (')', 0, "jython.hideTip", self.hideTip),
            (exit_key, InputEvent.CTRL_MASK, "jython.exit", self.quit),
            (KeyEvent.VK_SPACE, InputEvent.CTRL_MASK, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_SPACE, 0, "jython.space", self.spaceTyped),

            # Mac/Emacs keystrokes
            (KeyEvent.VK_A, InputEvent.CTRL_MASK, "jython.home", self.home),
            (KeyEvent.VK_E, InputEvent.CTRL_MASK, "jython.end", self.end),
            (KeyEvent.VK_K, InputEvent.CTRL_MASK, "jython.killToEndLine", self.killToEndLine),
            (KeyEvent.VK_Y, InputEvent.CTRL_MASK, "jython.paste", self.paste),
            ]

        keymap = JTextComponent.addKeymap("jython", self.text_pane.keymap)
        for (key, modifier, name, function) in keyBindings:
            keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier), ActionDelegator(name, function))
        self.text_pane.keymap = keymap
Beispiel #8
0
    def __init__(self, controller):
        # Give reference to controller to delegate action response
        self.controller = controller

        # All window components apart from the menu will go in the JFrame's
        # content pane
        self.setLayout(BorderLayout())

        # Get key bindings configuration from settings
        key_strokes = self.controller.config['keystrokes']

        # Configure key bindings for undo/redo
        # First decide when key bindings can be triggered:
        condition = JComponent.WHEN_IN_FOCUSED_WINDOW

        # InputMap maps key strokes to actions in string format (e.g. 'undo')
        # ActionMap maps string actions (e.g. 'undo') with a custom
        # AbstractAction subclass.
        pane = self.getContentPane()
        for action, key in key_strokes.iteritems():
            key_stroke = KeyStroke.getKeyStroke(
                        getattr(KeyEvent, key),
                        Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
            pane.getInputMap(condition).put(key_stroke, action)
            pane.getActionMap().put(action, KeyStrokeAction(self, action))
Beispiel #9
0
def createAction(callback,
                 name,
                 description=None,
                 menu=None,
                 mnemonic=None,
                 accelerator=None,
                 toolBar=None,
                 menuItemType="standard"):
    action = CallbackAction(callback, name, description)
    if menu:
        if menuItemType == "standard":
            menuItem = JMenuItem(action)
        elif menuItemType == "checkbox":
            menuItem = JCheckBoxMenuItem(action)
        elif menuItemType == "radiobutton":
            menuItem = JRadioButtonMenuItem(action)
        else:
            internal_error("unsupported menu item type %s" % ` menuItemType `)
            menuItem = JMenuItem(action)
        if mnemonic:
            menuItem.setMnemonic(mnemonic)
        if accelerator:
            menuItem.setAccelerator(
                KeyStroke.getKeyStroke(ord(accelerator), Event.CTRL_MASK, 0))
        menu.add(menuItem)
        action.setMenuItem(menuItem)
    if toolBar:
        toolbarButton = JButton(action)
        toolBar.add(toolbarButton)
    return action
Beispiel #10
0
    def __init__(self, controller):
        # Give reference to controller to delegate action response
        self.controller = controller

        # All window components apart from the menu will go in the JFrame's
        # content pane
        self.setLayout(BorderLayout())

        # Get key bindings configuration from settings
        key_strokes = self.controller.config['keystrokes']

        # Configure key bindings for undo/redo
        # First decide when key bindings can be triggered:
        condition = JComponent.WHEN_IN_FOCUSED_WINDOW

        # InputMap maps key strokes to actions in string format (e.g. 'undo')
        # ActionMap maps string actions (e.g. 'undo') with a custom
        # AbstractAction subclass.
        pane = self.getContentPane()
        for action, key in key_strokes.iteritems():
            key_stroke = KeyStroke.getKeyStroke(
                getattr(KeyEvent, key),
                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
            pane.getInputMap(condition).put(key_stroke, action)
            pane.getActionMap().put(action, KeyStrokeAction(self, action))
Beispiel #11
0
 def __init__(self, table, keyName):
     self.table = table
     ks = KeyStroke.getKeyStroke(keyName)
     self.up = keyName.find('UP') > -1
     self.action = action = table.getInputMap(
         JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).get(ks)
     self.original = table.getActionMap().get(action)
     self.table.getActionMap().put(action, self)
Beispiel #12
0
    def __init__(self, frame):

        self.frame = frame  # TODO do I need a reference to frame after the constructor?
        self.history = History(self)
        self.bs = 0  # what is this?

        # command buffer
        self.buffer = []
        self.locals = {"gvSIG": sys.gvSIG}

        self.interp = Interpreter(self, self.locals)
        sys.stdout = StdOutRedirector(self)

        # create a textpane
        self.output = JTextPane(keyTyped=self.keyTyped, keyPressed=self.keyPressed)
        # TODO rename output to textpane

        # CTRL UP AND DOWN don't work
        keyBindings = [
            (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
            (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
            (KeyEvent.VK_HOME, 0, "jython.home", self.home),
            (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
            (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),
            ("(", 0, "jython.showTip", self.showTip),
            (")", 0, "jython.hideTip", self.hideTip),
            # (KeyEvent.VK_UP, InputEvent.CTRL_MASK, DefaultEditorKit.upAction, self.output.keymap.getAction(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0))),
            # (KeyEvent.VK_DOWN, InputEvent.CTRL_MASK, DefaultEditorKit.downAction, self.output.keymap.getAction(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)))
        ]
        # TODO rename newmap to keymap
        newmap = JTextComponent.addKeymap("jython", self.output.keymap)
        for (key, modifier, name, function) in keyBindings:
            newmap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier), ActionDelegator(name, function))

        self.output.keymap = newmap

        self.doc = self.output.document
        # self.panel.add(BorderLayout.CENTER, JScrollPane(self.output))
        self.__propertiesChanged()
        self.__inittext()
        self.initialLocation = self.doc.createPosition(self.doc.length - 1)

        # Don't pass frame to popups. JWindows with null owners are not focusable
        # this fixes the focus problem on Win32, but make the mouse problem worse
        self.popup = Popup(None, self.output)
        self.tip = Tip(None)

        # get fontmetrics info so we can position the popup
        metrics = self.output.getFontMetrics(self.output.getFont())
        self.dotWidth = metrics.charWidth(".")
        self.textHeight = metrics.getHeight()

        # add some handles to our objects
        self.locals["console"] = self

        self.caret = self.output.getCaret()
Beispiel #13
0
def makeUI(model):
    # Components:
    table = JTable(model)
    jsp = JScrollPane(table)
    regex_label = JLabel("Search: ")
    regex_field = JTextField(20)
    base_path_label = JLabel("Base path:")
    base_path_field = JTextField(50)
    if base_path is not None:
        base_path_field.setText(base_path)
    # Panel for all components
    all = JPanel()
    all.setBorder(EmptyBorder(20, 20, 20, 20))
    layout, c = GridBagLayout(), GC()
    all.setLayout(layout)
    # First row: label and regex text field
    add(all, regex_label, gridx=0, gridy=0)  # with default constraints
    add(all, regex_field, gridx=1, gridy=0, fill=GC.HORIZONTAL, weightx=1.0)
    # Second row: the table
    add(all,
        jsp,
        gridx=0,
        gridy=1,
        fill=GC.BOTH,
        gridwidth=2,
        weightx=1.0,
        weighty=1.0)  # full weights so it stretches when resizing
    # Third row: the base path
    add(all, base_path_label, gridx=0, gridy=2)
    add(all,
        base_path_field,
        gridx=1,
        gridy=2,
        fill=GC.HORIZONTAL,
        weightx=1.0)
    # Window frame
    frame = JFrame("File paths")
    frame.getContentPane().add(all)
    #frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
    frame.addWindowListener(Closing())
    frame.pack()
    frame.setVisible(True)
    # Listeners
    regex_field.addKeyListener(EnterListener(table))
    table.addMouseListener(RowClickListener(base_path_field))
    al = ArrowListener(table, regex_field)
    table.addKeyListener(al)
    regex_field.addKeyListener(al)
    # Instead of a KeyListener, use the input vs action map
    table.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),
                            "enter")
    table.getActionMap().put("enter", OpenImageFromTableCell())
    #
    return model, table, regex_field, frame
Beispiel #14
0
    def addAction(self, key, desc, cb):
        if " " in key:
            strokeString = key
        else:
            strokeString = "pressed " + key

        stroke = KeyStroke.getKeyStroke(strokeString)
        if stroke == None:
            raise ValueError("Invalid key: " + str(key))
        self.inputMap.put(stroke, key)
        self.actionMap.put(key, MenuAction(cb, key, desc, self))
        self.actionLabels[key] = JLabel(key + ": " + desc)
        self.actionLabels[key].setOpaque(True)
        self.frame.getContentPane().add(self.actionLabels[key])
Beispiel #15
0
    def addAction(self, key, desc, cb):
        if " " in key:
            strokeString = key
        else:
            strokeString = "pressed "+key

        stroke = KeyStroke.getKeyStroke(strokeString)
        if stroke == None:
            raise ValueError("Invalid key: "+str(key))
        self.inputMap.put(stroke, key)
        self.actionMap.put(key, MenuAction(cb, key, desc, self))
        self.actionLabels[key] = JLabel(key+": "+desc)
        self.actionLabels[key].setOpaque(True)
        self.frame.getContentPane().add(self.actionLabels[key])
Beispiel #16
0
    def __initKeyMap(self):
        os_name = System.getProperty("os.name")
        if os_name.startswith("Win"):
            exit_key = KeyEvent.VK_Z
            interrupt_key = KeyEvent.VK_PAUSE  # BREAK
        else:
            exit_key = KeyEvent.VK_D
            interrupt_key = KeyEvent.VK_C

        keyBindings = [
            (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
            (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
            (KeyEvent.VK_HOME, 0, "jython.home", self.home),
            (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, "jython.home",
             self.home),
            (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
            (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),
            ('(', 0, "jython.showTip", self.showTip),
            (')', 0, "jython.hideTip", self.hideTip),
            (exit_key, InputEvent.CTRL_MASK, "jython.exit", self.quit),
            (KeyEvent.VK_SPACE, InputEvent.CTRL_MASK, "jython.showPopup",
             self.showPopup),
            (KeyEvent.VK_SPACE, 0, "jython.space", self.spaceTyped),

            # explicitly set paste since we're overriding functionality
            (KeyEvent.VK_V,
             Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
             "jython.paste", self.paste),

            # Mac/Emacs keystrokes
            (KeyEvent.VK_A, InputEvent.CTRL_MASK, "jython.home", self.home),
            (KeyEvent.VK_E, InputEvent.CTRL_MASK, "jython.end", self.end),
            (KeyEvent.VK_K, InputEvent.CTRL_MASK, "jython.killToEndLine",
             self.killToEndLine),
            (KeyEvent.VK_Y, InputEvent.CTRL_MASK, "jython.paste", self.paste),
            (interrupt_key, InputEvent.CTRL_MASK, "jython.keyboardInterrupt",
             self.keyboardInterrupt),
        ]

        keymap = JTextComponent.addKeymap("jython", self.text_pane.keymap)
        for (key, modifier, name, function) in keyBindings:
            keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier),
                                         ActionDelegator(name, function))
        self.text_pane.keymap = keymap
Beispiel #17
0
    def initKeyMap(self):
        import platform
        os_name = platform.java_ver()[-1][0]

        if os_name.startswith('Win'):
            exit_key = KeyEvent.VK_Z
            interrupt_key = KeyEvent.VK_PAUSE
        else:
            exit_key = KeyEvent.VK_D
            interrupt_key = KeyEvent.VK_C

        bindings = [
            (KeyEvent.VK_ENTER, 0, 'jython.enter', self.enterAction),
            (KeyEvent.VK_DELETE, 0, 'jython.delete', self.deleteAction),
            (KeyEvent.VK_TAB, 0, 'jython.tab', self.tabAction),
            (KeyEvent.VK_HOME, 0, 'jython.home', self.homeAction),
            (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, 'jython.home',
             self.homeAction),
            (KeyEvent.VK_END, 0, 'jython.end', self.endAction),
            (KeyEvent.VK_RIGHT, InputEvent.META_DOWN_MASK, 'jython.end',
             self.endAction),
            (KeyEvent.VK_UP, 0, 'jython.up', self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, 'jython.down', self.history.historyDown),
            (KeyEvent.VK_V,
             Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
             'jython.paste', self.pasteAction),
            (KeyEvent.VK_A, InputEvent.CTRL_MASK, 'jython.home',
             self.homeAction),
            (KeyEvent.VK_E, InputEvent.CTRL_MASK, 'jython.end',
             self.endAction),
            (KeyEvent.VK_K, InputEvent.CTRL_MASK, 'jython.deleteEndLine',
             self.deleteEndLineAction),
            (KeyEvent.VK_Y, InputEvent.CTRL_MASK, 'jython.paste',
             self.pasteAction),

            #(interrupt_key, InputEvent.CTRL_MASK, 'jython.keyboardInterrupt', self.keyboardInterruptAction),
        ]

        keymap = JTextComponent.addKeymap('jython', self.textpane.getKeymap())

        for key, modifier, name, function in bindings:
            keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier),
                                         ActionDelegator(name, function))

        self.textpane.keymap = keymap
Beispiel #18
0
    def initKeyMap(self):
        import platform
        os_name = platform.java_ver()[-1][0]

        if os_name.startswith('Win'):
            exit_key = KeyEvent.VK_Z
            interrupt_key = KeyEvent.VK_PAUSE
        else:
            exit_key = KeyEvent.VK_D
            interrupt_key = KeyEvent.VK_C

        bindings = [
            (KeyEvent.VK_ENTER, 0, 'jython.enter', self.enterAction),
            (KeyEvent.VK_DELETE, 0, 'jython.delete', self.deleteAction),

            (KeyEvent.VK_HOME, 0, 'jython.home', self.homeAction),
            (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, 'jython.home', self.homeAction),
            (KeyEvent.VK_END, 0, 'jython.end', self.endAction),
            (KeyEvent.VK_RIGHT, InputEvent.META_DOWN_MASK, 'jython.end', self.endAction),

            (KeyEvent.VK_UP, 0, 'jython.up', self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, 'jython.down', self.history.historyDown),

            (KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), 'jython.paste', self.pasteAction),

            (KeyEvent.VK_A, InputEvent.CTRL_MASK, 'jython.home', self.homeAction),
            (KeyEvent.VK_E, InputEvent.CTRL_MASK, 'jython.end', self.endAction),
            (KeyEvent.VK_K, InputEvent.CTRL_MASK, 'jython.deleteEndLine', self.deleteEndLineAction),
            (KeyEvent.VK_Y, InputEvent.CTRL_MASK, 'jython.paste', self.pasteAction),

            #(interrupt_key, InputEvent.CTRL_MASK, 'jython.keyboardInterrupt', self.keyboardInterruptAction),
            ]

        keymap = JTextComponent.addKeymap('jython', self.textpane.getKeymap())

        for key, modifier, name, function in bindings:
            keymap.addActionForKeyStroke(
                    KeyStroke.getKeyStroke(key, modifier),
                    ActionDelegator(name, function))

        self.textpane.keymap = keymap
Beispiel #19
0
    def __initKeyMap(self):
        os_name = System.getProperty("os.name")
        if os_name.startswith("Win"):
            exit_key = KeyEvent.VK_Z
            interrupt_key = KeyEvent.VK_PAUSE # BREAK
        else:
            exit_key = KeyEvent.VK_D
            interrupt_key = KeyEvent.VK_C

        keyBindings = [
            (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
            (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
            (KeyEvent.VK_HOME, 0, "jython.home", self.home),
            (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, "jython.home", self.home),
            (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
            (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),

            ('(', 0, "jython.showTip", self.showTip),
            (')', 0, "jython.hideTip", self.hideTip),
            (exit_key, InputEvent.CTRL_MASK, "jython.exit", self.quit),
            (KeyEvent.VK_SPACE, InputEvent.CTRL_MASK, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_SPACE, 0, "jython.space", self.spaceTyped),

            # explicitly set paste since we're overriding functionality
            (KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), "jython.paste", self.paste),

            # Mac/Emacs keystrokes
            (KeyEvent.VK_A, InputEvent.CTRL_MASK, "jython.home", self.home),
            (KeyEvent.VK_E, InputEvent.CTRL_MASK, "jython.end", self.end),
            (KeyEvent.VK_K, InputEvent.CTRL_MASK, "jython.killToEndLine", self.killToEndLine),
            (KeyEvent.VK_Y, InputEvent.CTRL_MASK, "jython.paste", self.paste),
            
            (interrupt_key, InputEvent.CTRL_MASK, "jython.keyboardInterrupt", self.keyboardInterrupt),
            ]

        keymap = JTextComponent.addKeymap("jython", self.text_pane.keymap)
        for (key, modifier, name, function) in keyBindings:
            keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier), ActionDelegator(name, function))
        self.text_pane.keymap = keymap
Beispiel #20
0
def createAction(callback, name, description=None, menu=None, mnemonic=None, accelerator=None, toolBar=None, menuItemType="standard"):
    action = CallbackAction(callback, name, description)
    if menu:
        if menuItemType == "standard":
            menuItem = JMenuItem(action)
        elif menuItemType == "checkbox":
            menuItem = JCheckBoxMenuItem(action)
        elif menuItemType == "radiobutton":
            menuItem = JRadioButtonMenuItem(action)
        else:
            internal_error("unsupported menu item type %s" % `menuItemType`)
            menuItem = JMenuItem(action)
        if mnemonic:
            menuItem.setMnemonic(mnemonic)
        if accelerator:
            menuItem.setAccelerator(KeyStroke.getKeyStroke(ord(accelerator), Event.CTRL_MASK, 0))
        menu.add(menuItem)
        action.setMenuItem(menuItem)
    if toolBar:
        toolbarButton = JButton(action)
        toolBar.add(toolbarButton)
    return action
Beispiel #21
0
    def __init__(self, controller):
        self.logger = logging.getLogger("NammuController")
        self.setAlwaysOnTop(True)
        self.controller = controller
        self.pane = self.getContentPane()

        # Get key bindings configuration from settings
        key_strokes = self.controller.config['find_keystrokes']

        # Configure key bindings for undo/redo
        # First decide when key bindings can be triggered:
        condition = JComponent.WHEN_IN_FOCUSED_WINDOW

        # InputMap maps key strokes to actions in string format (e.g. 'undo')
        # ActionMap maps string actions (e.g. 'undo') with a custom
        # AbstractAction subclass.
        pane = self.getContentPane()
        for action, key in key_strokes.iteritems():
            key_stroke = KeyStroke.getKeyStroke(
                getattr(KeyEvent, key),
                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
            pane.getInputMap(condition).put(key_stroke, action)
            pane.getActionMap().put(action, KeyStrokeAction(self, action))
Beispiel #22
0
    def __init__(self, controller):
        self.logger = logging.getLogger("NammuController")
        self.setAlwaysOnTop(True)
        self.controller = controller
        self.pane = self.getContentPane()

        # Get key bindings configuration from settings
        key_strokes = self.controller.config['find_keystrokes']

        # Configure key bindings for undo/redo
        # First decide when key bindings can be triggered:
        condition = JComponent.WHEN_IN_FOCUSED_WINDOW

        # InputMap maps key strokes to actions in string format (e.g. 'undo')
        # ActionMap maps string actions (e.g. 'undo') with a custom
        # AbstractAction subclass.
        pane = self.getContentPane()
        for action, key in key_strokes.iteritems():
            key_stroke = KeyStroke.getKeyStroke(
                        getattr(KeyEvent, key),
                        Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
            pane.getInputMap(condition).put(key_stroke, action)
            pane.getActionMap().put(action, KeyStrokeAction(self, action))
Beispiel #23
0
    def createMenuBar(self):
        menuBar = JMenuBar()

        fileMenu = JMenu('File')
        exitItem = fileMenu.add(
            JMenuItem('Exit',
                      KeyEvent.VK_X,
                      actionPerformed=self.exit,
                      accelerator=KeyStroke.getKeyStroke(
                          KeyEvent.VK_X, ActionEvent.ALT_MASK)))
        menuBar.add(fileMenu)

        codeMenu = JMenu('Encoding')

        data = [['ANSI', KeyEvent.VK_A], ['UTF-8', KeyEvent.VK_U],
                ['UCS-2 Big Endian', KeyEvent.VK_B],
                ['UCS-2 Little Endian', KeyEvent.VK_L]]

        bGroup = ButtonGroup()
        for suffix, mnemonic in data:
            name = 'Encoding in ' + suffix
            rb = JRadioButtonMenuItem(name,
                                      mnemonic=mnemonic,
                                      selected=(suffix == 'ANSI'))
            bGroup.add(rb)
            codeMenu.add(rb)
        menuBar.add(codeMenu)

        viewMenu = JMenu('View')
        viewMenu.add(JCheckBoxMenuItem('Full screen'))
        viewMenu.add(JSeparator())  # Using JSeparator()
        #       viewMenu.addSeparator()        # Using addSeparator()
        #       viewMenu.insertSeparator( 1 )  #
        viewMenu.add(JCheckBoxMenuItem('Word wrap'))
        menuBar.add(viewMenu)

        return menuBar
Beispiel #24
0
def run(scene, w=512, h=512, aa=1, threads=1):
    """Create GUI and perform ray-tracing."""
    # Make Swing not look like garbage (so much)
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
    # Setup frame
    frame = JFrame("RayTracer", defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(w, h))
    frame.setIconImage(ImageIcon("resources/icon.png").getImage())
    canvas = RayTracePanel(w, h, aa, threads)
    frame.getContentPane().add(JScrollPane(canvas))

    # Save FileChooser
    fcS = JFileChooser()
    fcS.addChoosableFileFilter(FileNameExtensionFilter("Windows Bitmap (*.bmp)", ["bmp"]))
    fcS.addChoosableFileFilter(FileNameExtensionFilter("JPEG / JFIF (*.jpg)", ["jpg"]))
    fcS.addChoosableFileFilter(FileNameExtensionFilter("Portable Network Graphics (*.png)", ["png"]))

    def saveFile(event):
        """Performed when the save button is pressed"""
        result = fcS.showSaveDialog(frame)
        if result == JFileChooser.APPROVE_OPTION:
            file = fcS.getSelectedFile()
            fname = file.getPath()
            ext = fcS.getFileFilter().getExtensions()[0]
            if not fname.endswith("." + ext):
                file = File(fname + "." + ext)
            canvas.saveToFile(file, ext)

    # Open FileChooser
    fcO = JFileChooser()
    fcO.addChoosableFileFilter(FileNameExtensionFilter("RayTrace Scene File (*.rts)", ["rts"]))

    def openFile(event):
        """Performed when the open button is pressed"""
        result = fcO.showOpenDialog(frame)
        if result == JFileChooser.APPROVE_OPTION:
            fname = fcO.getSelectedFile().getPath()
            if fname.endswith(".rts"):
                f = open(fname, "rb")
                newScene = SceneFactory().buildScene(f)
                f.close()
                Painter(canvas, newScene, openButton, saveButton, stopButton).start()

    def exit(event):
        """Performed when the exit button is pressed"""
        import sys

        sys.exit(0)

    def stop(event):
        """Peformed when the stop button is pressed"""
        canvas.stopRendering()

    # Setup Menu
    menuBar = JMenuBar()
    menu = JMenu("File")
    menuBar.add(menu)
    openButton = JMenuItem("Open...", actionPerformed=openFile)
    openButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))
    menu.add(openButton)
    saveButton = JMenuItem("Save as...", actionPerformed=saveFile)
    saveButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK))
    menu.add(saveButton)
    menu.addSeparator()
    stopButton = JMenuItem("Stop Render", actionPerformed=stop)
    stopButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0))
    stopButton.setEnabled(False)
    menu.add(stopButton)
    menu.addSeparator()
    closeButton = JMenuItem("Close", actionPerformed=exit)
    closeButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK))
    menu.add(closeButton)
    frame.setJMenuBar(menuBar)

    # Finish initializing GUI
    self.pack()
Beispiel #25
0
    def __init__(self, frame):

        self.frame = frame  # TODO do I need a reference to frame after the constructor?
        self.history = History(self)
        self.bs = 0  # what is this?

        # command buffer
        self.buffer = []
        self.locals = {"gvSIG": sys.gvSIG}

        self.interp = Interpreter(self, self.locals)
        sys.stdout = StdOutRedirector(self)

        # create a textpane
        self.output = JTextPane(keyTyped=self.keyTyped,
                                keyPressed=self.keyPressed)
        # TODO rename output to textpane

        # CTRL UP AND DOWN don't work
        keyBindings = [
            (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
            (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
            (KeyEvent.VK_HOME, 0, "jython.home", self.home),
            (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
            (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
            (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
            (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),
            ('(', 0, "jython.showTip", self.showTip),
            (')', 0, "jython.hideTip", self.hideTip),

            #(KeyEvent.VK_UP, InputEvent.CTRL_MASK, DefaultEditorKit.upAction, self.output.keymap.getAction(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0))),
            #(KeyEvent.VK_DOWN, InputEvent.CTRL_MASK, DefaultEditorKit.downAction, self.output.keymap.getAction(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)))
        ]
        # TODO rename newmap to keymap
        newmap = JTextComponent.addKeymap("jython", self.output.keymap)
        for (key, modifier, name, function) in keyBindings:
            newmap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier),
                                         ActionDelegator(name, function))

        self.output.keymap = newmap

        self.doc = self.output.document
        #self.panel.add(BorderLayout.CENTER, JScrollPane(self.output))
        self.__propertiesChanged()
        self.__inittext()
        self.initialLocation = self.doc.createPosition(self.doc.length - 1)

        # Don't pass frame to popups. JWindows with null owners are not focusable
        # this fixes the focus problem on Win32, but make the mouse problem worse
        self.popup = Popup(None, self.output)
        self.tip = Tip(None)

        # get fontmetrics info so we can position the popup
        metrics = self.output.getFontMetrics(self.output.getFont())
        self.dotWidth = metrics.charWidth('.')
        self.textHeight = metrics.getHeight()

        # add some handles to our objects
        self.locals['console'] = self

        self.caret = self.output.getCaret()
Beispiel #26
0
def run(scene, w=512, h=512, aa=1, threads=1):
        '''Create GUI and perform ray-tracing.'''
        #Make Swing not look like garbage (so much)
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
        #Setup frame
        frame = JFrame(
            "RayTracer",
            defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
            size=(w, h)
        )
        frame.setIconImage(ImageIcon('resources/icon.png').getImage())
        canvas = RayTracePanel(w, h, aa, threads)
        frame.getContentPane().add(JScrollPane(canvas))
        
        #Save FileChooser
        fcS = JFileChooser()
        fcS.addChoosableFileFilter(FileNameExtensionFilter('Windows Bitmap (*.bmp)', ['bmp']))
        fcS.addChoosableFileFilter(FileNameExtensionFilter('JPEG / JFIF (*.jpg)', ['jpg']))
        fcS.addChoosableFileFilter(FileNameExtensionFilter('Portable Network Graphics (*.png)', ['png']))
        def saveFile(event):
            '''Performed when the save button is pressed'''
            result = fcS.showSaveDialog(frame)
            if result == JFileChooser.APPROVE_OPTION:
                file = fcS.getSelectedFile()
                fname = file.getPath()
                ext = fcS.getFileFilter().getExtensions()[0]
                if not fname.endswith('.' + ext):
                    file = File(fname + '.' + ext)
                canvas.saveToFile(file, ext)
        
        #Open FileChooser
        fcO = JFileChooser()
        fcO.addChoosableFileFilter(FileNameExtensionFilter('RayTrace Scene File (*.rts)', ['rts']))
        def openFile(event):
            '''Performed when the open button is pressed'''
            result = fcO.showOpenDialog(frame)
            if result == JFileChooser.APPROVE_OPTION:
                fname = fcO.getSelectedFile().getPath()
                if fname.endswith('.rts'):
                    f = open(fname, 'rb')
                    newScene = SceneFactory().buildScene(f)
                    f.close()
                    Painter(canvas, newScene, openButton, saveButton).start()
                    
        def exit(event):
            '''Performed when the exit button is pressed'''
            import sys
            sys.exit(0)
        
        #Setup Menu
        menuBar = JMenuBar()
        menu = JMenu("File")
        menuBar.add(menu)
        openButton = JMenuItem("Open...", actionPerformed=openFile)
        openButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))
        menu.add(openButton)
        saveButton = JMenuItem("Save as...", actionPerformed=saveFile)
        saveButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK))
        menu.add(saveButton)
        menu.addSeparator()
        closeButton = JMenuItem('Close', actionPerformed=exit)
        closeButton.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK))
        menu.add(closeButton)
        frame.setJMenuBar(menuBar)
        
        #Finish initializing GUI
        frame.pack()
        #frame.setLocationRelativeTo(None)
        frame.setVisible(True)
        
        #Perform ray-tracing
        if scene is not None:
            Thread(Painter(canvas, scene, openButton, saveButton)).start()
Beispiel #27
0
	def clientUI(self):
		'''ClientUI and Widget creation
		'''
		#  Colours
		foreground_colour = Color(30,57,68)
		background_colour = Color(247,246,242)
		window_background = Color(145,190,210)
		#  Borders
		self.border2=BorderFactory.createLineBorder(foreground_colour,1, True)
		#  Fonts
		self.font= Font("Ubuntu Light",  Font.BOLD, 20)
		self.label_font= Font("Ubuntu Light",  Font.BOLD, 17)
		self.label_2_font= Font( "Ubuntu Light",Font.BOLD, 12)
		self.btn_font=Font("Ubuntu Light", Font.BOLD, 15)
		
		#  Set the layout parameters
		self.client_layout=GroupLayout(self.getContentPane())
		self.getContentPane().setLayout(self.client_layout)	
		self.getContentPane().setBackground(window_background)
		self.client_layout.setAutoCreateGaps(True)
		self.client_layout.setAutoCreateContainerGaps(True)
		self.setPreferredSize(Dimension(400, 450))
		
		#  Create widgets and assemble the GUI
		#  Main display area
		self.main_content=JTextPane()
		self.main_content.setBackground(background_colour)
		#self.main_content.setForeground(foreground_colour)
		self.main_content.setEditable(False)
		#  Message entry area  		
		self.message=JTextArea( 2,2, border=self.border2, font=self.label_font, keyPressed=self.returnKeyPress)
		self.message.requestFocusInWindow()	
		self.message.setBackground(background_colour)
		self.message.setForeground(foreground_colour)
		self.message.setLineWrap(True)
		self.message.setWrapStyleWord(True)
		self.message.setBorder(BorderFactory.createEmptyBorder(3,3,3,3))
		self.message.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), self.returnKeyPress) 
		#  BUttons
		quit_btn=JButton("Quit!", actionPerformed=ChatApp().closeEvent, border=self.border2, font=self.btn_font)
		go_btn=JButton("Send", actionPerformed=self.grabText, border=self.border2, font=self.btn_font)
		quit_btn.setBackground(background_colour)
		go_btn.setBackground(background_colour)
		quit_btn.setForeground(foreground_colour)
		go_btn.setForeground(foreground_colour)
		
		# Make scrollable
		self.scroll_content=JScrollPane(self.main_content)
		self.scroll_content.setPreferredSize(Dimension(150,275))
		self.scroll_content.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)
		self.scroll_content.setViewportView(self.main_content)
		self.scroll_content.setBackground(Color.WHITE)
		self.scroll_message=JScrollPane(self.message)
		self.scroll_message.setPreferredSize(Dimension(150,20))
		self.scroll_message.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS)
		
		# Test user label, still not updating after first round of messages
		self.user_label=JLabel(" Users online : %s "%(str(len(self.no_users))),JLabel.RIGHT, font=self.label_2_font)
		
		#  Assemble the components
		#  Horizontal layout
		self.client_layout.setHorizontalGroup(self.client_layout.createParallelGroup()
				.addComponent(self.scroll_content)
				.addGroup(self.client_layout.createParallelGroup(GroupLayout.Alignment.CENTER)
					.addComponent(self.scroll_message))
				.addGroup(self.client_layout.createSequentialGroup()
					.addComponent(quit_btn)
					.addComponent(go_btn).addGap(20))
				.addGroup(self.client_layout.createParallelGroup()
					.addComponent(self.user_label))
		)
		
		#  Vertical layout
		self.client_layout.setVerticalGroup(self.client_layout.createSequentialGroup()
			.addGroup(self.client_layout.createParallelGroup()
				.addComponent(self.scroll_content))
				.addComponent(self.scroll_message)
				.addGroup(self.client_layout.createParallelGroup()
					.addComponent(quit_btn)
					.addComponent(go_btn))
				.addGroup(self.client_layout.createParallelGroup()
					.addComponent(self.user_label))
		)
		
		#  Finalise the GUI
		self.client_layout.linkSize(SwingConstants.HORIZONTAL, [quit_btn,go_btn, self.user_label])
		self.pack()
		self.message.requestFocusInWindow()
		self.setTitle(">>>   Client %s   <<<"%self.username)
		self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
		self.setLocationRelativeTo(None)
		self.setVisible(True)
		#  Display the server greeting
		self.appendText('\n'+self.greeting+'\n')
Beispiel #28
0
def run(scene, w=512, h=512, aa=1, threads=1):
    '''Create GUI and perform ray-tracing.'''
    #Make Swing not look like garbage (so much)
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
    #Setup frame
    frame = JFrame("RayTracer",
                   defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
                   size=(w, h))
    frame.setIconImage(ImageIcon('resources/icon.png').getImage())
    canvas = RayTracePanel(w, h, aa, threads)
    frame.getContentPane().add(JScrollPane(canvas))

    #Save FileChooser
    fcS = JFileChooser()
    fcS.addChoosableFileFilter(
        FileNameExtensionFilter('Windows Bitmap (*.bmp)', ['bmp']))
    fcS.addChoosableFileFilter(
        FileNameExtensionFilter('JPEG / JFIF (*.jpg)', ['jpg']))
    fcS.addChoosableFileFilter(
        FileNameExtensionFilter('Portable Network Graphics (*.png)', ['png']))

    def saveFile(event):
        '''Performed when the save button is pressed'''
        result = fcS.showSaveDialog(frame)
        if result == JFileChooser.APPROVE_OPTION:
            file = fcS.getSelectedFile()
            fname = file.getPath()
            ext = fcS.getFileFilter().getExtensions()[0]
            if not fname.endswith('.' + ext):
                file = File(fname + '.' + ext)
            canvas.saveToFile(file, ext)

    #Open FileChooser
    fcO = JFileChooser()
    fcO.addChoosableFileFilter(
        FileNameExtensionFilter('RayTrace Scene File (*.rts)', ['rts']))

    def openFile(event):
        '''Performed when the open button is pressed'''
        result = fcO.showOpenDialog(frame)
        if result == JFileChooser.APPROVE_OPTION:
            fname = fcO.getSelectedFile().getPath()
            if fname.endswith('.rts'):
                f = open(fname, 'rb')
                newScene = SceneFactory().buildScene(f)
                f.close()
                Painter(canvas, newScene, openButton, saveButton).start()

    def exit(event):
        '''Performed when the exit button is pressed'''
        import sys
        sys.exit(0)

    #Setup Menu
    menuBar = JMenuBar()
    menu = JMenu("File")
    menuBar.add(menu)
    openButton = JMenuItem("Open...", actionPerformed=openFile)
    openButton.setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK))
    menu.add(openButton)
    saveButton = JMenuItem("Save as...", actionPerformed=saveFile)
    saveButton.setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK))
    menu.add(saveButton)
    menu.addSeparator()
    closeButton = JMenuItem('Close', actionPerformed=exit)
    closeButton.setAccelerator(
        KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK))
    menu.add(closeButton)
    frame.setJMenuBar(menuBar)

    #Finish initializing GUI
    frame.pack()
    #frame.setLocationRelativeTo(None)
    frame.setVisible(True)

    #Perform ray-tracing
    if scene is not None:
        Thread(Painter(canvas, scene, openButton, saveButton)).start()
Beispiel #29
0
def control(key):
    return KeyStroke.getKeyStroke(keyCode(key), CONTROL_MASK)
Beispiel #30
0
    def __init__(self, view):
        """ Constructor, initialized all the main variables and layout """
        # Initializes variables
        self.view = view
        self.history = History(self)
        self.bs = 0
        self.indenter = TabIndenter()
        self.exporterConsole = None
        self.executor = JythonExecutor.getExecutor()

        # Creates toolbar
        actions = [ ("Run.png", "jython.tooltip-run", self.runBuffer), \
         ("RunToBuffer.png", "jython.tooltip-run-another", self.runBufferToWindow), \
         ("RunAgain.png", "jython.tooltip-import", self.importBuffer), \
         ("MultipleResults.png", "jython.tooltip-path", self.path), \
         ("Open.png", "jython.tooltip-browse-path", self.browse), \
         ("CopyToBuffer.png", "jython.tooltip-save-session", self.savesession), \
         ("separator", None, None), \
         ("Clear.png", "jython.tooltip-restart", self.restart),
         ("separator", None, None),
         ("Parse.png", "jython.tooltip-tabnanny", self.tabnanny),
         ("separator", None, None),
         ("Help.png", "jython.tooltip-about", self.about)]
        self.panel = JPanel(BorderLayout())
        self.panel.add(BorderLayout.NORTH,
                       ToolbarHandler(actions).createToolbar())

        # Creates text pane and make keybindings
        # self.output = JTextPane(keyTyped = self.keyTyped, keyPressed = self.keyPressed, keyReleased = self.keyReleased)
        self.output = JTextPane(keyTyped=self.keyTyped,
                                keyPressed=self.keyPressed)
        if jEdit.getBooleanProperty("options.jython.upDownFlag"):
            keyBindings = [
                (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
                (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
                (KeyEvent.VK_HOME, 0, "jython.home", self.home),
                (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
                (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
                (KeyEvent.VK_UP, InputEvent.CTRL_MASK,
                 DefaultEditorKit.upAction,
                 self.output.keymap.getAction(
                     KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0))),
                (KeyEvent.VK_DOWN, InputEvent.CTRL_MASK,
                 DefaultEditorKit.downAction,
                 self.output.keymap.getAction(
                     KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)))
            ]
        else:
            keyBindings = [
             (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
             (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
             (KeyEvent.VK_HOME, 0, "jython.home", self.home),
             (KeyEvent.VK_UP, InputEvent.CTRL_MASK, "jython.historyup", \
              self.history.historyUp),
             (KeyEvent.VK_DOWN, InputEvent.CTRL_MASK, "jython.historydown", \
              self.history.historyDown)
            ]
        newmap = JTextComponent.addKeymap("jython", self.output.keymap)
        for (key, modifier, name, function) in keyBindings:
            newmap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier),
                                         ActionDelegator(name, function))
        self.output.keymap = newmap
        self.doc = self.output.document
        self.panel.add(BorderLayout.CENTER, JScrollPane(self.output))
        self.__propertiesChanged()
        self.__inittext()
        self.initialLocation = self.doc.createPosition(self.doc.length - 1)
Beispiel #31
0
def menu_with_accelerator(menuText, accelerator_pair):
    menu = JMenuItem(menuText)
    menu.setAccelerator(KeyStroke.getKeyStroke(*accelerator_pair))
    return menu
	def __init__(self, windowManager, commandConsoleFactory, subject, windowTitle):
		self._windowManager = windowManager





		self.onCloseRequestListener = None



		# EDIT MENU

		transferActionListener = _TransferActionListener()

		editMenu = JMenu( 'Edit' )

		if Platform.getPlatform() is Platform.MAC:
			command_key_mask = ActionEvent.META_MASK
		else:
			command_key_mask = ActionEvent.CTRL_MASK;

		self.__editUndoItem = JMenuItem( 'Undo' )
		undoAction = _action( 'undo', self.__onUndo )
		self.__editUndoItem.setActionCommand( undoAction.getValue( Action.NAME ) )
		self.__editUndoItem.addActionListener( undoAction )
		self.__editUndoItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Z, command_key_mask ) )
		self.__editUndoItem.setMnemonic( KeyEvent.VK_U )
		editMenu.add( self.__editUndoItem )

		self.__editRedoItem = JMenuItem( 'Redo' )
		redoAction = _action( 'redo', self.__onRedo )
		self.__editRedoItem.setActionCommand( redoAction.getValue( Action.NAME ) )
		self.__editRedoItem.addActionListener( redoAction )
		self.__editRedoItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Y, command_key_mask ) )
		self.__editRedoItem.setMnemonic( KeyEvent.VK_R )
		editMenu.add( self.__editRedoItem )

		editMenu.addSeparator()

		editCutItem = JMenuItem( 'Cut' )
		editCutItem.setActionCommand( TransferHandler.getCutAction().getValue( Action.NAME ) )
		editCutItem.addActionListener( transferActionListener )
		editCutItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_X, command_key_mask ) )
		editCutItem.setMnemonic( KeyEvent.VK_T )
		editMenu.add( editCutItem )

		editCopyItem = JMenuItem( 'Copy' )
		editCopyItem.setActionCommand( TransferHandler.getCopyAction().getValue( Action.NAME ) )
		editCopyItem.addActionListener( transferActionListener )
		editCopyItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_C, command_key_mask ) )
		editCopyItem.setMnemonic( KeyEvent.VK_C )
		editMenu.add( editCopyItem )

		editPasteItem = JMenuItem( 'Paste' )
		editPasteItem.setActionCommand( TransferHandler.getPasteAction().getValue( Action.NAME ) )
		editPasteItem.addActionListener( transferActionListener )
		editPasteItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_V, command_key_mask ) )
		editPasteItem.setMnemonic( KeyEvent.VK_P )
		editMenu.add( editPasteItem )

		editMenu.addSeparator()

		self.__showUndoHistoryItem = JMenuItem( 'Show undo history' )
		self.__showUndoHistoryItem.addActionListener( _action( 'Show undo history', self.__onShowUndoHistory ) )
		editMenu.add( self.__showUndoHistoryItem )




		# HELP MENU

		helpMenu = JMenu( 'Help' )

		helpToggleTooltipHighlightsItem = JMenuItem( 'Toggle tooltip highlights' )
		toggleTooltipHighlightsAction = _action( 'Toggle tooltip highlights', self.__onToggleTooltipHighlights )
		helpToggleTooltipHighlightsItem.setActionCommand( toggleTooltipHighlightsAction.getValue( Action.NAME ) )
		helpToggleTooltipHighlightsItem.addActionListener( toggleTooltipHighlightsAction )
		helpToggleTooltipHighlightsItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_F2, 0 ) )
		helpMenu.add( helpToggleTooltipHighlightsItem )

		helpMenu.add( _action( 'Show all tip boxes', self.__onShowAllTipBoxes ) )


		# MENU BAR

		menuBar = JMenuBar()
		menuBar.add( editMenu )
		menuBar.add( helpMenu )




		# BROWSER

		# Initialise here, as the browser listener may invoke methods upon the browser's creation
		class _BrowserListener (TabbedBrowser.TabbedBrowserListener):
			def createNewBrowserWindow(_self, subject):
				self._onOpenNewWindow( subject )

			def onTabbledBrowserChangePage(_self, browser):
				pass


		def inspectFragment(fragment, sourceElement, triggeringEvent):
			return self._windowManager.world.inspectFragment( fragment, sourceElement, triggeringEvent )



		def onChangeHistoryChanged(history):
			self.__refreshChangeHistoryControls( history )

		self._browser = TabbedBrowser( self._windowManager.world.rootSubject, subject, inspectFragment, _BrowserListener(), commandConsoleFactory )
		self._browser.getComponent().setPreferredSize( Dimension( 800, 600 ) )
		changeHistory = self._browser.getChangeHistory()
		self._browser.getChangeHistory().addChangeHistoryListener(onChangeHistoryChanged)





		# MAIN PANEL

		windowPanel = JPanel()
		windowPanel.setLayout( BoxLayout( windowPanel, BoxLayout.Y_AXIS ) )
		windowPanel.add( self._browser.getComponent() )




		# WINDOW

		class _WindowLister (WindowListener):
			def windowActivated(listenerSelf, event):
				pass

			def windowClosed(listenerSelf, event):
				pass

			def windowClosing(listenerSelf, event):
				if self.onCloseRequestListener is not None:
					self.onCloseRequestListener( self )

			def windowDeactivated(listenerSelf, event):
				pass

			def windowDeiconified(listenerSelf, event):
				pass

			def windowIconified(listenerSelf, event):
				pass

			def windowOpened(listenerSelf, event):
				pass


		self.__frame = JFrame( windowTitle )

		self.__frame.setJMenuBar( menuBar )

		self.__frame.add( windowPanel )
		self.__frame.addWindowListener( _WindowLister() )
		self.__frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE )

		self.__frame.pack()


		# Cause command history controls to refresh
		self.__refreshChangeHistoryControls( None )
Beispiel #33
0
def add_key_args(component, action_str, action, *args):
    # print(args)
    key_stroke = KeyStroke.getKeyStroke(*args)
    add_key_binding(component, action_str, action, key_stroke)
Beispiel #34
0
 def new_item(title, cmd, key, mod=shortcut):
     item = JMenuItem(title, actionCommand=cmd)
     item.accelerator = KeyStroke.getKeyStroke(key, mod)
     item.addActionListener(self)
     return item
Beispiel #35
0
def keyStroke(key):
    return KeyStroke.getKeyStroke(keyCode(key), 0)
Beispiel #36
0
def control(key):
    return KeyStroke.getKeyStroke(keyCode(key), CONTROL_MASK)
Beispiel #37
0
def controlShift(key):
    return KeyStroke.getKeyStroke(keyCode(key),
                                  CONTROL_MASK + InputEvent.SHIFT_MASK)
class UI:
    global dssFile
    mainWindow = ListSelection.getMainWindow()
    dssFileName = mainWindow.getDSSFilename()
    dssFile = HecDss.open(dssFileName)
    global frame, lbl_close, list_locations, chckbxShowLocationPlot, eventsTable, dm_events, dm_meltRate
    global swePaths, precipPaths, tempPaths, bList, meltRateTable, startDateField, endDateField

    frame = JFrame("Snow PAC - Parameter Aggregator & Calculator")
    #     frame.setUndecorated(True)
    frame.setBackground(Color.WHITE)
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
    frame.setBounds(100, 100, 1110, 775)

    contentPane = JPanel()
    contentPane.setBackground(Color.WHITE)
    contentPane.setBorder(EmptyBorder(5, 5, 5, 5))

    frame.setContentPane(contentPane)
    contentPane.setLayout(None)

    class MouseListener(MouseAdapter):
        #       @Override
        def mousePressed(self, e):
            global xx
            global xy
            xx = e.getX()
            xy = e.getY()

    class MouseMotionListener(MouseMotionAdapter):
        #       @Override
        def mouseDragged(self, arg0):
            x = arg0.getXOnScreen()
            y = arg0.getYOnScreen()
            frame.setLocation(x - xx, y - xy)

    mL = MouseListener()
    mML = MouseMotionListener()
    contentPane.addMouseListener(mL)
    contentPane.addMouseMotionListener(mML)

    if os.path.exists(img_dir + "/button.jpg"):
        btnIcon = ImageIcon(img_dir + "/button.jpg")
    else:
        btnIcon = ImageIcon(img_dir2 + "/button.jpg")

    scrollPane_events = JScrollPane()
    scrollPane_events.setBounds(270, 372, 403, 263)
    contentPane.add(scrollPane_events)

    scrollPane_locations = JScrollPane()
    scrollPane_locations.setBounds(270, 49, 403, 203)
    contentPane.add(scrollPane_locations)

    class deleteAction(AbstractAction):
        def actionPerformed(self, deleteEvent):
            # Get selected Rows and reverse list. Removes each row in list one at a time.
            # List is Reversed using [::-1], so it doesn't mess up the ordering as it deletes through the loop.
            for row in meltRateTable.getSelectedRows()[::-1]:
                dm_meltRate.removeRow(row)
                dm_meltRate.insertRow(row, [None, None])

    scrollPane_table = JScrollPane()
    scrollPane_table.setBounds(708, 49, 338, 586)
    contentPane.add(scrollPane_table)

    meltRateTable = JTable()
    scrollPane_table.setViewportView(meltRateTable)
    scrollPane_table.setBorder(LineBorder(Color(1, 1, 1), 2, True))
    meltRateTable.setFont(Font("Tahoma", Font.PLAIN, 11))

    columns = ("ATI (Deg F-Day)", "Meltrate (Inches/Deg F-Day)")
    data = []
    datarows = 100
    data.append([0, None])
    for i in range(datarows):
        data.append([None, None])
    dm_meltRate = DefaultTableModel(data, columns)

    meltRateTable.setModel(dm_meltRate)

    meltRateTable.getColumnModel().getColumn(0).setPreferredWidth(154)
    meltRateTable.getColumnModel().getColumn(1).setResizable(False)
    meltRateTable.getColumnModel().getColumn(1).setPreferredWidth(154)
    meltRateTable.setCellSelectionEnabled(True)

    #    Delete data from the table using the Delete Key.
    #     meltRateTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    inputMap = meltRateTable.getInputMap(JComponent.WHEN_FOCUSED)
    actionMap = meltRateTable.getActionMap()

    deleteActionStr = "delete"
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0),
                 deleteActionStr)
    actionMap.put(deleteActionStr, deleteAction())

    #     jLabelStartDate = JLabel()
    #     jLabelStartDate.setText("Optional Start Date:")
    #     jLabelStartDate.setToolTipText("Optional User Specified Date Range for Paired Data. If Specified, Will be Calculated for each Water Year.")
    #     jLabelStartDate.setBounds(420, 263, 120, 20);
    #     jLabelStartDate.setFont( Font("Tahoma", Font.PLAIN, 12))
    #     contentPane.add(jLabelStartDate)
    #
    #     startDateField = CalendarField();
    #     jLabelStartDate.setLabelFor(startDateField);
    #     startDateField.setMargin(Insets(0, 4, 0, 0));
    #     startDateField.setBounds(540, 263, 118, 22);
    #     startDateField.setFont(Font("Tahoma", Font.PLAIN, 12));
    #     startDateField.setToolTipText("Optional User Specified Date Range for Paired Data. If Specified, Will be Calculated for each Water Year.")
    #     contentPane.add(startDateField);
    #
    #     jLabelEndDate = JLabel()
    #     jLabelEndDate.setText("Optional End Date:")
    #     jLabelEndDate.setToolTipText("Optional User Specified Date Range for Paired Data. If Specified, Will be Calculated for each Water Year.")
    #     jLabelEndDate.setBounds(420, 293, 120, 20);
    #     jLabelEndDate.setFont( Font("Tahoma", Font.PLAIN, 12))
    #     contentPane.add(jLabelEndDate)
    #
    #     endDateField = CalendarField();
    #     jLabelEndDate.setLabelFor(endDateField);
    #     endDateField.setMargin(Insets(0, 4, 0, 0));
    #     endDateField.setBounds(540, 293, 118, 22);
    #     endDateField.setFont(Font("Tahoma", Font.PLAIN, 12));
    #     endDateField.setToolTipText("Optional User Specified Date Range for Paired Data. If Specified, Will be Calculated for each Water Year.")
    #     contentPane.add(endDateField);

    def recalcBtnSelect(event):
        global swePaths, precipPaths, tempPaths
        selectedLocations = list_locations.getSelectedValuesList()
        swePaths, precipPaths, tempPaths = Locations.getSelectedLocations(
            selectedLocations)
        pathsNoDPart, sList, pList, tList = CalcAtiMelt.processPathsLists(
            swePaths, precipPaths, tempPaths)
        dList = CalcAtiMelt.processPathsDatesList(pathsNoDPart)
        aList, mList = CalcAtiMelt.calcATIMelt(selectedLocations, sList, pList,
                                               tList, dList)

        # Write Melt-Cum and ATI Locations to DSS.
        CalcAtiMelt.writeAtiMelt(selectedLocations, dList, aList, mList)

        # Plot Locations if checkbox.selected = True.
        if chckbxShowLocationPlot.selected is True:
            #             print '\nPLOT TEAM ACTIVATE'
            PlotAtiMelt.plotAtiMelt(selectedLocations)

        # Use optional specified dates if fields are not blank.
#         if startDateField.getText() and endDateField.getText() is not None:
#             pdStart, pdEnd = ProcessPD.getSpecifiedDates(startDateField, endDateField)
#         else:
        pdStart = None
        pdEnd = None

        # Create Paired Data for Selected Locations.
        ProcessPD.processPairedData(selectedLocations, dList, mList, aList,
                                    pdStart, pdEnd)

        # Populate the UI Paired Data Table.
        CalcPD.updatePDTable(dssFile, eventsTable, dm_events)

        # Close the DSS File.
        dssFile.close()

    def plotPDBtnSelect(event):
        selected_Events = eventsTable.getSelectedRows()
        # Print 'selected_Events: ', selected_Events
        # Sorting of the table by selecting the headers is doen by using: eventsTable.setAutoCreateRowSorter(True)
        # This sorts the table but does not update the table model.
        # To ensure sorting and selecting of resulting paths works properly,
        # we must convert our selection using: eventsTable.convertRowIndexToModel(event)
        selectedEvents = []
        for event in selected_Events:
            selectedEvents.append(eventsTable.convertRowIndexToModel(event))
#         print 'selectedEvents: ', selectedEvents
        PlotPD.plotPD(eventsTable, selectedEvents, dssFile)
        dssFile.close()

    def calcMeltRateBtnSelect(event):
        selected_Events = eventsTable.getSelectedRows()
        selectedEvents = []
        for event in selected_Events:
            selectedEvents.append(eventsTable.convertRowIndexToModel(event))
        meltRateList = CalcMeltRate.calcMeltRate(selectedEvents, eventsTable,
                                                 meltRateTable, dssFile)
        CalcMeltRate.updateTable(meltRateTable, meltRateList, dm_meltRate)
        dssFile.close()

    locDict, bList = Locations.getPaths(dssFile)
    locList = Locations.getList(locDict)

    list_locations = JList(locList)
    scrollPane_locations.setViewportView(list_locations)
    list_locations.setBorder(LineBorder(Color(0, 0, 0), 2, True))

    eventsTable = JTable()
    scrollPane_events.setViewportView(eventsTable)
    scrollPane_events.setBorder(LineBorder(Color(1, 1, 1), 2, True))
    eventsTable.setFont(Font("Tahoma", Font.PLAIN, 11))

    locationsList, eventsList = Locations.getPairedData(dssFile)

    columns = ("Location", "Event")
    data = []
    for l, e in zip(locationsList, eventsList):
        data.append([l, e])
    dm_events = DefaultTableModel(data, columns)

    eventsTable.setModel(dm_events)
    eventsTable.setAutoCreateRowSorter(True)

    eventsTable.getColumnModel().getColumn(0).setPreferredWidth(154)
    eventsTable.getColumnModel().getColumn(1).setResizable(False)
    eventsTable.getColumnModel().getColumn(1).setPreferredWidth(154)
    eventsTable.setRowSelectionAllowed(True)

    inputPanel = JPanel()
    inputPanel.setBorder(EmptyBorder(0, 0, 0, 0))
    inputPanel.setBackground(Color(255, 255, 255))
    inputPanel.setBounds(270, 11, 410, 27)
    contentPane.add(inputPanel)
    inputPanel.setLayout(None)
    inputPanel.setVisible(True)

    lbl_locations = JLabel(
        "DSS Locations that have PRECIP-INC, TEMPERATURE-AIR-AVG, and SWE. ")
    lbl_locations.setFont(Font("Tahoma", Font.PLAIN, 12))
    lbl_locations.setBounds(0, 11, 410, 15)
    inputPanel.add(lbl_locations)

    btnRecalc = JButton(btnIcon, actionPerformed=recalcBtnSelect)
    btnRecalc.setText("Calculate Paired Data")
    btnRecalc.setFont(Font("Tahoma", Font.BOLD, 12))
    btnRecalc.setForeground(Color.WHITE)
    btnRecalc.setBackground(Color.WHITE)
    btnRecalc.setBorderPainted(False)
    btnRecalc.setContentAreaFilled(False)
    btnRecalc.setFocusPainted(False)
    btnRecalc.setOpaque(True)
    btnRecalc.setVerticalTextPosition(SwingConstants.CENTER)
    btnRecalc.setHorizontalTextPosition(SwingConstants.CENTER)
    btnRecalc.setBounds(382, 293, 165, 54)
    contentPane.add(btnRecalc)

    leftPanel = JPanel()
    leftPanel.setBackground(Color.DARK_GRAY)
    leftPanel.setBounds(0, 0, 250, 780)
    contentPane.add(leftPanel)
    leftPanel.setLayout(None)

    lbl_castle = JLabel("")
    lbl_castle.setBounds(110, 678, 40, 25)
    leftPanel.add(lbl_castle)

    try:
        i_corps = ImageIO.read(File(img_dir + "/CorpsCastle.png"))
    except:
        i_corps = ImageIO.read(File(img_dir2 + "/CorpsCastle.png"))

    corpsCastle = i_corps.getScaledInstance(lbl_castle.getWidth(),
                                            lbl_castle.getHeight(),
                                            Image.SCALE_SMOOTH)

    lbl_castle.setVerticalAlignment(SwingConstants.TOP)
    lbl_castle.setIcon(ImageIcon(corpsCastle))

    lbl_logo = JLabel("")
    lbl_logo.setBounds(18, 294, 218, 148)
    leftPanel.add(lbl_logo)

    try:
        snowLogo = ImageIO.read(File(img_dir + "/melted-snowman.png"))
    except:
        snowLogo = ImageIO.read(File(img_dir2 + "/melted-snowman.png"))

    dssLogo = snowLogo.getScaledInstance(lbl_logo.getWidth(),
                                         lbl_logo.getHeight(),
                                         Image.SCALE_SMOOTH)

    lbl_logo.setVerticalAlignment(SwingConstants.TOP)
    lbl_logo.setIcon(ImageIcon(dssLogo))

    lbl_logo2 = JLabel("")
    lbl_logo2.setBounds(18, 11, 218, 148)
    leftPanel.add(lbl_logo2)

    try:
        snowPacLogo = ImageIO.read(File(img_dir + "/SnowPac.png"))
    except:
        snowPacLogo = ImageIO.read(File(img_dir2 + "/SnowPac.png"))

    snowPac = snowPacLogo.getScaledInstance(lbl_logo2.getWidth(),
                                            lbl_logo2.getHeight(),
                                            Image.SCALE_SMOOTH)

    lbl_logo2.setVerticalAlignment(SwingConstants.TOP)
    lbl_logo2.setIcon(ImageIcon(snowPac))

    #     lbl_close = JLabel("X")
    #
    #     class CloseClickListener(MouseAdapter):
    # #       @Override
    #         def mouseEntered(self):
    #             lbl_close.setBorder(LineBorder.createGrayLineBorder())
    # #       @Override
    #         def mouseExited(self):
    #             lbl_close.setBorder(None)
    # #       @Override
    #         def mouseClicked(self):
    #             lbl_close.setBorder(BorderFactory.createLineBorder(Color.red));
    #             sys.exit();

    #     cL = CloseClickListener()
    #     lbl_close.addMouseListener(cL)
    #
    #     lbl_close.setHorizontalAlignment(SwingConstants.CENTER);
    #     lbl_close.setForeground(Color(241, 57, 83));
    #     lbl_close.setFont(Font("Tahoma", Font.PLAIN, 18));
    #     lbl_close.setBounds(1071, 0, 37, 27);
    #     contentPane.add(lbl_close);

    lblPxf = JLabel("Base Temperature (F):")
    lblPxf.setToolTipText("The temperature at which melt will occur.")
    lblPxf.setFont(Font("Tahoma", Font.PLAIN, 12))
    lblPxf.setBounds(400, 263, 132, 15)
    contentPane.add(lblPxf)

    textField_8 = JTextField()
    textField_8.setFont(Font("Tahoma", Font.PLAIN, 12))
    textField_8.setToolTipText("The temperature at which melt will occur.")
    textField_8.setText("32.0")
    textField_8.setBounds(548, 263, 40, 20)
    contentPane.add(textField_8)
    textField_8.setColumns(10)

    chckbxShowLocationPlot = JCheckBox("Plot Locations")
    chckbxShowLocationPlot.setToolTipText(
        "Will plot the Temp, Precip, SWE, ATI, and Melt for each selected location."
    )
    chckbxShowLocationPlot.setSelected(True)
    chckbxShowLocationPlot.setBackground(Color.WHITE)
    chckbxShowLocationPlot.setFont(Font("Tahoma", Font.PLAIN, 12))
    chckbxShowLocationPlot.setBounds(547, 310, 120, 23)
    contentPane.add(chckbxShowLocationPlot)

    lblEvents = JLabel("Paired Data")
    lblEvents.setBounds(270, 346, 72, 15)
    contentPane.add(lblEvents)
    lblEvents.setFont(Font("Tahoma", Font.PLAIN, 12))

    #     lblAtiThreshold = JLabel("ATI Threshold:");
    #     lblAtiThreshold.setToolTipText("Some Melt Events are small & can be ignored. The ATI Threshold is a value that must be reached for the event to be listed.");
    #     lblAtiThreshold.setFont(Font("Tahoma", Font.PLAIN, 12));
    #     lblAtiThreshold.setBounds(500, 610, 82, 15);
    #     contentPane.add(lblAtiThreshold);

    #     textField_9 = JTextField();
    #     textField_9.setFont(Font("Tahoma", Font.PLAIN, 12));
    #     textField_9.setText("0.0");
    #     textField_9.setToolTipText("Some Melt Events are small & can be ignored. The ATI Threshold is a value that must be reached for the event to be listed.");
    #     textField_9.setColumns(10);
    #     textField_9.setBounds(600, 608, 60, 20);
    #     contentPane.add(textField_9);

    btnPlot = JButton(btnIcon, actionPerformed=plotPDBtnSelect)
    btnPlot.setText("Plot Paired Data")
    btnPlot.setFont(Font("Tahoma", Font.BOLD, 12))
    btnPlot.setForeground(Color.WHITE)
    btnPlot.setBackground(Color.WHITE)
    btnPlot.setBorderPainted(False)
    btnPlot.setContentAreaFilled(False)
    btnPlot.setFocusPainted(False)
    btnPlot.setOpaque(False)
    btnPlot.setVerticalTextPosition(SwingConstants.CENTER)
    btnPlot.setHorizontalTextPosition(SwingConstants.CENTER)
    btnPlot.setBounds(385, 657, 163, 54)
    contentPane.add(btnPlot)

    lblAtimeltrateTable = JLabel("ATI-Meltrate Table")
    lblAtimeltrateTable.setFont(Font("Tahoma", Font.PLAIN, 12))
    lblAtimeltrateTable.setBounds(708, 10, 410, 15)
    contentPane.add(lblAtimeltrateTable)

    lblAtimeltrateTable2 = JLabel(
        "The first ATI value should be 0. ATI values must be ascending.")
    lblAtimeltrateTable2.setFont(Font("Tahoma", Font.PLAIN, 11))
    lblAtimeltrateTable2.setBounds(708, 30, 410, 15)
    contentPane.add(lblAtimeltrateTable2)

    btnCalculateMeltrate = JButton(btnIcon,
                                   actionPerformed=calcMeltRateBtnSelect)
    btnCalculateMeltrate.setText("Calculate Meltrate")
    btnCalculateMeltrate.setFont(Font("Tahoma", Font.BOLD, 12))
    btnCalculateMeltrate.setToolTipText(
        "Calculate Meltrate for ATI values in the ATI-Meltrate Table. Calculation will performed on the Paired Data Records Selected in the Paired Data Table."
    )
    btnCalculateMeltrate.setForeground(Color.WHITE)
    btnCalculateMeltrate.setBackground(Color.WHITE)
    btnCalculateMeltrate.setBorderPainted(False)
    btnCalculateMeltrate.setContentAreaFilled(False)
    btnCalculateMeltrate.setFocusPainted(False)
    btnCalculateMeltrate.setOpaque(False)
    btnCalculateMeltrate.setVerticalTextPosition(SwingConstants.CENTER)
    btnCalculateMeltrate.setHorizontalTextPosition(SwingConstants.CENTER)
    btnCalculateMeltrate.setBounds(792, 657, 163, 54)
    contentPane.add(btnCalculateMeltrate)

    frame.setVisible(True)
    dssFile.close()
Beispiel #39
0
def controlShift(key):
    return KeyStroke.getKeyStroke(keyCode(key), CONTROL_MASK + InputEvent.SHIFT_MASK)
Beispiel #40
0
def keyStroke(key):
    return KeyStroke.getKeyStroke(keyCode(key), 0)