edu.neu.ccs.jpf
Class MethodGUI

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byedu.neu.ccs.gui.DisplayPanel
                      extended byedu.neu.ccs.jpf.MethodGUI
All Implemented Interfaces:
Accessible, AlertListener, Displayable, EventListener, ImageObserver, JPTConstants, MalformedDataListener, MenuContainer, Serializable, SwingConstants

public class MethodGUI
extends DisplayPanel
implements JPTConstants

This class implements the GUI for a Method that is non-trivial, that is, has a return value and/or non-trivial parameters.

As of 2.5.0, uses requestObject rather than demandObject internally so a user may cancel evaluation if a parse error is detected while reading one of the method parameters.

In 2.7.0, the class was made public. In addition, the constructors accept the initializer object associated with the method rather than a JPFPane which could supply this initializer. This makes MethodGUI independent of JPFPane and therefore useful in more general situations.

Since:
2.2.0
Version:
2.7.0
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  Action evaluate
          The evaluate action.
protected  JButton evaluateButton
          The evaluate button.
static String FONTNAME
          The default monospaced font name.
static int gapSize
          The gap between cells in the GUI = 10.
static int H_AS_NEEDED
          The horizontal scroll bar policy AS_NEEDED.
protected  Object initializer
          The initializer object for the JPF method that is to be displayed in this method GUI.
protected  TablePanel mainPanel
          The main table panel.
static int margin
          The margin from screen bounds for the scroll pane = 200.
protected  int maxCols
          The maximum number of columns.
protected  Method method
          The JPF method used to define this MethodGUI.
protected  String methodName
          The method name.
protected  int orientation
          The MethodGUI orientation.
protected  PaintSwatch paintView
          The return view for Paint.
protected  String[] parameterTypeNames
          The parameter type names.
protected  Class[] parameterTypes
          The parameter types.
protected  TypedView[] parameterViews
          The parameter views.
protected  Class returnType
          The return type.
protected  String returnTypeName
          The return type name.
protected  TypedView returnView
          The return view for everything but Paint.
protected  int screenHeight
          The screen height.
protected  Dimension screenSize
          The screen dimensions.
protected  int screenWidth
          The screen width.
protected  int scrollHeight
          The bound for the scroll pane height.
protected  JPTScrollPane scrollpane
          The scrollpane surrounding the main panel.
protected  int scrollWidth
          The bound for the scroll pane width.
private static Font staticFont
          The display font for views in the method GUI.
private static int staticFontSize
          The default font size.
static int SVHeight
          The string viewer viewport height = 100.
static int SVWidth
          The string viewer viewport width = 400.
static int swatchSize
          The size of a paint swatch = 48.
static int TFVWidth
          The text field view width = 250.
static int V_AS_NEEDED
          The vertical scroll bar policy AS_NEEDED.
 
Fields inherited from class edu.neu.ccs.gui.DisplayPanel
background, codec, CODEC
 
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 edu.neu.ccs.util.JPTConstants
ABOVE, ALIGNMENT, BELOW, BOTTOM_LEFT, BOTTOM_RIGHT, DEFAULT, FONT, INPUT_PROPERTIES, MANDATORY, OPTIONAL, ORIENTATION, TOP_LEFT, TOP_RIGHT, VALUE
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface edu.neu.ccs.gui.Displayable
DEFAULT_VIEW_STATE, VIEW_STATE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
MethodGUI(Method method)
          Constructs the MethodGUI using the given static method with a preferred orientation of HORIZONTAL.
MethodGUI(Method method, Object initializer)
          Constructs the MethodGUI using the given method and the given initializer object with a preferred orientation of HORIZONTAL.
MethodGUI(Method method, Object initializer, int orientation)
          Constructs the MethodGUI using the given method, the given initializer object, and the given preferred orientation.
 
Method Summary
protected  void buildHorizontalGUI()
          Install the views in the GUI using a horizontal arrangement.
protected  void buildParameterViews()
          Build the array of views for the method parameters.
protected  void buildReturnView()
          Build the view for the return value.
protected  void buildScrollPane()
          Build the scroll pane for the GUI TablePanel and add it to the enclosing DisplayPanel.
protected  void buildTable()
          Build the GUI TablePanel.
protected  void buildVerticalGUI()
          Install the views in the GUI using a vertical arrangement.
protected  JComponent createActionIcon()
          Create the icon for action using class ActivityIcon.
protected  void createEvaluate()
          Create the evaluate action for the Evaluate button in the GUI.
protected  JComponent createInputIcon()
          Create the icon for input using class ActivityIcon.
protected  JComponent createOutputIcon()
          Create the icon for output using class ActivityIcon.
protected  TypedView createView(Class c)
          Return a typed view appropriate for the given class that may do input or return values.
protected  void evaluate()
          The evaluate method executed by the evaluate action.
protected  void evaluateVoid()
          The evaluate method in the case of void return.
protected  void evaluateWithReturn()
          The evaluate method in the case of non-void return.
protected  void extractInformation()
          Extract the important information about the method.
