weka.gui.explorer
Class PreprocessPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.explorer.PreprocessPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class PreprocessPanel
extends javax.swing.JPanel

This panel controls simple preprocessing of instances. Summary information on instances and attributes is shown. Filters may be configured to alter the set of instances. Altered instances may also be saved.

Version:
$Revision: 1.37 $
Author:
Richard Kirkby (rkirkby@cs.waikato.ac.nz), Len Trigg (trigg@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.JButton m_ApplyFilterBut
          Click to apply filters and save the results
protected  javax.swing.filechooser.FileFilter m_ArffFilter
          Filter to ensure only arff files are selected
protected  AttributeListPanel m_AttPanel
          Panel to let the user toggle attributes
protected  AttributeSummaryPanel m_AttSummaryPanel
          Displays summary stats on the selected attribute
protected  AttributeVisualizationPanel m_AttVisualizePanel
          The visualization of the attribute values
protected  GenericObjectEditor m_DatabaseQueryEditor
          Lets the user enter a DB query
protected  javax.swing.JFileChooser m_FileChooser
          The file chooser for selecting arff files
protected  GenericObjectEditor m_FilterEditor
          Lets the user configure the filter
protected  PropertyPanel m_FilterPanel
          Filter configuration
protected  Instances m_Instances
          The working instances
protected  InstancesSummaryPanel m_InstSummaryPanel
          Displays simple stats on the working instances
protected  java.lang.Thread m_IOThread
          A thread for loading/saving instances from a file or URL
protected  java.lang.String m_LastURL
          Stores the last URL that instances were loaded from
protected  Logger m_Log
          The message logger
protected  javax.swing.JButton m_OpenDBBut
          Click to load base instances from a Database
protected  javax.swing.JButton m_OpenFileBut
          Click to load base instances from a file
protected  javax.swing.JButton m_OpenURLBut
          Click to load base instances from a URL
protected  javax.swing.JButton m_SaveBut
          Click to apply filters and save the results
protected  java.lang.String m_SQLQ
          Stores the last sql query executed
protected  java.beans.PropertyChangeSupport m_Support
          Manages sending notifications to people when we change the set of working instances.
protected  java.io.File[] m_tempUndoFiles
          Keeps track of undo points
protected  int m_tempUndoIndex
          The next available slot for an undo point
protected  javax.swing.JButton m_UndoBut
          Click to revert back to the last saved point
 
Fields inherited from class javax.swing.JPanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
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
PreprocessPanel()
          Creates the instances panel with no initial instances.
 
Method Summary
 void addPropertyChangeListener(java.beans.PropertyChangeListener l)
          Adds a PropertyChangeListener who will be notified of value changes.
 void addUndoPoint()
          Backs up the current state of the dataset, so the changes can be undone.
protected  void applyFilter()
          Passes the dataset through the filter that has been configured for use.
private  void converterQuery(java.io.File f)
          Pops up generic object editor with list of conversion filters
 Instances getInstances()
          Gets the working set of instances.
static void main(java.lang.String[] args)
          Tests out the instance-preprocessing panel from the command line.
 void removePropertyChangeListener(java.beans.PropertyChangeListener l)
          Removes a PropertyChangeListener.
protected  void saveInstancesToFile(java.io.File f, Instances inst)
          Saves the current instances to the supplied file.
 void saveWorkingInstancesToFileQ()
          Queries the user for a file to save instances as, then saves the instances in a background process.
 void setInstances(Instances inst)
          Tells the panel to use a new base set of instances.
 void setInstancesFromDB(InstanceQuery iq)
          Loads instances from a database
 void setInstancesFromDBQ()
          Queries the user for a URL to a database to load instances from, then loads the instances in a background process.
 void setInstancesFromFile(java.io.File f)
          Loads results from a set of instances contained in the supplied file.
 void setInstancesFromFileQ()
          Queries the user for a file to load instances from, then loads the instances in a background process.
 void setInstancesFromURL(java.net.URL u)
          Loads instances from a URL.
 void setInstancesFromURLQ()
          Queries the user for a URL to load instances from, then loads the instances in a background process.
 void setLog(Logger newLog)
          Sets the Logger to receive informational messages
private  void tryConverter(Loader cnv, java.io.File f)
          Applies the selected converter
 void undo()
          Reverts to the last backed up version of the dataset.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_InstSummaryPanel

protected InstancesSummaryPanel m_InstSummaryPanel
Displays simple stats on the working instances


m_OpenFileBut

protected javax.swing.JButton m_OpenFileBut
Click to load base instances from a file


m_OpenURLBut

protected javax.swing.JButton m_OpenURLBut
Click to load base instances from a URL


m_OpenDBBut

protected javax.swing.JButton m_OpenDBBut
Click to load base instances from a Database


m_DatabaseQueryEditor

protected GenericObjectEditor m_DatabaseQueryEditor
Lets the user enter a DB query


m_UndoBut

protected javax.swing.JButton m_UndoBut
Click to revert back to the last saved point


m_SaveBut

protected javax.swing.JButton m_SaveBut
Click to apply filters and save the results


m_AttPanel

protected AttributeListPanel m_AttPanel
Panel to let the user toggle attributes


m_AttSummaryPanel

protected AttributeSummaryPanel m_AttSummaryPanel
Displays summary stats on the selected attribute


m_FilterEditor

protected GenericObjectEditor m_FilterEditor
Lets the user configure the filter


m_FilterPanel

protected PropertyPanel m_FilterPanel
Filter configuration


m_ApplyFilterBut

protected javax.swing.JButton m_ApplyFilterBut
Click to apply filters and save the results


m_ArffFilter

protected javax.swing.filechooser.FileFilter m_ArffFilter
Filter to ensure only arff files are selected


m_FileChooser

protected javax.swing.JFileChooser m_FileChooser
The file chooser for selecting arff files


m_LastURL

protected java.lang.String m_LastURL
Stores the last URL that instances were loaded from


m_SQLQ

protected java.lang.String m_SQLQ
Stores the last sql query executed


m_Instances

protected Instances m_Instances
The working instances


m_AttVisualizePanel

protected AttributeVisualizationPanel m_AttVisualizePanel
The visualization of the attribute values


m_tempUndoFiles

protected java.io.File[] m_tempUndoFiles
Keeps track of undo points


m_tempUndoIndex

protected int m_tempUndoIndex
The next available slot for an undo point


m_Support

protected java.beans.PropertyChangeSupport m_Support
Manages sending notifications to people when we change the set of working instances.


m_IOThread

protected java.lang.Thread m_IOThread
A thread for loading/saving instances from a file or URL


m_Log

protected Logger m_Log
The message logger

Constructor Detail

PreprocessPanel

public PreprocessPanel()
Creates the instances panel with no initial instances.

Method Detail

setLog

public void setLog(Logger newLog)
Sets the Logger to receive informational messages

Parameters:
newLog - the Logger that will now get info messages

setInstances

public void setInstances(Instances inst)
Tells the panel to use a new base set of instances.

Parameters:
inst - a set of Instances

getInstances

public Instances getInstances()
Gets the working set of instances.

Returns:
the working instances

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener l)
Adds a PropertyChangeListener who will be notified of value changes.

