ij.gui
Class GenericDialog

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by ij.gui.GenericDialog
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener, java.awt.event.ItemListener, java.awt.event.KeyListener, java.awt.event.TextListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

public class GenericDialog
extends java.awt.Dialog
implements java.awt.event.ActionListener, java.awt.event.TextListener, java.awt.event.FocusListener, java.awt.event.ItemListener, java.awt.event.KeyListener, java.awt.event.AdjustmentListener

This class is a customizable modal dialog box. Here is an example GenericDialog with one string field and two numeric fields:

  public class Generic_Dialog_Example implements PlugIn {
    static String title="Example";
    static int width=512,height=512;
    public void run(String arg) {
      GenericDialog gd = new GenericDialog("New Image");
      gd.addStringField("Title: ", title);
      gd.addNumericField("Width: ", width, 0);
      gd.addNumericField("Height: ", height, 0);
      gd.showDialog();
      if (gd.wasCanceled()) return;
      title = gd.getNextString();
      width = (int)gd.getNextNumber();
      height = (int)gd.getNextNumber();
      IJ.newImage(title, "8-bit", width, height, 1);
   }
 }
 
To work with macros, the first word of each component label must be unique. If this is not the case, add underscores, which will be converted to spaces when the dialog is displayed. For example, change the checkbox labels "Show Quality" and "Show Residue" to "Show_Quality" and "Show_Residue".

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  java.util.Vector checkbox
           
protected  java.util.Vector choice
           
protected  java.util.Vector defaultText
           
protected  java.util.Vector defaultValues
           
static int MAX_SLIDERS
           
protected  java.util.Vector numberField
           
protected  java.util.Vector slider
           
protected  java.util.Vector stringField
           
protected  java.awt.TextArea textArea1
           
protected  java.awt.TextArea textArea2
           
protected  java.awt.Component theLabel
           
 
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
GenericDialog(java.lang.String title)
          Creates a new GenericDialog with the specified title.
GenericDialog(java.lang.String title, java.awt.Frame parent)
          Creates a new GenericDialog using the specified title and parent frame.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
           
 void addCheckbox(java.lang.String label, boolean defaultValue)
          Adds a checkbox.
 void addCheckboxGroup(int rows, int columns, java.lang.String[] labels, boolean[] defaultValues)
          Adds a group of checkboxs using a grid layout.
 void addChoice(java.lang.String label, java.lang.String[] items, java.lang.String defaultItem)
          Adds a popup menu.
 void addMessage(java.lang.String text)
          Adds a message consisting of one or more lines of text.
 void addNumericField(java.lang.String label, double defaultValue, int digits)
          Adds a numeric field.
 void addNumericField(java.lang.String label, double defaultValue, int digits, int columns, java.lang.String units)
          Adds a numeric field.
 void addPanel(java.awt.Panel panel)
          Adds a Panel to the dialog.
 void addPanel(java.awt.Panel panel, int contraints, java.awt.Insets insets)
          Adds a Panel to the dialog with custom contraint and insets.
 void addSlider(java.lang.String label, double minValue, double maxValue, double defaultValue)
           
 void addStringField(java.lang.String label, java.lang.String defaultText)
          Adds an 8 column text field.
 void addStringField(java.lang.String label, java.lang.String defaultText, int columns)
          Adds a text field.
 void addTextAreas(java.lang.String text1, java.lang.String text2, int rows, int columns)
          Adds one or two (side by side) text areas.
 void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
           
 void focusGained(java.awt.event.FocusEvent e)
           
 void focusLost(java.awt.event.FocusEvent e)
           
 java.util.Vector getCheckboxes()
          Returns the Vector containing the Checkboxes.
 java.util.Vector getChoices()
          Returns the Vector containing the Choices.
 java.lang.String getErrorMessage()
          Returns an error message if getNextNumber was unable to convert a string into a number, otherwise, returns null.
 java.awt.Insets getInsets()
           
 java.awt.Component getMessage()
          Returns a reference to the Label or MultiLineLabel created by addMessage(), or null if addMessage() was not called.
 boolean getNextBoolean()
          Returns the state of the next checkbox.
 java.lang.String getNextChoice()
          Returns the selected item in the next popup menu.
 int getNextChoiceIndex()
          Returns the index of the selected item in the next popup menu.
 double getNextNumber()
          Returns the contents of the next numeric field.
 java.lang.String getNextString()
          Returns the contents of the next text field.
 java.lang.String getNextText()
          Returns the contents of the next text area.
 java.util.Vector getNumericFields()
          Returns the Vector containing the numeric TextFields.
 java.util.Vector getSliders()
          Returns the sliders (Scrollbars).
 java.util.Vector getStringFields()
          Returns the Vector containing the string TextFields.
 java.awt.TextArea getTextArea1()
          Returns a reference to textArea1.
 java.awt.TextArea getTextArea2()
          Returns a reference to textArea2.
