Class MainKFPerspective

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

    @PerspectiveInfo(ID="knowledgeflow.main",
                     title="Data mining processes",
                     toolTipText="Data mining processes",
                     iconPath="weka/gui/weka_icon_new_small.png")
    public class MainKFPerspective
    extends AbstractPerspective
    Main perspective for the Knowledge flow application
    Author:
    Mark Hall
    See Also:
    Serialized Form
    • Nested Class Summary

      • 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 Description
      static java.lang.String FILE_EXTENSION_JSON
      File extension for undo point files
      static java.lang.String FLOW_PARENT_DIRECTORY_VARIABLE_KEY
      Key for the environment variable that holds the parent directory of a loaded flow
      • 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 Description
      MainKFPerspective()
      Construct a new MainKFPerspective
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean acceptsInstances()
      Returns true if this perspective can do something meaningful with a set of instances
      void addTab​(java.lang.String tabTitle)
      Add a new titled tab to the UI
      void addUntitledTab()
      Add a new untitled tab to the UI
      void clearDesignPaletteSelection()
      Clear the current selection in the design palette
      void closeAllTabs()
      Close all the open tabs
      void copyFlowToClipboard​(Flow flow)  
      void copyStepsToClipboard​(java.util.List<StepVisual> steps)
      Copy the supplied steps to the clipboard
      boolean getAllowMultipleTabs()
      Returns true if the perspective is allowing multiple tabs to be open
      VisibleLayout getCurrentLayout()
      Get the flow layout for the current (visible) tab
      int getCurrentTabIndex()
      Get the index of the current (visible) tab
      boolean getDebug()  
      Defaults getDefaultSettings()
      Get the default settings for this perspective (or null if there are none)
      VisibleLayout getLayoutAt​(int index)
      Get the flow layout at the supplied index
      MainKFPerspectiveToolBar getMainToolBar()
      Get the main toolbar
      java.util.List<javax.swing.JMenu> getMenus()
      Get an ordered list of menus to appear in the main menu bar.
      int getNumTabs()
      Get the number of open tabs
      StepManagerImpl getPalleteSelectedStep()
      Return the currently selected step in the design palette
      java.lang.String getPasteBuffer()
      Get the contents of the paste buffer
      <T> T getSetting​(Settings.SettingKey propKey, T defaultVal)
      Get the value of a setting for the main perspective
      boolean getSnapToGrid()
      Return true if the snap-to-grid button is selected
      java.lang.String getTabTitle​(int index)
      Get the title of the tab at the supplied index
      TemplateManager getTemplateManager()
      Get the template manager
      boolean isMemoryLow()
      Return true if memory is running low
      void loadLayout()
      Load a flow layout.
      void loadLayout​(java.io.File fFile, boolean newTab)
      Load a flow layout.
      void notifyIsDirty()  
      boolean okToBeActive()
      Returns true if this perspective is OK with being an active perspective - i.e.
      void removeTab​(int tabIndex)
      Remove/close a tab
      void setActive​(boolean active)
      Set active status of this perspective.
      void setActiveTab​(int tabIndex)
      Set the active (visible) tab
      void setAllowMultipleTabs​(boolean allow)
      Set whether multiple tabs are allowed
      void setCurrentTabTitleEditedStatus​(boolean edited)
      Set the edited status for the current (visible) tab
      void setFlowLayoutOperation​(weka.gui.knowledgeflow.VisibleLayout.LayoutOperation opp)
      Set the current flow layout operation
      void setInstances​(Instances instances)
      Set instances (if this perspective can use them)
      void settingsChanged()
      Called when the user alters settings.
      void showErrorDialog​(java.lang.Exception cause)
      Popup an error dialog
      void showInfoDialog​(java.lang.Object information, java.lang.String title, boolean isWarning)
      Popup an information dialog
      boolean showMemoryIsLow()
      Print a warning if memory is low (and show a GUI dialog if running in a graphical environment)
      • 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, 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, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • FLOW_PARENT_DIRECTORY_VARIABLE_KEY

        public static final java.lang.String FLOW_PARENT_DIRECTORY_VARIABLE_KEY
        Key for the environment variable that holds the parent directory of a loaded flow
        See Also:
        Constant Field Values
      • FILE_EXTENSION_JSON

        public static final java.lang.String FILE_EXTENSION_JSON
        File extension for undo point files
        See Also:
        Constant Field Values
    • Constructor Detail

      • MainKFPerspective

        public MainKFPerspective()
        Construct a new MainKFPerspective
    • Method Detail

      • getPalleteSelectedStep

        public StepManagerImpl getPalleteSelectedStep()
        Return the currently selected step in the design palette
        Returns:
        the step selected in the design palette, or null if no step is selected
      • showErrorDialog

        public void showErrorDialog​(java.lang.Exception cause)
        Popup an error dialog
        Parameters:
        cause - the exception associated with the error
      • showInfoDialog

        public void showInfoDialog​(java.lang.Object information,
                                   java.lang.String title,
                                   boolean isWarning)
        Popup an information dialog
        Parameters:
        information - the information to display
        title - the title for the dialog
        isWarning - true if the dialog should be a warning dialog
      • setFlowLayoutOperation

        public void setFlowLayoutOperation​(weka.gui.knowledgeflow.VisibleLayout.LayoutOperation opp)
        Set the current flow layout operation
        Parameters:
        opp - the operation to use
      • getSnapToGrid

        public boolean getSnapToGrid()
        Return true if the snap-to-grid button is selected
        Returns:
        true if snap-to-grid is turned on
      • clearDesignPaletteSelection

        public void clearDesignPaletteSelection()
        Clear the current selection in the design palette
      • getPasteBuffer

        public java.lang.String getPasteBuffer()
        Get the contents of the paste buffer
        Returns:
        the contents of the paste buffer (in JSON)
      • copyStepsToClipboard

        public void copyStepsToClipboard​(java.util.List<StepVisual> steps)
                                  throws WekaException
        Copy the supplied steps to the clipboard
        Parameters:
        steps - a list of steps to copy
        Throws:
        WekaException - if a problem occurs
      • getTemplateManager

        public TemplateManager getTemplateManager()
        Get the template manager
        Returns:
        the template manager
      • addUntitledTab

        public void addUntitledTab()
        Add a new untitled tab to the UI
      • addTab

        public void addTab​(java.lang.String tabTitle)
        Add a new titled tab to the UI
        Parameters:
        tabTitle - the title for the tab
      • setCurrentTabTitleEditedStatus

        public void setCurrentTabTitleEditedStatus​(boolean edited)
        Set the edited status for the current (visible) tab
        Parameters:
        edited - true if the flow in the tab has been edited (but not saved)
      • getCurrentTabIndex

        public int getCurrentTabIndex()
        Get the index of the current (visible) tab
        Returns:
        the index of the visible tab
      • getNumTabs

        public int getNumTabs()
        Get the number of open tabs
        Returns:
        the number of open tabs
      • getTabTitle

        public java.lang.String getTabTitle​(int index)
        Get the title of the tab at the supplied index
        Parameters:
        index - the index of the tab to get the title for
        Returns:
        the title of the tab
        Throws:
        java.lang.IndexOutOfBoundsException - if the index is out of range
      • setActiveTab

        public void setActiveTab​(int tabIndex)
        Set the active (visible) tab
        Parameters:
        tabIndex - the index of the tab to make active
      • closeAllTabs

        public void closeAllTabs()
        Close all the open tabs
      • removeTab

        public void removeTab​(int tabIndex)
        Remove/close a tab
        Parameters:
        tabIndex - the index of the tab to close
      • getCurrentLayout

        public VisibleLayout getCurrentLayout()
        Get the flow layout for the current (visible) tab
        Returns:
        the current flow layout
      • getLayoutAt

        public VisibleLayout getLayoutAt​(int index)
        Get the flow layout at the supplied index
        Parameters:
        index - the index of the flow layout to get
        Returns:
        the flow layout at the index
        Throws:
        java.lang.IndexOutOfBoundsException - if the index is out of range
      • getAllowMultipleTabs

        public boolean getAllowMultipleTabs()
        Returns true if the perspective is allowing multiple tabs to be open
        Returns:
        true if multiple tabs are allowed
      • setAllowMultipleTabs

        public void setAllowMultipleTabs​(boolean allow)
        Set whether multiple tabs are allowed
        Parameters:
        allow - true if multiple tabs are allowed
      • getSetting

        public <T> T getSetting​(Settings.SettingKey propKey,
                                T defaultVal)
        Get the value of a setting for the main perspective
        Type Parameters:
        T - the type of the setting
        Parameters:
        propKey - the key of the setting to get
        defaultVal - the default value to use if nothing is set yet
        Returns:
        the value (or default value) for the setting
      • notifyIsDirty

        public void notifyIsDirty()
      • loadLayout

        public void loadLayout()
        Load a flow layout. Prompts via a filechooser
      • loadLayout

        public void loadLayout​(java.io.File fFile,
                               boolean newTab)
        Load a flow layout.
        Parameters:
        fFile - the file to load
        newTab - true if the flow should be loaded into a new tab
      • isMemoryLow

        public boolean isMemoryLow()
        Return true if memory is running low
        Returns:
        true if memory is running low
      • showMemoryIsLow

        public boolean showMemoryIsLow()
        Print a warning if memory is low (and show a GUI dialog if running in a graphical environment)
        Returns:
        true if user opts to continue (in the GUI case)
      • getDebug

        public boolean getDebug()
      • setActive

        public void setActive​(boolean active)
        Set active status of this perspective. True indicates that this perspective is the visible active perspective in the application
        Specified by:
        setActive in interface Perspective
        Overrides:
        setActive in class AbstractPerspective
        Parameters:
        active - true if this perspective is the active one
      • getMenus

        public java.util.List<javax.swing.JMenu> getMenus()
        Get an ordered list of menus to appear in the main menu bar. Return null for no menus
        Specified by:
        getMenus in interface Perspective
        Overrides:
        getMenus in class AbstractPerspective
        Returns:
        a list of menus to appear in the main menu bar or null for no menus
      • okToBeActive

        public boolean okToBeActive()
        Returns true if this perspective is OK with being an active perspective - i.e. the user can click on this perspective at this time in the perspective toolbar. For example, a Perspective might return false from this method if it needs a set of instances to operate but none have been supplied yet.
        Specified by:
        okToBeActive in interface Perspective
        Overrides:
        okToBeActive in class AbstractPerspective
        Returns:
        true if this perspective can be active at the current time