protected  Object extractParameterValue(TypedView view, Class c)
          Return the user input as an object from the typed view being used to obtain data for the given class.
protected  Object[] extractParameterValues()
          Return the array of user input values from the parameter views.
static Font getDefaultFont()
          Returns the current default static font for text field views.
protected  String getErrorPrompt(Class c)
          Return an error prompt customized for the given class.
 JButton getEvaluateButton()
          Returns the evaluate button in the GUI.
protected  Object getReturnView()
          Return the current view for the return type object.
static void setDefaultFont(Font newfont)
          Sets the default static font for text field views.
protected  void showReturnValue(Object value)
          Display the return value in the return view.
 
Methods inherited from class edu.neu.ccs.gui.DisplayPanel
add, add, add, add, add, addBorder, addObject, addObject, addObject, addObject, bevelBorderLowered, bevelBorderLowered, bevelBorderLowered, bevelBorderLowered, bevelBorderLowered, bevelBorderRaised, bevelBorderRaised, bevelBorderRaised, bevelBorderRaised, bevelBorderRaised, compoundBorder, compoundBorder, dataMalformed, emptyBorder, emptyBorder, emptyBorder, endAlert, etchBorderLowered, etchBorderLowered, etchBorderLowered, etchBorderRaised, etchBorderRaised, etchBorderRaised, frame, frame, frame, frame, frame, frame, generalDialog, generalDialog, generalDialog, generalDialog, getCodec, getDefaultViewState, getDefaultViewStates, getDisplayables, getViewState, getViewStates, lineBorder, lineBorder, lineBorder, lineBorder, makeComponent, matteBorder, matteBorder, matteBorder, matteBorder, matteBorder, matteBorder, OKCancelDialog, OKCancelDialog, OKDialog, OKDialog, refreshComponent, remove, remove, removeAll, removeBorder, reset, sandwichBorder, setCodec, setDeepBackground, setDeepBackground, setDefaultViewState, setDefaultViewStates, setEnabled, setViewState, setViewStates, startAlert, titleBorder, titleBorder, titleBorder, titleBorder, titleBorder, titleBorder, titleBorder, titleBorder, uniformizeHeight, uniformizeSize, uniformizeWidth, YesNoCancelDialog, YesNoCancelDialog
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, 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, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
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, 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

TFVWidth

public static final int TFVWidth
The text field view width = 250.

See Also:
Constant Field Values

SVWidth

public static final int SVWidth
The string viewer viewport width = 400.

See Also:
Constant Field Values

SVHeight

public static final int SVHeight
The string viewer viewport height = 100.

See Also:
Constant Field Values

gapSize

public static final int gapSize
The gap between cells in the GUI = 10.

See Also:
Constant Field Values

swatchSize

public static final int swatchSize
The size of a paint swatch = 48.

See Also:
Constant Field Values

margin

public static final int margin
The margin from screen bounds for the scroll pane = 200.

See Also:
Constant Field Values

V_AS_NEEDED

public static final int V_AS_NEEDED
The vertical scroll bar policy AS_NEEDED.

See Also:
Constant Field Values

H_AS_NEEDED

public static final int H_AS_NEEDED
The horizontal scroll bar policy AS_NEEDED.

See Also:
Constant Field Values

FONTNAME

public static final String FONTNAME
The default monospaced font name.


staticFontSize

private static int staticFontSize

The default font size.

    14 + (int) LookAndFeelTools.getNetFontSizeAdjustment()


staticFont

private static Font staticFont
The display font for views in the method GUI.


screenSize

protected Dimension screenSize
The screen dimensions.


screenWidth

protected int screenWidth
The screen width.


screenHeight

protected int screenHeight
The screen height.


scrollWidth

protected int scrollWidth
The bound for the scroll pane width.


scrollHeight

protected int scrollHeight
The bound for the scroll pane height.


initializer

protected Object initializer
The initializer object for the JPF method that is to be displayed in this method GUI.

This initializer is an object of the class associated with the method or null if the JPF method is static.


method

protected Method method
The JPF method used to define this MethodGUI.


methodName

protected String methodName
The method name.


returnType

protected Class returnType
The return type.


returnTypeName

protected String returnTypeName
The return type name.


parameterTypes

protected Class[] parameterTypes
The parameter types.


parameterTypeNames

protected String[] parameterTypeNames
The parameter type names.


orientation

protected int orientation
The MethodGUI orientation.


parameterViews

protected TypedView[] parameterViews
The parameter views.


returnView

protected TypedView returnView
The return view for everything but Paint.


paintView

protected PaintSwatch paintView
The return view for Paint.


evaluate

protected Action evaluate
The evaluate action.


evaluateButton

protected JButton evaluateButton
The evaluate button.


maxCols

protected int maxCols
The maximum number of columns.


mainPanel

protected TablePanel mainPanel
The main table panel.


scrollpane

protected JPTScrollPane scrollpane
The scrollpane surrounding the main panel.

Constructor Detail

MethodGUI