protected  java.lang.Double getValue(java.lang.String theText)
           
 boolean invalidNumber()
          Returns true if one or more of the numeric fields contained an invalid number.
 void itemStateChanged(java.awt.event.ItemEvent e)
           
 void keyPressed(java.awt.event.KeyEvent e)
           
 void keyReleased(java.awt.event.KeyEvent e)
           
 void keyTyped(java.awt.event.KeyEvent e)
           
 void paint(java.awt.Graphics g)
           
 void setInsets(int top, int left, int bottom)
          Set the insets (margins), in pixels, that will be used for the next component added to the dialog.
protected  void setup()
           
 void showDialog()
          Displays this dialog box.
 void textValueChanged(java.awt.event.TextEvent e)
           
 boolean wasCanceled()
          Returns true if the user clicks on "Cancel".
 
Methods inherited from class java.awt.Dialog
addNotify, getAccessibleContext, getTitle, hide, isModal, isResizable, isUndecorated, paramString, setModal, setResizable, setTitle, setUndecorated, show
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, finalize, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_SLIDERS

public static final int MAX_SLIDERS
See Also:
Constant Field Values

numberField

protected java.util.Vector numberField

stringField

protected java.util.Vector stringField

checkbox

protected java.util.Vector checkbox

choice

protected java.util.Vector choice

slider

protected java.util.Vector slider

textArea1

protected java.awt.TextArea textArea1

textArea2

protected java.awt.TextArea textArea2

defaultValues

protected java.util.Vector defaultValues

defaultText

protected java.util.Vector defaultText

theLabel

protected java.awt.Component theLabel
Constructor Detail

GenericDialog

public GenericDialog(java.lang.String title)
Creates a new GenericDialog with the specified title. Uses the current image image window as the parent frame or the ImageJ frame if no image windows are open. Dialog parameters are recorded by ImageJ's command recorder but this requires that the first word of each label be unique.


GenericDialog

public GenericDialog(java.lang.String title,
                     java.awt.Frame parent)
Creates a new GenericDialog using the specified title and parent frame.

Method Detail

addNumericField

public void addNumericField(java.lang.String label,
                            double defaultValue,
                            int digits)
Adds a numeric field. The first word of the label must be unique or command recording will not work.

Parameters:
label - the label
defaultValue - value to be initially displayed
digits - number of digits to right of decimal point

addNumericField

public void addNumericField(java.lang.String label,
                            double defaultValue,
                            int digits,
                            int columns,
                            java.lang.String units)
Adds a numeric field. The first word of the label must be unique or command recording will not work.

Parameters:
label - the label
defaultValue - value to be initially displayed
digits - number of digits to right of decimal point
columns - width of field in characters
units - a string displayed to the right of the field

addStringField

public void addStringField(java.lang.String label,
                           java.lang.String defaultText)
Adds an 8 column text field.

Parameters:
label - the label
defaultText - the text initially displayed

addStringField

public void addStringField(java.lang.String label,
                           java.lang.String defaultText,
                           int columns)
Adds a text field.

Parameters:
label - the label
defaultText - text initially displayed
columns - width of the text field

addCheckbox

public void addCheckbox(java.lang.String label,
                        boolean defaultValue)
Adds a checkbox.

Parameters:
label - the label
defaultValue - the initial state

addCheckboxGroup

public void addCheckboxGroup(int rows,
                             int columns,
                             java.lang.String[] labels,
                             boolean[] defaultValues)
Adds a group of checkboxs using a grid layout.

Parameters:
rows - the number of rows
columns - the number of columns
labels - the labels
defaultValues - the initial states

addChoice

public void addChoice(java.lang.String label,
                      java.lang.String[] items,
                      java.lang.String defaultItem)
Adds a popup menu.

Parameters:
label - the label
items - the menu items
defaultItem - the menu item initially selected

addMessage

public void addMessage(java.lang.String text)
Adds a message consisting of one or more lines of text.


addTextAreas

public void addTextAreas(java.lang.String text1,
                         java.lang.String text2,
                         int rows,
                         int columns)
