ur_rna.StructureEditor

## Class MainFrame

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - java.awt.Window
      - - java.awt.Frame
        - - javax.swing.JFrame
          - - ur_rna.Utilities.swing.MdiParentFrame
            - - ur_rna.StructureEditor.MainFrame

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

      public class MainFrame
      extends MdiParentFrame

  The application's main window, which hosts the menubar, toolbar, statusbar, and the contains the desktop on which child windows are shown.
  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 DashboardFrame` | `dashboard`
    `javax.swing.JDesktopPane` | `desktop`
    `static int` | `EditMenuSection`
    `static int` | `FileMenuSection`
    `static int` | `FormatMenuSection`
    `static int` | `HelpMenuSection`
    `private javax.swing.JLabel` | `infoLabel`
    `private AppLog` | `log`
    `private javax.swing.JMenuBar` | `menuBar`
    `private MergeManager` | `menuMerger`
    `private java.awt.Component[]` | `originalToolbar`
    `private Program` | `program`
    `private RecentFileList` | `recentFiles`
    `private RecentFileMenuManager` | `recentFilesMenu`
    `static int` | `SettingsMenuSection`
    `private javax.swing.JPanel` | `statusBar`
    `private javax.swing.Timer` | `testIconsTimer`
    `private javax.swing.JToolBar` | `toolBar`
    `static int` | `ViewMenuSection`
    `static int` | `WindowsMenuSection`

    - ### 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
    `MainFrame()` Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addChild(MdiChildFrame child)`
    `private void` | `addMainActions()`
    `private void` | `addMainMenu(MergeMenu menu, int mergePos)`
    `void` | `addRecentFile(java.lang.String path, FileType type)`
    `private MergeButton` | `addToolButton(javax.swing.Action a, int mergePos)`
    `private javax.swing.JDesktopPane` | `buildDesktop()` Create the gray back panel that fills the main frame.
    `private javax.swing.JLabel` | `buildInfoLabel()` Create the label at the bottom of the main frame.
    `private javax.swing.JPanel` | `buildStatusBar(javax.swing.JLabel lbl)`
    `private javax.swing.JToolBar` | `buildToolBar()` Build the main RNAstructure toolbar.
    `void` | `cleanRecent(boolean removeAll)`
    `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` | `createMainMenus()`
    `private void` | `createMainToolButtons()`
    `ChildFrame` | `getActiveChild()`
    `DrawWindow` | `getActiveDrawing()`
    `java.util.List<ChildFrame>` | `getChildFrames()`
    `DashboardFrame` | `getDashboard()`
    `protected javax.swing.JDesktopPane` | `getDesktop()`
    `private java.util.prefs.Preferences` | `getRecentFilesNode()`
    `javax.swing.JToolBar` | `getToolBar()` Get the toolbar.
    `javax.swing.JButton` | `getToolBarItem(java.lang.String name)`
    `void` | `hideDashboard()`
    `void` | `internalFrameActivated(javax.swing.event.InternalFrameEvent e)` Invoked when a child frame is activated.
    `void` | `internalFrameClosed(javax.swing.event.InternalFrameEvent e)` Invoked when a child frame has been closed.
    `private void` | `loadRecentFiles()`
    `private void` | `rebuildMainMenu(java.util.Collection<? extends java.awt.Component> custom)`
    `private void` | `rebuildToolBar(java.util.Collection<? extends java.awt.Component> tools)`
    `private void` | `removeMenuMnemonics(java.awt.Component[] list)`
    `private void` | `removeMnemonics(java.util.Collection<? extends java.awt.Component> components)`
    `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.
    `private void` | `settingsChanged()`
    `void` | `show(ChildFrame child)`
    `void` | `show(ChildFrame child, java.awt.Point location)`
    `void` | `showCentered(ChildFrame child)`
    `void` | `showDashboard(boolean force)`
    `private void` | `test()`
    `private void` | `testIcons()`
    `void` | `updateActiveFrameInfo()`
    `private void` | `updateRecentFilesUI()`
    `private void` | `verifyMenuMnemonics(java.awt.Component[] list)`
    `private boolean` | `windowMenuFilter(javax.swing.JInternalFrame frame)` Determines which windows should be listed in the "Windows" menu

    - ### Methods inherited from class ur_rna.Utilities.swing.MdiParentFrame

      `activateChild, addAction, addKeyBinding, addKeyBinding, close, getChildFrames, getMdiChildFrames, internalFrameClosing, internalFrameDeactivated, internalFrameDeiconified, internalFrameIconified, internalFrameOpened`

    - ### 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

    - #### dashboard

          private DashboardFrame dashboard

    - #### 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

    - #### FormatMenuSection

          public static final int FormatMenuSection

      See Also:
        Constant Field Values

    - #### HelpMenuSection

          public static final int HelpMenuSection

      See Also:
        Constant Field Values

    - #### infoLabel

          private final javax.swing.JLabel infoLabel

    - #### log

          private AppLog log

    - #### menuBar

          private final javax.swing.JMenuBar menuBar

    - #### menuMerger

          private MergeManager menuMerger

    - #### originalToolbar

          private java.awt.Component[] originalToolbar

    - #### program

          private final Program program

    - #### recentFiles

          private RecentFileList recentFiles

    - #### recentFilesMenu

          private RecentFileMenuManager recentFilesMenu

    - #### SettingsMenuSection

          public static final int SettingsMenuSection

      See Also:
        Constant Field Values

    - #### statusBar

          private final javax.swing.JPanel statusBar

    - #### testIconsTimer

          private javax.swing.Timer testIconsTimer

    - #### toolBar

          private final javax.swing.JToolBar toolBar

    - #### ViewMenuSection

          public static final int ViewMenuSection

      See Also:
        Constant Field Values

    - #### WindowsMenuSection

          public static final int WindowsMenuSection

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MainFrame

          public MainFrame()

      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

          protected void addChild(MdiChildFrame child)

      Overrides:
        `addChild` in class `MdiParentFrame`

    - #### addMainActions

          private void addMainActions()

    - #### addMainMenu

          private void addMainMenu(MergeMenu menu,
                                   int mergePos)

    - #### addRecentFile

          public void addRecentFile(java.lang.String path,
                                    FileType type)

    - #### addToolButton

          private MergeButton addToolButton(javax.swing.Action a,
                                            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()

      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.

    - #### buildStatusBar

          private javax.swing.JPanel buildStatusBar(javax.swing.JLabel lbl)

    - #### 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.

    - #### cleanRecent

          public void cleanRecent(boolean removeAll)

    - #### 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.

    - #### createMainMenus

          private void createMainMenus()

    - #### createMainToolButtons

          private void createMainToolButtons()

    - #### getActiveChild

          public ChildFrame getActiveChild()

      Overrides:
        `getActiveChild` in class `MdiParentFrame`

    - #### getActiveDrawing

          public DrawWindow getActiveDrawing()

    - #### getChildFrames

          public java.util.List<ChildFrame> getChildFrames()

    - #### getDashboard

          public DashboardFrame getDashboard()

    - #### getDesktop

          protected javax.swing.JDesktopPane getDesktop()

      Specified by:
        `getDesktop` in class `MdiParentFrame`

    - #### getRecentFilesNode

          private java.util.prefs.Preferences getRecentFilesNode()

    - #### getToolBar

          public javax.swing.JToolBar getToolBar()

      Get the toolbar.
      Returns:
        The toolbar.

    - #### getToolBarItem

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

    - #### hideDashboard

          public void hideDashboard()

    - #### internalFrameActivated

          public void internalFrameActivated(javax.swing.event.InternalFrameEvent e)

      Invoked when a child frame is activated.
      Specified by:
        `internalFrameActivated` in interface `javax.swing.event.InternalFrameListener`
      Overrides:
        `internalFrameActivated` in class `MdiParentFrame`
      See Also:
        `JInternalFrame.setSelected(boolean)`

    - #### internalFrameClosed

          public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)

      Invoked when a child frame has been closed.
      Specified by:
        `internalFrameClosed` in interface `javax.swing.event.InternalFrameListener`
      Overrides:
        `internalFrameClosed` in class `MdiParentFrame`
      See Also:
        `JInternalFrame.setClosed(boolean)`

    - #### loadRecentFiles

          private void loadRecentFiles()

    - #### rebuildMainMenu

          private void rebuildMainMenu(java.util.Collection<? extends java.awt.Component> custom)

    - #### rebuildToolBar

          private void rebuildToolBar(java.util.Collection<? extends java.awt.Component> tools)

    - #### removeMenuMnemonics

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

    - #### removeMnemonics

          private void removeMnemonics(java.util.Collection<? extends java.awt.Component> components)

    - #### 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.

    - #### settingsChanged

          private void settingsChanged()

    - #### show

          public void show(ChildFrame child)

    - #### show

          public void show(ChildFrame child,
                           java.awt.Point location)

    - #### showCentered

          public void showCentered(ChildFrame child)

    - #### showDashboard

          public void showDashboard(boolean force)

    - #### test

          private void test()

    - #### testIcons

          private void testIcons()

    - #### updateActiveFrameInfo

          public void updateActiveFrameInfo()

    - #### updateRecentFilesUI

          private void updateRecentFilesUI()

    - #### verifyMenuMnemonics

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

    - #### windowMenuFilter

          private boolean windowMenuFilter(javax.swing.JInternalFrame frame)

      Determines which windows should be listed in the "Windows" menu