ur_rna.RNAstructureUI

## Class AppMainFrame

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - java.awt.Window
      - - java.awt.Frame
        - - javax.swing.JFrame
          - - ur_rna.RNAstructureUI.AppMainFrame

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

      public class AppMainFrame
      extends javax.swing.JFrame

  A class that creates the application frame of the RNAstructure GUI.
  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 and Description
    --- | ---
    `private static AppMainFrame` | `activeRoot`
    `javax.swing.JDesktopPane` | `desktop`
    `static int` | `EditMenuSection`
    `static int` | `FileMenuSection`
    `protected javax.swing.event.InternalFrameListener` | `frameListener`
    `static int` | `HelpMenuSection`
    `private javax.swing.JLabel` | `infoLabel`
    `java.util.function.Consumer<java.lang.String>` | `InfoLabelConsumer`
    `private java.awt.Component[]` | `keepToolBarItems`
    `private AppLog` | `log`
    `private MenuList` | `mainMenus`
    `private javax.swing.JMenuBar` | `menuBar`
    `private MergeManager` | `menuMerger`
    `static int` | `NucleicAcidMenuSection`
    `static int` | `PredictMenuSection`
    `private static long` | `serialVersionUID`
    `private javax.swing.JPanel` | `statusBar`
    `private javax.swing.JToolBar` | `toolBar`
    `private static boolean` | `useSimpleFileChooser`

    - ### Fields inherited from class javax.swing.JFrame

      `accessibleContext, EXIT_ON_CLOSE, 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 javax.swing.WindowConstants

      `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AppMainFrame()` Constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChild(javax.swing.JInternalFrame window)`
    `private void` | `addMainMenu(MergeMenu menu, int mergePos)`
    `private javax.swing.JDesktopPane` | `buildDesktop()` Create the gray back panel that fills the main frame.
    `private javax.swing.JLabel` | `buildInfoLabel(javax.swing.JComponent parent)` Create the label at the bottom of the main frame.
    `private MenuList` | `buildMainMenu()`
    `private javax.swing.JPanel` | `buildStatusBar()`
    `private javax.swing.JToolBar` | `buildToolBar()` Build the main RNAstructure toolbar.
    `private void` | `convertTooltipsToRollovers(javax.swing.JMenuItem item)`
    `private void` | `copyAction(javax.swing.AbstractButton source, javax.swing.AbstractButton destination)` Copy the ActionCommand and ActionListener from the source to the destination AbstractButton
    `private void` | `copyAction(java.lang.String menuItemName, javax.swing.AbstractButton destination)` Copy the ActionCommand and ActionListener from an existing menu item.
    `private void` | `createToolbar(javax.swing.JToolBar bar)`
    `static AppMainFrame` | `getAppRoot()` Get the top frame of the application.
    `static AppMainFrame` | `getFrame()`
    `javax.swing.JMenuBar` | `getMainMenu()`
    `MenuList` | `getMenus()`
    `InternalWindow` | `getMostRecentFrame()` Get the most recent internal frame in the application.
    `javax.swing.JToolBar` | `getToolBar()` Get the toolbar.
    `javax.swing.JButton` | `getToolBarItem(java.lang.String name)`
    `static boolean` | `getUseSimpleFileChooser()`
    `private void` | `rebuildMainMenu(MenuList custom)`
    `private void` | `rebuildToolBar()`
    `private void` | `removeMenuMnemonics(java.awt.Component[] list)`
    `void` | `resetInfoLabel()` Reset the info bar at the bottom of the main window to its default.
    `void` | `setInfoLabel(java.lang.String text)` Set the info bar at the bottom of the main window to contain the specified text.
    `static void` | `setUseSimpleFileChooser(boolean value)`
    `void` | `showAboutWindow()`
    `private void` | `showStartupInfo()`
    `void` | `updateActiveFrameInfo()`
    `private void` | `verifyMenuMnemonics(java.awt.Component[] list)`

    - ### 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, getPeer, 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, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, 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

    - #### activeRoot

          private static AppMainFrame activeRoot

    - #### desktop

          public final javax.swing.JDesktopPane desktop

    - #### EditMenuSection

          public static final int EditMenuSection

      See Also:
        Constant Field Values

    - #### FileMenuSection

          public static final int FileMenuSection

      See Also:
        Constant Field Values

    - #### frameListener

          protected javax.swing.event.InternalFrameListener frameListener

    - #### HelpMenuSection

          public static final int HelpMenuSection

      See Also:
        Constant Field Values

    - #### infoLabel

          private final javax.swing.JLabel infoLabel

    - #### InfoLabelConsumer

          public java.util.function.Consumer<java.lang.String> InfoLabelConsumer

    - #### keepToolBarItems

          private java.awt.Component[] keepToolBarItems

    - #### log

          private final AppLog log

    - #### mainMenus

          private MenuList mainMenus

    - #### menuBar

          private final javax.swing.JMenuBar menuBar

    - #### menuMerger

          private MergeManager menuMerger

    - #### NucleicAcidMenuSection

          public static final int NucleicAcidMenuSection

      See Also:
        Constant Field Values

    - #### PredictMenuSection

          public static final int PredictMenuSection

      See Also:
        Constant Field Values

    - #### serialVersionUID

          private static final long serialVersionUID

      See Also:
        Constant Field Values

    - #### statusBar

          private final javax.swing.JPanel statusBar

    - #### toolBar

          private final javax.swing.JToolBar toolBar

    - #### useSimpleFileChooser

          private static boolean useSimpleFileChooser

  - ### Constructor Detail

    - #### AppMainFrame

          public AppMainFrame()

      Constructor. Create the frame, set the icon and layout, add the toolbar, back panel, and info label, add a focus listener that shows the default menus, then set the size and location before setting the frame to be visible.

  - ### Method Detail

    - #### addChild

          public void addChild(javax.swing.JInternalFrame window)

    - #### addMainMenu

          private void addMainMenu(MergeMenu menu,
                                   int mergePos)

    - #### buildDesktop

          private javax.swing.JDesktopPane buildDesktop()

      Create the gray back panel that fills the main frame.
      Returns:
        The back panel.

    - #### buildInfoLabel

          private javax.swing.JLabel buildInfoLabel(javax.swing.JComponent parent)

      Create the label at the bottom of the main frame.
      This informative label holds helpful messages about modules or actions that can be taken by the user.

    - #### buildMainMenu

          private MenuList buildMainMenu()

    - #### buildStatusBar

          private javax.swing.JPanel buildStatusBar()

    - #### buildToolBar

          private javax.swing.JToolBar buildToolBar()

      Build the main RNAstructure toolbar.
      Note that adding the same action listeners to the buttons as their corresponding menu items uses some hard-coded numbers, so if the order of the menu items or tool bar items needs to be changed, those numbers (indexes) might need to be changed too.

    - #### convertTooltipsToRollovers

          private void convertTooltipsToRollovers(javax.swing.JMenuItem item)

    - #### copyAction

          private void copyAction(javax.swing.AbstractButton source,
                                  javax.swing.AbstractButton destination)

      Copy the ActionCommand and ActionListener from the source to the destination AbstractButton
      Parameters:
        `source` - The AbstractButton (e.g. menu item) from which the existing action will be copied.
        `destination` - The AbstractButton (e.g. toolbar button) to which the existing action will be copied.

    - #### copyAction

          private void copyAction(java.lang.String menuItemName,
                                  javax.swing.AbstractButton destination)

      Copy the ActionCommand and ActionListener from an existing menu item.
      Parameters:
        `menuItemName` - The name or title of the existing menu item.
        `destination` - The AbstractButton (e.g. toolbar button) to which the existing action will be copied.

    - #### createToolbar

          private void createToolbar(javax.swing.JToolBar bar)

    - #### getAppRoot

          @NotNull
          public static AppMainFrame getAppRoot()

      Get the top frame of the application.
      Returns:
        The top frame.

    - #### getFrame

          public static AppMainFrame getFrame()

    - #### getMainMenu

          public javax.swing.JMenuBar getMainMenu()

    - #### getMenus

          public MenuList getMenus()

    - #### getMostRecentFrame

          public InternalWindow getMostRecentFrame()

      Get the most recent internal frame in the application.
      Returns:
        The top frame, or null if no frame exists.

    - #### getToolBar

          public javax.swing.JToolBar getToolBar()

      Get the toolbar.
      Returns:
        The toolbar.

    - #### getToolBarItem

          public javax.swing.JButton getToolBarItem(java.lang.String name)

    - #### getUseSimpleFileChooser

          public static boolean getUseSimpleFileChooser()

    - #### rebuildMainMenu

          private void rebuildMainMenu(MenuList custom)

    - #### rebuildToolBar

          private void rebuildToolBar()

    - #### removeMenuMnemonics

          private void removeMenuMnemonics(java.awt.Component[] list)

    - #### resetInfoLabel

          public void resetInfoLabel()

      Reset the info bar at the bottom of the main window to its default.

    - #### setInfoLabel

          public void setInfoLabel(java.lang.String text)

      Set the info bar at the bottom of the main window to contain the specified text.
      Parameters:
        `text` - The text to set on the info bar.

    - #### setUseSimpleFileChooser

          public static void setUseSimpleFileChooser(boolean value)

    - #### showAboutWindow

          public void showAboutWindow()

    - #### showStartupInfo

          private void showStartupInfo()

    - #### updateActiveFrameInfo

          public void updateActiveFrameInfo()

    - #### verifyMenuMnemonics

          private void verifyMenuMnemonics(java.awt.Component[] list)