Adds one or two (side by side) text areas.

Parameters:
text1 - initial contents of the first text area
text2 - initial contents of the second text area or null
rows - the number of rows
rows - the number of columns

addSlider

public void addSlider(java.lang.String label,
                      double minValue,
                      double maxValue,
                      double defaultValue)

addPanel

public void addPanel(java.awt.Panel panel)
Adds a Panel to the dialog.


addPanel

public void addPanel(java.awt.Panel panel,
                     int contraints,
                     java.awt.Insets insets)
Adds a Panel to the dialog with custom contraint and insets. The defaults are GridBagConstraints.WEST (left justified) and "new Insets(5, 0, 0, 0)" (5 pixels of padding at the top).


setInsets

public void setInsets(int top,
                      int left,
                      int bottom)
Set the insets (margins), in pixels, that will be used for the next component added to the dialog.
    Default insets:
        addMessage: 0,20,0 (empty string) or 10,20,0
        addCheckbox: 15,20,0 (first checkbox) or 0,20,0
        addCheckboxGroup: 10,0,0 
        addNumericField: 5,0,3 (first field) or 0,0,3
        addStringField: 5,0,5 (first field) or 0,0,5
        addChoice: 5,0,5 (first field) or 0,0,5
     


wasCanceled

public boolean wasCanceled()
Returns true if the user clicks on "Cancel".


getNextNumber

public double getNextNumber()
Returns the contents of the next numeric field.


getValue

protected java.lang.Double getValue(java.lang.String theText)

invalidNumber

public boolean invalidNumber()
Returns true if one or more of the numeric fields contained an invalid number. Must be called after one or more calls to getNextNumber().


getErrorMessage

public java.lang.String getErrorMessage()
Returns an error message if getNextNumber was unable to convert a string into a number, otherwise, returns null.


getNextString

public java.lang.String getNextString()
Returns the contents of the next text field.


getNextBoolean

public boolean getNextBoolean()
Returns the state of the next checkbox.


getNextChoice

public java.lang.String getNextChoice()
Returns the selected item in the next popup menu.


getNextChoiceIndex

public int getNextChoiceIndex()
Returns the index of the selected item in the next popup menu.


getNextText

public java.lang.String getNextText()
Returns the contents of the next text area.


showDialog

public void showDialog()
Displays this dialog box.


getNumericFields

public java.util.Vector getNumericFields()
Returns the Vector containing the numeric TextFields.


getStringFields

public java.util.Vector getStringFields()
Returns the Vector containing the string TextFields.


getCheckboxes

public java.util.Vector getCheckboxes()
Returns the Vector containing the Checkboxes.


getChoices

public java.util.Vector getChoices()
Returns the Vector containing the Choices.


getSliders

public java.util.Vector getSliders()
Returns the sliders (Scrollbars).


getTextArea1

public java.awt.TextArea getTextArea1()
Returns a reference to textArea1.


getTextArea2

public java.awt.TextArea getTextArea2()
Returns a reference to textArea2.


getMessage

public java.awt.Component getMessage()
Returns a reference to the Label or MultiLineLabel created by addMessage(), or null if addMessage() was not called.


setup

protected void setup()

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

textValueChanged

public void textValueChanged(java.awt.event.TextEvent e)
Specified by:
textValueChanged in interface java.awt.event.TextListener

itemStateChanged

public void itemStateChanged(java.awt.event.ItemEvent e)
Specified by:
itemStateChanged in interface java.awt.event.ItemListener

focusGained

public void focusGained(java.awt.event.FocusEvent e)
Specified by:
focusGained in interface java.awt.event.FocusListener

focusLost

public void focusLost(java.awt.event.FocusEvent e)
Specified by:
focusLost in interface java.awt.event.FocusListener

keyPressed

public void keyPressed(java.awt.event.KeyEvent e)
Specified by:
keyPressed in interface java.awt.event.KeyListener

keyReleased

public void keyReleased(java.awt.event.KeyEvent e)
Specified by:
keyReleased in interface java.awt.event.KeyListener

keyTyped

public void keyTyped(java.awt.event.KeyEvent e)
Specified by:
keyTyped in interface java.awt.event.KeyListener

getInsets

public java.awt.Insets getInsets()
Overrides:
getInsets in class java.awt.Container

adjustmentValueChanged

public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
Specified by:
adjustmentValueChanged in interface java.awt.event.AdjustmentListener

paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class java.awt.Container