Class ThumbelinaFrame

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

    public class ThumbelinaFrame
    extends javax.swing.JFrame
    implements java.awt.event.WindowListener, java.awt.event.ActionListener, java.awt.event.ItemListener, java.beans.PropertyChangeListener
    Encapsulate a Thumbelina bean and add menu and preferences support. Provides a JFrame base in which to place a Thumbelina bean, and adds a menu system with MRU (Most Recently Used) list. Also provides a Google search capability. Will eventually provide Javahelp too.
    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
      protected javax.swing.JMenuItem mAbout
      About menu item.
      protected javax.swing.JMenuItem mClear
      Clear menu item
      protected javax.swing.JMenu mCommand
      Vommand menu.
      protected javax.swing.JMenuItem mExit
      Exit menu item.
      protected javax.swing.JMenuItem mGoogle
      Google menu item.
      protected javax.swing.JMenu mHelp
      Help submenu.
      protected javax.swing.JCheckBoxMenuItem mHistoryVisible
      History list visible menu item.
      protected javax.swing.JMenuBar mMenu
      Main menu.
      protected javax.swing.JMenuItem mOpen
      Open menu item.
      protected javax.swing.JMenuItem mReset
      Reset menu item.
      protected javax.swing.JSeparator mSeparator1
      MRU list separator #1.
      protected javax.swing.JSeparator mSeparator2
      MRU list separator #2.
      protected javax.swing.JCheckBoxMenuItem mStatusVisible
      Status bar visible menu item.
      protected javax.swing.JMenu mURL
      URL submenu.
      protected javax.swing.JMenu mView
      View submenu.
      • 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
      ThumbelinaFrame()
      Construct a new Thumbelina frame with an idle Thumbelina.
      ThumbelinaFrame​(java.lang.String url)
      Construct a new Thumbelina frame with a Thumbelina primed with one URL.
      ThumbelinaFrame​(java.net.URL url)
      Construct a new Thumbelina frame with a Thumbelina primed with one URL.
      ThumbelinaFrame​(Thumbelina thumbelina)
      Construct a new Thumbelina frame with a given Thumbelina.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void about()
      Display information about Thumbelina.
      void actionPerformed​(java.awt.event.ActionEvent actionEvent)
      Handles events from the menu.
      void exit()
      Exits the application.
      protected java.awt.Rectangle fromString​(java.lang.String value)
      Convert the given string to a valid rectangle.
      Thumbelina getThumbelina()
      Access the Thumbelina object contained in the frame.
      void googlesearch()
      Query google via user specified keywords and queue results.
      void initSize()
      Sets the frame size if no previous preference has been stored.
      void initState()
      Initialize the user preferences.
      void itemStateChanged​(java.awt.event.ItemEvent event)
      Handles selections on the view state checkboxes.
      static void main​(java.lang.String[] args)
      Alternate mainline for Thumbelina.
      void makeMenu()
      Create the menu.
      void open()
      Opens a user specified URL.
      void propertyChange​(java.beans.PropertyChangeEvent event)
      Handle a property change.
      void restoreSize()
      Restores the window size based on stored preferences.
      void saveState()
      Saves the current settings in the user preferences.
      protected java.lang.String toString​(java.awt.Rectangle r)
      Converts the rectangle to a string.
      void updateMenu()
      Adjusts the menu, by inserting the current MRU list.
      void updateMRU​(java.lang.String url)
      Updates the user preferences based on the most recently used list.
      void windowActivated​(java.awt.event.WindowEvent event)
      Invoked when the window is set to be the user's active window, which means the window (or one of its subcomponents) will receive keyboard events.
      void windowClosed​(java.awt.event.WindowEvent event)
      Invoked when a window has been closed as the result of calling dispose on the window.
      void windowClosing​(java.awt.event.WindowEvent event)
      Handles window closing event.
      void windowDeactivated​(java.awt.event.WindowEvent event)
      Invoked when a window is no longer the user's active window, which means that keyboard events will no longer be delivered to the window or its subcomponents.
      void windowDeiconified​(java.awt.event.WindowEvent event)
      Invoked when a window is changed from a minimized to a normal state.
      void windowIconified​(java.awt.event.WindowEvent event)
      Invoked when a window is changed from a normal to a minimized state.
      void windowOpened​(java.awt.event.WindowEvent event)
      Invoked the first time a window is made visible.
      • 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, setVisible, 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

      • mMenu

        protected javax.swing.JMenuBar mMenu
        Main menu.
      • mURL

        protected javax.swing.JMenu mURL
        URL submenu.
      • mOpen

        protected javax.swing.JMenuItem mOpen
        Open menu item.
      • mGoogle

        protected javax.swing.JMenuItem mGoogle
        Google menu item.
      • mSeparator1

        protected javax.swing.JSeparator mSeparator1
        MRU list separator #1.
      • mSeparator2

        protected javax.swing.JSeparator mSeparator2
        MRU list separator #2.
      • mExit

        protected javax.swing.JMenuItem mExit
        Exit menu item.
      • mView

        protected javax.swing.JMenu mView
        View submenu.
      • mStatusVisible

        protected javax.swing.JCheckBoxMenuItem mStatusVisible
        Status bar visible menu item.
      • mHistoryVisible

        protected javax.swing.JCheckBoxMenuItem mHistoryVisible
        History list visible menu item.
      • mCommand

        protected javax.swing.JMenu mCommand
        Vommand menu.
      • mReset

        protected javax.swing.JMenuItem mReset
        Reset menu item.
      • mClear

        protected javax.swing.JMenuItem mClear
        Clear menu item
      • mHelp

        protected javax.swing.JMenu mHelp
        Help submenu.
      • mAbout

        protected javax.swing.JMenuItem mAbout
        About menu item.
    • Constructor Detail

      • ThumbelinaFrame

        public ThumbelinaFrame()
        Construct a new Thumbelina frame with an idle Thumbelina.
      • ThumbelinaFrame

        public ThumbelinaFrame​(java.lang.String url)
                        throws java.net.MalformedURLException
        Construct a new Thumbelina frame with a Thumbelina primed with one URL.
        Parameters:
        url - The URL to prime the Thumbelina with.
        Throws:
        java.net.MalformedURLException - If the given string doesn't represent a valid url.
      • ThumbelinaFrame

        public ThumbelinaFrame​(java.net.URL url)
        Construct a new Thumbelina frame with a Thumbelina primed with one URL.
        Parameters:
        url - The URL to prime the Thumbelina with.
      • ThumbelinaFrame

        public ThumbelinaFrame​(Thumbelina thumbelina)
        Construct a new Thumbelina frame with a given Thumbelina.
        Parameters:
        thumbelina - The Thumbelina to encapsulate.
    • Method Detail

      • getThumbelina

        public Thumbelina getThumbelina()
        Access the Thumbelina object contained in the frame.
        Returns:
        The Thumbelina bean.
      • initState

        public void initState()
        Initialize the user preferences. Reads from the existing user preferences, or initializes values from the bean directly if they don't exist. Sets the state of the view checkboxes to match.
      • saveState

        public void saveState()
        Saves the current settings in the user preferences. By default this writes to the thumbelina subdirectory under .java in the users home directory.
      • initSize

        public void initSize()
        Sets the frame size if no previous preference has been stored. It creates a window covering all but BORDERPERCENT margins.
      • restoreSize

        public void restoreSize()
        Restores the window size based on stored preferences. If no preferences exist, it calls initSize().
      • toString

        protected java.lang.String toString​(java.awt.Rectangle r)
        Converts the rectangle to a string. The rectangle is converted into a string that is of the form
         [x,y,width,height].
         
        Parameters:
        r - The rectangle containing the window position and size, as returned by getBounds().
        Returns:
        The string equivalent of the rectangle.
      • fromString

        protected java.awt.Rectangle fromString​(java.lang.String value)
                                         throws java.lang.IllegalArgumentException
        Convert the given string to a valid rectangle. The string is converted to a Rectangle.
        Parameters:
        value - The value to parse.
        Returns:
        Returns the rectangle extracted from the string.
        Throws:
        java.lang.IllegalArgumentException - if the format does not match the form "[x,y,width,height]" with all values integers.
      • makeMenu

        public void makeMenu()
        Create the menu. Initializes the menu and adds it to the frame.
      • updateMenu

        public void updateMenu()
        Adjusts the menu, by inserting the current MRU list. Removes the old MRU (Most Recently Used) items and inserts new ones betweeen the two separators.
      • windowOpened

        public void windowOpened​(java.awt.event.WindowEvent event)
        Invoked the first time a window is made visible. Not used.
        Specified by:
        windowOpened in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowClosing

        public void windowClosing​(java.awt.event.WindowEvent event)
        Handles window closing event. Performs function exitApplication().
        Specified by:
        windowClosing in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowClosed

        public void windowClosed​(java.awt.event.WindowEvent event)
        Invoked when a window has been closed as the result of calling dispose on the window. Not used.
        Specified by:
        windowClosed in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowIconified

        public void windowIconified​(java.awt.event.WindowEvent event)
        Invoked when a window is changed from a normal to a minimized state. For many platforms, a minimized window is displayed as the icon specified in the window's iconImage property. Not used.
        Specified by:
        windowIconified in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowDeiconified

        public void windowDeiconified​(java.awt.event.WindowEvent event)
        Invoked when a window is changed from a minimized to a normal state. Not used.
        Specified by:
        windowDeiconified in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowActivated

        public void windowActivated​(java.awt.event.WindowEvent event)
        Invoked when the window is set to be the user's active window, which means the window (or one of its subcomponents) will receive keyboard events. Not used.
        Specified by:
        windowActivated in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • windowDeactivated

        public void windowDeactivated​(java.awt.event.WindowEvent event)
        Invoked when a window is no longer the user's active window, which means that keyboard events will no longer be delivered to the window or its subcomponents. Not used.
        Specified by:
        windowDeactivated in interface java.awt.event.WindowListener
        Parameters:
        event - The window event.
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent actionEvent)
        Handles events from the menu. Based on the action of the event, executes the necessary subroutine.
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
        Parameters:
        actionEvent - The event describing the user action.
      • itemStateChanged

        public void itemStateChanged​(java.awt.event.ItemEvent event)
        Handles selections on the view state checkboxes.
        Specified by:
        itemStateChanged in interface java.awt.event.ItemListener
        Parameters:
        event - The event describing the checkbox affected.
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent event)
        Handle a property change.
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener
        Parameters:
        event - The property old and new values.
      • updateMRU

        public void updateMRU​(java.lang.String url)
        Updates the user preferences based on the most recently used list.
        Parameters:
        url - The URL that is to be placed at the top of the MRU list.
      • open

        public void open()
        Opens a user specified URL.
      • googlesearch

        public void googlesearch()
        Query google via user specified keywords and queue results. Asks the user for keywords, and then submits them as input to the usual google form:
         
         
         • Advanced Search
         • Preferences
         • Language Tools
        Search:
        Creates a query of the form:
         http://www.google.ca/search?hl=en&ie=UTF-8&oe=UTF-8&q=thumbs&btnG=Google+Search&meta=
         
      • about

        public void about()
        Display information about Thumbelina.
      • exit

        public void exit()
        Exits the application. Saves user preferences before exiting.
      • main

        public static void main​(java.lang.String[] args)
        Alternate mainline for Thumbelina. Similar code exists in the Thumbelina class, but this version doesn't worry about java version.
        Parameters:
        args - The command line arguments. Optionally, arg[0] can be the URL to preload the Thumeblina bean with.