Class SwingGui

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, GuiCallback

    public class SwingGui
    extends javax.swing.JFrame
    implements GuiCallback
    GUI for the Rhino debugger.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JFrame

        javax.swing.JFrame.AccessibleJFrame
      • Nested classes/interfaces inherited from class java.awt.Frame

        java.awt.Frame.AccessibleAWTFrame
      • Nested classes/interfaces inherited from class java.awt.Window

        java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.awt.EventQueue awtEventQueue
      The AWT EventQueue.
      private JSInternalConsole console
      The console that displays I/O from the script.
      private ContextWindow context
      The JPanel that shows information about the context.
      private FileWindow currentWindow
      The FileWindow that last had the focus.
      private javax.swing.JDesktopPane desk
      The JDesktopPane that holds the script windows.
      (package private) Dim dim
      The debugger.
      (package private) javax.swing.JFileChooser dlg
      File choose dialog for loading a script.
      private java.lang.Runnable exitAction
      The action to run when the 'Exit' menu item is chosen or the frame is closed.
      private java.util.Map<java.lang.String,​FileWindow> fileWindows
      Hash table of script URLs to their internal frames.
      private Menubar menubar
      The menu bar.
      private static long serialVersionUID
      Serializable magic number.
      private javax.swing.JSplitPane split1
      The JSplitPane that separates desk from Context.
      private javax.swing.JLabel statusBar
      The status bar.
      private javax.swing.JToolBar toolBar
      The tool bar.
      private java.util.Map<java.lang.String,​javax.swing.JFrame> toplevels
      Hash table of internal frame names to the internal frames themselves.
      • Fields inherited from class javax.swing.JFrame

        accessibleContext, rootPane, rootPaneCheckingEnabled
      • Fields inherited from class java.awt.Frame

        CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
      • Fields inherited from class java.awt.Component

        BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • Fields inherited from interface javax.swing.WindowConstants

        DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
    • Constructor Summary

      Constructors 
      Constructor Description
      SwingGui​(Dim dim, java.lang.String title)
      Creates a new SwingGui.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent e)
      Performs an action from the menu or toolbar.
      (package private) void addTopLevel​(java.lang.String key, javax.swing.JFrame frame)
      Records a new internal frame.
      private java.lang.String chooseFile​(java.lang.String title)
      Displays a JFileChooser and returns the selected filename.
      protected void createFileWindow​(Dim.SourceInfo sourceInfo, int line)
      Creates and shows a new FileWindow for the given source.
      void dispatchNextGuiEvent()
      Processes the next GUI event.
      void enterInterrupt​(Dim.StackFrame lastFrame, java.lang.String threadTitle, java.lang.String alertMessage)
      Called when the interrupt loop has been entered.
      (package private) void enterInterruptImpl​(Dim.StackFrame lastFrame, java.lang.String threadTitle, java.lang.String alertMessage)
      Handles script interruption.
      private void exit()
      Runs the exitAction.
      JSInternalConsole getConsole()
      Returns the debugger console component.
      (package private) FileWindow getFileWindow​(java.lang.String url)
      Returns the FileWindow for the given URL.
      Menubar getMenubar()
      Returns the Menubar of this debugger frame.
      private javax.swing.JInternalFrame getSelectedFrame()
      Returns the current selected internal frame.
      (package private) static java.lang.String getShortName​(java.lang.String url)
      Returns a short version of the given URL.
      private javax.swing.JMenu getWindowMenu()
      Returns the 'Window' menu.
      private void init()
      Constructs the debugger GUI.
      boolean isGuiEventThread()
      Returns whether the current thread is the GUI event thread.
      private java.lang.String readFile​(java.lang.String fileName)
      Reads the file with the given name and returns its contents as a String.
      (package private) void removeWindow​(FileWindow w)
      Closes the given FileWindow.
      void setExitAction​(java.lang.Runnable r)
      Sets the Runnable that will be run when the "Exit" menu item is chosen.
      private void setFilePosition​(FileWindow w, int line)
      Moves the current position in the given FileWindow to the given line.
      (package private) static void setResizeWeight​(javax.swing.JSplitPane pane, double weight)
      Calls JSplitPane.setResizeWeight(double) via reflection.
      void setVisible​(boolean b)
      Sets the visibility of the debugger GUI.
      protected void showFileWindow​(java.lang.String sourceUrl, int lineNumber)
      Shows a FileWindow for the given source, creating it if it doesn't exist yet.
      (package private) void showStopLine​(Dim.StackFrame frame)
      Shows the line at which execution in the given stack frame just stopped.
      private void updateEnabled​(boolean interrupted)
      Enables or disables the menu and tool bars with respect to the state of script execution.
      protected boolean updateFileWindow​(Dim.SourceInfo sourceInfo)
      Update the source text for sourceInfo.
      void updateSourceText​(Dim.SourceInfo sourceInfo)
      Called when the source text for a script has been updated.
      • Methods inherited from class javax.swing.JFrame

        addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
      • Methods inherited from class java.awt.Frame

        addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
      • Methods inherited from class java.awt.Window

        addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, show, toBack, toFront
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.awt.MenuContainer

        getFont, postEvent
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serializable magic number.
        See Also:
        Constant Field Values
      • dim

        Dim dim
        The debugger.
      • exitAction

        private java.lang.Runnable exitAction
        The action to run when the 'Exit' menu item is chosen or the frame is closed.
      • desk

        private javax.swing.JDesktopPane desk
        The JDesktopPane that holds the script windows.
      • context

        private ContextWindow context
        The JPanel that shows information about the context.
      • menubar

        private Menubar menubar
        The menu bar.
      • toolBar

        private javax.swing.JToolBar toolBar
        The tool bar.
      • console

        private JSInternalConsole console
        The console that displays I/O from the script.
      • split1

        private javax.swing.JSplitPane split1
        The JSplitPane that separates desk from Context.
      • statusBar

        private javax.swing.JLabel statusBar
        The status bar.
      • toplevels

        private final java.util.Map<java.lang.String,​javax.swing.JFrame> toplevels
        Hash table of internal frame names to the internal frames themselves.
      • fileWindows

        private final java.util.Map<java.lang.String,​FileWindow> fileWindows
        Hash table of script URLs to their internal frames.
      • dlg

        javax.swing.JFileChooser dlg
        File choose dialog for loading a script.
      • awtEventQueue

        private java.awt.EventQueue awtEventQueue
        The AWT EventQueue. Used for manually pumping AWT events from dispatchNextGuiEvent().
    • Constructor Detail

      • SwingGui

        public SwingGui​(Dim dim,
                        java.lang.String title)
        Creates a new SwingGui.
    • Method Detail

      • getMenubar

        public Menubar getMenubar()
        Returns the Menubar of this debugger frame.
      • setExitAction

        public void setExitAction​(java.lang.Runnable r)
        Sets the Runnable that will be run when the "Exit" menu item is chosen.
      • getConsole

        public JSInternalConsole getConsole()
        Returns the debugger console component.
      • setVisible

        public void setVisible​(boolean b)
        Sets the visibility of the debugger GUI.
        Overrides:
        setVisible in class java.awt.Window
      • addTopLevel

        void addTopLevel​(java.lang.String key,
                         javax.swing.JFrame frame)
        Records a new internal frame.
      • init

        private void init()
        Constructs the debugger GUI.
      • getFileWindow

        FileWindow getFileWindow​(java.lang.String url)
        Returns the FileWindow for the given URL.
      • getShortName

        static java.lang.String getShortName​(java.lang.String url)
        Returns a short version of the given URL.
      • showStopLine

        void showStopLine​(Dim.StackFrame frame)
        Shows the line at which execution in the given stack frame just stopped.
      • showFileWindow

        protected void showFileWindow​(java.lang.String sourceUrl,
                                      int lineNumber)
        Shows a FileWindow for the given source, creating it if it doesn't exist yet. if lineNumber is greater than -1, it indicates the line number to select and display.
        Parameters:
        sourceUrl - the source URL
        lineNumber - the line number to select, or -1
      • createFileWindow

        protected void createFileWindow​(Dim.SourceInfo sourceInfo,
                                        int line)
        Creates and shows a new FileWindow for the given source.
      • updateFileWindow

        protected boolean updateFileWindow​(Dim.SourceInfo sourceInfo)
        Update the source text for sourceInfo. This returns true if a FileWindow for the given source exists and could be updated. Otherwise, this does nothing and returns false.
        Parameters:
        sourceInfo - the source info
        Returns:
        true if a FileWindow for the given source exists and could be updated, false otherwise.
      • setFilePosition

        private void setFilePosition​(FileWindow w,
                                     int line)
        Moves the current position in the given FileWindow to the given line.
      • enterInterruptImpl

        void enterInterruptImpl​(Dim.StackFrame lastFrame,
                                java.lang.String threadTitle,
                                java.lang.String alertMessage)
        Handles script interruption.
      • getWindowMenu

        private javax.swing.JMenu getWindowMenu()
        Returns the 'Window' menu.
      • chooseFile

        private java.lang.String chooseFile​(java.lang.String title)
        Displays a JFileChooser and returns the selected filename.
      • getSelectedFrame

        private javax.swing.JInternalFrame getSelectedFrame()
        Returns the current selected internal frame.
      • updateEnabled

        private void updateEnabled​(boolean interrupted)
        Enables or disables the menu and tool bars with respect to the state of script execution.
      • setResizeWeight

        static void setResizeWeight​(javax.swing.JSplitPane pane,
                                    double weight)
        Calls JSplitPane.setResizeWeight(double) via reflection. For compatibility, since JDK < 1.3 does not have this method.
      • readFile

        private java.lang.String readFile​(java.lang.String fileName)
        Reads the file with the given name and returns its contents as a String.
      • enterInterrupt

        public void enterInterrupt​(Dim.StackFrame lastFrame,
                                   java.lang.String threadTitle,
                                   java.lang.String alertMessage)
        Called when the interrupt loop has been entered.
        Specified by:
        enterInterrupt in interface GuiCallback
      • isGuiEventThread

        public boolean isGuiEventThread()
        Returns whether the current thread is the GUI event thread.
        Specified by:
        isGuiEventThread in interface GuiCallback
      • dispatchNextGuiEvent

        public void dispatchNextGuiEvent()
                                  throws java.lang.InterruptedException
        Processes the next GUI event.
        Specified by:
        dispatchNextGuiEvent in interface GuiCallback
        Throws:
        java.lang.InterruptedException
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent e)
        Performs an action from the menu or toolbar.