public MethodGUI(Method method)

Constructs the MethodGUI using the given static method with a preferred orientation of HORIZONTAL.

Creates no GUI under the following circumstances:

The reason for the final constraint is that the call to isJPFMethod determines whether or not the MethodGUI object will know how to pass data between the GUI and the method to be invoked.

If no method GUI is created, then an error message is displayed instead.

If the method GUI will require a StringViewer for either a parameter or a return value then the orientation will be switched to VERTICAL to best utilize the screen.

Parameters:
method - the static method to invoke

MethodGUI

public MethodGUI(Method method,
                 Object initializer)

Constructs the MethodGUI using the given method and the given initializer object with a preferred orientation of HORIZONTAL.

Creates no GUI under the following circumstances:

The reason for the final constraint is that the call to isJPFMethod determines whether or not the MethodGUI object will know how to pass data between the GUI and the method to be invoked.

If no method GUI is created, then an error message is displayed instead.

If the method is not static and the initializer is not null then it should be possible to invoke the method on the initializer. If this is not possible then an exception will be thrown upon invocation. The error message from this exception will be displayed.

If the method GUI will require a StringViewer for either a parameter or a return value then the orientation will be switched to VERTICAL to best utilize the screen.

Parameters:
method - the method to invoke
initializer - the object on which to invoke the method

MethodGUI

public MethodGUI(Method method,
                 Object initializer,
                 int orientation)

Constructs the MethodGUI using the given method, the given initializer object, and the given preferred orientation.

Creates no GUI under the following circumstances:

The reason for the final constraint is that the call to isJPFMethod determines whether or not the MethodGUI object will know how to pass data between the GUI and the method to be invoked.

If no method GUI is created, then an error message is displayed instead.

If the method is not static and the initializer is not null then it should be possible to invoke the method on the initializer. If this is not possible then an exception will be thrown upon invocation. The error message from this exception will be displayed.

If the method GUI will require a StringViewer for either a parameter or a return value then the orientation will be switched to VERTICAL to best utilize the screen.

Parameters:
method - the method to invoke
initializer - the object on which to invoke the method
orientation - the preferred orientation: HORIZONTAL or VERTICAL
Method Detail

getEvaluateButton

public JButton getEvaluateButton()

Returns the evaluate button in the GUI.

The primary purpose of this method is to enable a caller to set this button as the default button in its enclosure.

If the GUI did not instantiate properly, this method will return null.


extractInformation

protected void extractInformation()
Extract the important information about the method.


createEvaluate

protected void createEvaluate()
Create the evaluate action for the Evaluate button in the GUI.


evaluate

protected void evaluate()

The evaluate method executed by the evaluate action.

The method invocation is synchronized on the initializer object.


evaluateVoid

protected void evaluateVoid()

The evaluate method in the case of void return.

The method invocation is synchronized on the initializer object.


evaluateWithReturn

protected void evaluateWithReturn()

The evaluate method in the case of non-void return.

The method invocation is synchronized on the initializer object.


extractParameterValue

protected Object extractParameterValue(TypedView view,
                                       Class c)
                                throws CancelledException
Return the user input as an object from the typed view being used to obtain data for the given class.

Throws:
CancelledException

extractParameterValues

protected Object[] extractParameterValues()
                                   throws CancelledException
Return the array of user input values from the parameter views.

Throws:
CancelledException

showReturnValue

protected void showReturnValue(Object value)
Display the return value in the return view. For most types, this will display the result of the toString() method. Color and Paint are handled as a special case.


buildTable

protected void buildTable()
Build the GUI TablePanel.


buildVerticalGUI

protected void buildVerticalGUI()
Install the views in the GUI using a vertical arrangement.


buildHorizontalGUI

protected void buildHorizontalGUI()
Install the views in the GUI using a horizontal arrangement.


createView

protected TypedView createView(Class c)
Return a typed view appropriate for the given class that may do input or return values.


buildParameterViews

protected void buildParameterViews()
Build the array of views for the method parameters.


buildReturnView

protected void buildReturnView()
Build the view for the return value. If the return type is assignable to Paint, then build a paint swatch otherwise call createView to build the TypedView return view.


getReturnView

protected Object getReturnView()
Return the current view for the return type object.


getErrorPrompt

protected String getErrorPrompt(Class c)
Return an error prompt customized for the given class.


createInputIcon

protected JComponent createInputIcon()
Create the icon for input using class ActivityIcon.


createActionIcon

protected JComponent createActionIcon()
Create the icon for action using class ActivityIcon.


createOutputIcon

protected JComponent createOutputIcon()
Create the icon for output using class ActivityIcon.


buildScrollPane

protected void buildScrollPane()
Build the scroll pane for the GUI TablePanel and add it to the enclosing DisplayPanel.


getDefaultFont

public static Font getDefaultFont()
Returns the current default static font for text field views.


setDefaultFont

public static void setDefaultFont(Font newfont)

Sets the default static font for text field views.

Does nothing if newfont is null.

Parameters:
newfont - the new default static font