weka.gui.beans

## Class KnowledgeFlowApp

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

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, BeanCustomizer.ModifyListener

      public class KnowledgeFlowApp
      extends javax.swing.JPanel
      implements java.beans.PropertyChangeListener, BeanCustomizer.ModifyListener

  Main GUI class for the KnowledgeFlow. Modifications to allow interoperability with swt provided by Davide Zerbetto (davide dot zerbetto at eng dot it).
  Since:
    1.0
  Version:
    $Revision: 11248 $
  Author:
    Mark Hall
  See Also:
    `JPanel`, `PropertyChangeListener`, Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `KnowledgeFlowApp.KFPerspective` Interface for perspectives.
    `class` | `KnowledgeFlowApp.MainKFPerspective` Main Knowledge Flow perspective

    - ### 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` | `FILE_EXTENSION` the extension for the serialized setups (Java serialization)
    `static java.lang.String` | `FILE_EXTENSION_XML` the extension for the serialized setups (Java serialization)
    `static java.util.Vector<StartUpListener>` | `s_startupListeners`

    - ### 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
    `KnowledgeFlowApp(boolean showFileMenu)` Creates a new `KnowledgeFlowApp` instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `addStartupListener(StartUpListener s)` Add a listener to be notified when startup is complete
    `static void` | `addToPluginBeanProps(java.io.File beanPropsFile)` Add a plugin bean props file
    `void` | `clearLayout()`
    `void` | `closeAllTabs()`
    `java.lang.StringBuffer` | `copyToBuffer(java.util.Vector<java.lang.Object> selectedBeans)` Utility routine that serializes the supplied Vector of BeanInstances to XML
    `static void` | `createSingleton(java.lang.String[] args)` Create the singleton instance of the KnowledgeFlow
    `static void` | `disposeSingleton()`
    `boolean` | `getAllowMultipleTabs()`
    `java.util.Vector<java.util.Vector<?>>` | `getFlow()` Gets the current flow being edited.
    `java.lang.String` | `getFlowXML()` Returns the current flow being edited in XML format.
    `static java.lang.String` | `getGlobalInfo(java.lang.Object tempBean)` Utility method for grabbing the global info help (if it exists) from an arbitrary object
    `KnowledgeFlowApp.MainKFPerspective` | `getMainPerspective()` Gets the main knowledge flow perspective
    `java.lang.StringBuffer` | `getPasteBuffer()` Get the contents of the paste buffer
    `static KnowledgeFlowApp` | `getSingleton()` Return the singleton instance of the KnowledgeFlow
    `void` | `loadLayout(java.io.File oFile, boolean newTab)` Load a layout from a file.
    `void` | `loadLayout(java.io.InputStream is, boolean newTab, java.lang.String flowName)` Load a flow file from an input stream.
    `void` | `loadLayout(java.io.Reader reader, boolean newTab, java.lang.String flowName)` Load a flow file from a reader.
    `static void` | `loadProperties()` Loads KnowledgeFlow properties and any plugins (adds jars to the classpath)
    `static void` | `main(java.lang.String[] args)` Main method.
    `void` | `propertyChange(java.beans.PropertyChangeEvent e)` Accept property change events
    `static void` | `reInitialize()`
    `static void` | `removeFromPluginBeanProps(java.io.File beanPropsFile)` Remove a plugin bean props file
    `void` | `saveLayout(java.io.File toFile, int tabIndex)`
    `void` | `saveLayout(java.io.OutputStream out, int tabIndex)` Save the knowledge flow into the OutputStream passed at input.
    `void` | `setAllowMultipleTabs(boolean multiple)`
    `void` | `setEnvironment(Environment env)` Set the environment variables to use.
    `void` | `setFlow(java.util.Vector<java.util.Vector<?>> v)` Set the flow for the KnowledgeFlow to edit.
    `void` | `setModifiedStatus(java.lang.Object source, boolean modified)` Tells us about the modified status of a particular object - typically a customizer that is editing a flow component.
    `void` | `setPasteBuffer(java.lang.StringBuffer b)` Set the contents of the "paste" buffer and enable the paste from cliboard toolbar button

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

    - #### FILE_EXTENSION

          public static final java.lang.String FILE_EXTENSION

      the extension for the serialized setups (Java serialization)
      See Also:
        Constant Field Values

    - #### FILE_EXTENSION_XML

          public static final java.lang.String FILE_EXTENSION_XML

      the extension for the serialized setups (Java serialization)
      See Also:
        Constant Field Values

    - #### s_startupListeners

          public static java.util.Vector<StartUpListener> s_startupListeners

  - ### Constructor Detail

    - #### KnowledgeFlowApp

          public KnowledgeFlowApp(boolean showFileMenu)

      Creates a new `KnowledgeFlowApp` instance.

  - ### Method Detail

    - #### addToPluginBeanProps

          public static void addToPluginBeanProps(java.io.File beanPropsFile)
                                           throws java.lang.Exception

      Add a plugin bean props file
      Parameters:
        `beanPropsFile` - the plugin properties to add
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### removeFromPluginBeanProps

          public static void removeFromPluginBeanProps(java.io.File beanPropsFile)
                                                throws java.lang.Exception

      Remove a plugin bean props file
      Parameters:
        `beanPropsFile` - the plugin properties to remove
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### loadProperties

          public static void loadProperties()

      Loads KnowledgeFlow properties and any plugins (adds jars to the classpath)

    - #### reInitialize

          public static void reInitialize()

    - #### setEnvironment

          public void setEnvironment(Environment env)

      Set the environment variables to use. NOTE: loading a new layout resets back to the default set of variables
      Parameters:
        `env` -

    - #### getMainPerspective

          public KnowledgeFlowApp.MainKFPerspective getMainPerspective()

      Gets the main knowledge flow perspective
      Returns:
        the main knowledge flow perspective

    - #### closeAllTabs

          public void closeAllTabs()

    - #### clearLayout

          public void clearLayout()

    - #### setModifiedStatus

          public void setModifiedStatus(java.lang.Object source,
                               boolean modified)

      Tells us about the modified status of a particular object - typically a customizer that is editing a flow component. Allows us to set the modified flag for the current flow.
      Specified by:
        `setModifiedStatus` in interface `BeanCustomizer.ModifyListener`
      Parameters:
        `source` - the source object
        `modified` - true if the source object has been modified

    - #### setPasteBuffer

          public void setPasteBuffer(java.lang.StringBuffer b)

      Set the contents of the "paste" buffer and enable the paste from cliboard toolbar button
      Parameters:
        `b` - the buffer to use

    - #### getPasteBuffer

          public java.lang.StringBuffer getPasteBuffer()

      Get the contents of the paste buffer
      Returns:
        the contents of the paste buffer

    - #### copyToBuffer

          public java.lang.StringBuffer copyToBuffer(java.util.Vector<java.lang.Object> selectedBeans)
                                              throws java.lang.Exception

      Utility routine that serializes the supplied Vector of BeanInstances to XML
      Parameters:
        `selectedBeans` - the vector of BeanInstances to serialize
      Returns:
        a StringBuffer containing the serialized vector
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### propertyChange

          public void propertyChange(java.beans.PropertyChangeEvent e)

      Accept property change events
      Specified by:
        `propertyChange` in interface `java.beans.PropertyChangeListener`
      Parameters:
        `e` - a `PropertyChangeEvent` value

    - #### loadLayout

          public void loadLayout(java.io.File oFile,
                        boolean newTab)

      Load a layout from a file. Supports loading binary and XML serialized flow files
      Parameters:
        `oFile` - the file to load from
        `newTab` - true if the loaded layout should be displayed in a new tab

    - #### loadLayout

          public void loadLayout(java.io.InputStream is,
                        boolean newTab,
                        java.lang.String flowName)
                          throws java.lang.Exception

      Load a flow file from an input stream. Only supports XML serialized flows.
      Parameters:
        `is` - the input stream to laod from
        `newTab` - whether to open a new tab in the UI for the flow
        `flowName` - the name of the flow
      Throws:
        `java.lang.Exception` - if a problem occurs during de-serialization

    - #### loadLayout

          public void loadLayout(java.io.Reader reader,
                        boolean newTab,
                        java.lang.String flowName)
                          throws java.lang.Exception

      Load a flow file from a reader. Only supports XML serialized flows.
      Parameters:
        `reader` - the reader to load from
        `newTab` - whether to open a new tab in the UI for the flow
        `flowName` - the name of the flow
      Throws:
        `java.lang.Exception` - if a problem occurs during de-serialization

    - #### setFlow

          public void setFlow(java.util.Vector<java.util.Vector<?>> v)
                       throws java.lang.Exception

      Set the flow for the KnowledgeFlow to edit. Assumes that client has loaded a Vector of beans and a Vector of connections. the supplied beans and connections are deep-copied via serialization before being set in the layout. The beans get added to the flow at position 0.
      Parameters:
        `v` - a Vector containing a Vector of beans and a Vector of connections
      Throws:
        `java.lang.Exception` - if something goes wrong

    - #### getFlow

          public java.util.Vector<java.util.Vector<?>> getFlow()
                                                        throws java.lang.Exception

      Gets the current flow being edited. The flow is returned as a single Vector containing two other Vectors: the beans and the connections. These two vectors are deep-copied via serialization before being returned.
      Returns:
        the current flow being edited
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### getFlowXML

          public java.lang.String getFlowXML()
                                      throws java.lang.Exception

      Returns the current flow being edited in XML format.
      Returns:
        the current flow as an XML string
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### saveLayout

          public void saveLayout(java.io.File toFile,
                        int tabIndex)

    - #### saveLayout

          public void saveLayout(java.io.OutputStream out,
                        int tabIndex)

      Save the knowledge flow into the OutputStream passed at input. Only supports saving the layout data (no trained models) to XML.
      Parameters:
        `out` - the output stream to save the layout in

    - #### getGlobalInfo

          public static java.lang.String getGlobalInfo(java.lang.Object tempBean)

      Utility method for grabbing the global info help (if it exists) from an arbitrary object
      Parameters:
        `tempBean` - the object to grab global info from
      Returns:
        the global help info or null if global info does not exist

    - #### createSingleton

          public static void createSingleton(java.lang.String[] args)

      Create the singleton instance of the KnowledgeFlow
      Parameters:
        `args` - can contain a file argument for loading a flow layout (format: "file=[path to layout file]") Modified by Zerbetto: you can specify the path of a knowledge flow layout file at input

    - #### disposeSingleton

          public static void disposeSingleton()

    - #### getSingleton

          public static KnowledgeFlowApp getSingleton()

      Return the singleton instance of the KnowledgeFlow
      Returns:
        the singleton instance

    - #### addStartupListener

          public static void addStartupListener(StartUpListener s)

      Add a listener to be notified when startup is complete
      Parameters:
        `s` - a listener to add

    - #### setAllowMultipleTabs

          public void setAllowMultipleTabs(boolean multiple)

    - #### getAllowMultipleTabs

          public boolean getAllowMultipleTabs()

    - #### main

          public static void main(java.lang.String[] args)

      Main method.
      Parameters:
        `args` - a `String[]` value