Parameters:
l - a value of type 'PropertyChangeListener'

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener l)
Removes a PropertyChangeListener.

Parameters:
l - a value of type 'PropertyChangeListener'

applyFilter

protected void applyFilter()
Passes the dataset through the filter that has been configured for use.


saveWorkingInstancesToFileQ

public void saveWorkingInstancesToFileQ()
Queries the user for a file to save instances as, then saves the instances in a background process. This is done in the IO thread, and an error message is popped up if the IO thread is busy.


setInstancesFromFileQ

public void setInstancesFromFileQ()
Queries the user for a file to load instances from, then loads the instances in a background process. This is done in the IO thread, and an error message is popped up if the IO thread is busy.


setInstancesFromDBQ

public void setInstancesFromDBQ()
Queries the user for a URL to a database to load instances from, then loads the instances in a background process. This is done in the IO thread, and an error message is popped up if the IO thread is busy.


setInstancesFromURLQ

public void setInstancesFromURLQ()
Queries the user for a URL to load instances from, then loads the instances in a background process. This is done in the IO thread, and an error message is popped up if the IO thread is busy.


saveInstancesToFile

protected void saveInstancesToFile(java.io.File f,
                                   Instances inst)
Saves the current instances to the supplied file.

Parameters:
f - a value of type 'File'
inst - the instances to save

converterQuery

private void converterQuery(java.io.File f)
Pops up generic object editor with list of conversion filters

Parameters:
f - the File

tryConverter

private void tryConverter(Loader cnv,
                          java.io.File f)
Applies the selected converter

Parameters:
cnv - the converter to apply to the input file
f - the input file

setInstancesFromFile

public void setInstancesFromFile(java.io.File f)
Loads results from a set of instances contained in the supplied file. This is started in the IO thread, and a dialog is popped up if there's a problem.

Parameters:
f - a value of type 'File'

setInstancesFromDB

public void setInstancesFromDB(InstanceQuery iq)
Loads instances from a database

Parameters:
iq - the InstanceQuery object to load from (this is assumed to have been already connected to a valid database).

setInstancesFromURL

public void setInstancesFromURL(java.net.URL u)
Loads instances from a URL.

Parameters:
u - the URL to load from.

addUndoPoint

public void addUndoPoint()
                  throws java.lang.Exception
Backs up the current state of the dataset, so the changes can be undone.

Throws:
java.lang.Exception

undo

public void undo()
Reverts to the last backed up version of the dataset.


main

public static void main(java.lang.String[] args)
Tests out the instance-preprocessing panel from the command line.

Parameters:
args - ignored