weka.gui

## Class PerspectiveManager

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - weka.gui.PerspectiveManager

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

      public class PerspectiveManager
      extends javax.swing.JPanel

  Manages perspectives and the main menu bar (if visible), holds the currently selected perspective, and implements the perspective button bar.
  Version:
    $Revision: $
  Author:
    Mark Hall (mhall{[at]}pentaho{[dot]}com)
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `PerspectiveManager.SelectedPerspectivePreferences` Class to manage user preferences with respect to visible perspectives and whether the perspectives toolbar is always hidden or is visible on application startup

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.BaselineResizeBehavior`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `PERSPECTIVE_INTERFACE` Interface name of perspectives
    `static Settings.SettingKey` | `VISIBLE_PERSPECTIVES_KEY` Settings key for visible perspectives in an application

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

      `TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PerspectiveManager(GUIApplication mainApp, java.lang.String... perspectivePrefixesToAllow)` Constructor
    `PerspectiveManager(GUIApplication mainApp, java.lang.String[] perspectivePrefixesToAllow, java.lang.String[] perspectivePrefixesToDisallow)` Constructor

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSettingsMenuItemToProgramMenu(Settings settings)` Applications can call this to allow access to the settings editor from the program menu (in addition to the toolbar widget that pops up the settings editor)
    `void` | `disableAllPerspectiveTabs()` Disable the tab/button for each visible perspective
    `void` | `enableAllPerspectiveTabs()` Enable the tab/button for each visible perspective
    `java.util.List<Perspective>` | `getLoadedPerspectives()` Get a list of all loaded perspectives.
    `Perspective` | `getMainPerspective()` Get the main application perspective.
    `Perspective` | `getPerspective(java.lang.String ID)` Get the perspective with the given ID
    `javax.swing.JPanel` | `getPerspectiveToolBar()` Get the panel that contains the perspectives toolbar
    `java.util.List<Perspective>` | `getVisiblePerspectives()` Get a list of visible perspectives.
    `boolean` | `perspectiveToolBarIsVisible()` Returns true if the perspective toolbar is visible
    `void` | `setActivePerspective(int theIndex)` Set the active perspective
    `void` | `setActivePerspective(java.lang.String perspectiveID)` Set the active perspective
    `void` | `setEnablePerspectiveTab(java.lang.String perspectiveID, boolean enabled)` Enable/disable a perspective's button/tab
    `void` | `setEnablePerspectiveTabs(java.util.List<java.lang.String> perspectiveIDs, boolean enabled)` Enable/disable the tab/button for each perspective in the supplied list of perspective IDs
    `void` | `setMainApplicationForAllPerspectives()` Set the main application on all perspectives managed by this manager
    `void` | `setPerspectiveToolbarAlwaysHidden(Settings settings)` Set whether the perspectives toolbar should always be hidden.
    `void` | `setPerspectiveToolBarIsVisible(boolean v)`
    `void` | `showMenuBar(javax.swing.JFrame topLevelAncestor)` Tell the perspective manager to show the menu bar
    `boolean` | `userRequestedPerspectiveToolbarVisibleOnStartup(Settings settings)` Returns true if the user has requested that the perspective toolbar is visible when the application starts up

    - ### Methods inherited from class javax.swing.JPanel

      `getAccessibleContext, getUI, getUIClassID, setUI, updateUI`

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### PERSPECTIVE_INTERFACE

          public static final java.lang.String PERSPECTIVE_INTERFACE

      Interface name of perspectives

    - #### VISIBLE_PERSPECTIVES_KEY

          public static final Settings.SettingKey VISIBLE_PERSPECTIVES_KEY

      Settings key for visible perspectives in an application

  - ### Constructor Detail

    - #### PerspectiveManager

          public PerspectiveManager(GUIApplication mainApp,
                                    java.lang.String... perspectivePrefixesToAllow)

      Constructor
      Parameters:
        `mainApp` - the application that owns this perspective manager
        `perspectivePrefixesToAllow` - a list of perspective class name prefixes that are to be allowed in this perspective manager. Any perspectives not covered by this list are ignored. An empty list means allow all.

    - #### PerspectiveManager

          public PerspectiveManager(GUIApplication mainApp,
                                    java.lang.String[] perspectivePrefixesToAllow,
                                    java.lang.String[] perspectivePrefixesToDisallow)

      Constructor
      Parameters:
        `mainApp` - the application that owns this perspective manager
        `perspectivePrefixesToAllow` - a list of perspective class name prefixes that are to be allowed in this perspective manager. Any perspectives not covered by this list are ignored. An empty list means allow all.
        `perspectivePrefixesToDisallow` - a list of perspective class name prefixes that are disallowed in this perspective manager. Any matches in this list are prevented from appearing in this perspective manager. Overrides a successful match in the allowed list. This enables fine-grained exclusion of perspectives (e.g. allowed might specify all perspectives in weka.gui.funky, while disallowed vetoes just weka.gui.funky.NonFunkyPerspective.)

  - ### Method Detail

    - #### setMainApplicationForAllPerspectives

          public void setMainApplicationForAllPerspectives()

      Set the main application on all perspectives managed by this manager

    - #### setPerspectiveToolbarAlwaysHidden

          public void setPerspectiveToolbarAlwaysHidden(Settings settings)

      Set whether the perspectives toolbar should always be hidden. This allows just menu-based access to the perspectives and their settings
      Parameters:
        `settings` - the settings object to set this property on

    - #### addSettingsMenuItemToProgramMenu

          public void addSettingsMenuItemToProgramMenu(Settings settings)

      Applications can call this to allow access to the settings editor from the program menu (in addition to the toolbar widget that pops up the settings editor)
      Parameters:
        `settings` - the settings object for the application

    - #### setActivePerspective

          public void setActivePerspective(int theIndex)

      Set the active perspective
      Parameters:
        `theIndex` - the index of the perspective to make the active one

    - #### setActivePerspective

          public void setActivePerspective(java.lang.String perspectiveID)

      Set the active perspective
      Parameters:
        `perspectiveID` - the ID of the perspective to make the active one

    - #### getLoadedPerspectives

          public java.util.List<Perspective> getLoadedPerspectives()

      Get a list of all loaded perspectives. I.e. all perspectives that this manager knows about. Note that this list does not include the main application perspective - use getMainPerspective() to retrieve this.
      Returns:
        a list of all loaded (but not necessary visible) perspectives

    - #### getVisiblePerspectives

          public java.util.List<Perspective> getVisiblePerspectives()

      Get a list of visible perspectives. I.e. those that are available to be selected in the perspective toolbar
      Returns:
        a list of visible perspectives

    - #### getPerspectiveToolBar

          public javax.swing.JPanel getPerspectiveToolBar()

      Get the panel that contains the perspectives toolbar
      Returns:
        the panel that contains the perspecitves toolbar

    - #### disableAllPerspectiveTabs

          public void disableAllPerspectiveTabs()

      Disable the tab/button for each visible perspective

    - #### enableAllPerspectiveTabs

          public void enableAllPerspectiveTabs()

      Enable the tab/button for each visible perspective

    - #### setEnablePerspectiveTabs

          public void setEnablePerspectiveTabs(java.util.List<java.lang.String> perspectiveIDs,
                                               boolean enabled)

      Enable/disable the tab/button for each perspective in the supplied list of perspective IDs
      Parameters:
        `perspectiveIDs` - the list of perspective IDs
        `enabled` - true or false to enable or disable the perspective buttons

    - #### setEnablePerspectiveTab

          public void setEnablePerspectiveTab(java.lang.String perspectiveID,
                                              boolean enabled)

      Enable/disable a perspective's button/tab
      Parameters:
        `perspectiveID` - the ID of the perspective to enable/disable
        `enabled` - true or false to enable or disable

    - #### perspectiveToolBarIsVisible

          public boolean perspectiveToolBarIsVisible()

      Returns true if the perspective toolbar is visible
      Returns:
        true if the perspective toolbar is visible

    - #### setPerspectiveToolBarIsVisible

          public void setPerspectiveToolBarIsVisible(boolean v)

    - #### getMainPerspective

          public Perspective getMainPerspective()

      Get the main application perspective. This is the perspective that is visible on startup of the application and is usually the entry point for the application.
      Returns:
        the main perspective

    - #### getPerspective

          public Perspective getPerspective(java.lang.String ID)

      Get the perspective with the given ID
      Parameters:
        `ID` - the ID of the perspective to get
      Returns:
        the perspective, or null if there is no perspective with the supplied ID

    - #### showMenuBar

          public void showMenuBar(javax.swing.JFrame topLevelAncestor)

      Tell the perspective manager to show the menu bar
      Parameters:
        `topLevelAncestor` - the owning application's Frame

    - #### userRequestedPerspectiveToolbarVisibleOnStartup

          public boolean userRequestedPerspectiveToolbarVisibleOnStartup(Settings settings)

      Returns true if the user has requested that the perspective toolbar is visible when the application starts up
      Parameters:
        `settings` - the settings object for the application
      Returns:
        true if the user has specified that the perspective toolbar should be visible when the application first starts up