Module ij
Package ij.gui

# Class GenericDialog

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Dialog
ij.gui.GenericDialog

All Implemented Interfaces:
  `ActionListener`, `AdjustmentListener`, `FocusListener`, `ItemListener`, `KeyListener`, `TextListener`, `WindowListener`, `ImageObserver`, `MenuContainer`, `Serializable`, `EventListener`, `Accessible`

Direct Known Subclasses:
  `NonBlockingGenericDialog`

public class GenericDialog extends Dialog implements ActionListener, TextListener, FocusListener, ItemListener, KeyListener, AdjustmentListener, WindowListener
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

`Dialog.AccessibleAWTDialog, Dialog.ModalExclusionType, Dialog.ModalityType`

## Nested classes/interfaces inherited from class java.awt.Window

`Window.AccessibleAWTWindow, Window.Type`

## Nested classes/interfaces inherited from class java.awt.Container

`Container.AccessibleAWTContainer`

## Nested classes/interfaces inherited from class java.awt.Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Vector`
`checkbox`
`protected Vector`
`choice`
`protected Vector`
`defaultChoiceIndexes`
`protected Vector`
`defaultStrings`
`protected Vector`
`defaultText`
`protected Vector`
`defaultValues`
`protected static GenericDialog`
`instance`
`protected Vector`
`numberField`
`protected Vector`
`radioButtonGroups`
`protected Vector`
`slider`
`protected Vector`
`stringField`
`protected TextArea`
`textArea1`
`protected TextArea`
`textArea2`
`protected Component`
`theLabel`

### Fields inherited from class java.awt.Dialog

`DEFAULT_MODALITY_TYPE`

### Fields inherited from class java.awt.Component

`accessibleContext, 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
`GenericDialog(String title)`
Creates a new GenericDialog with the specified title.
`GenericDialog(String title, Frame parent)`
Creates a new GenericDialog using the specified title and parent frame.

## Method Summary

Modifier and Type
Method
Description
`void`
`actionPerformed(ActionEvent e)`
`void`
`addButton(String label, ActionListener listener)`
Add button to the dialog
`void`
`addCheckbox(String label, boolean defaultValue)`
Adds a checkbox.
`void`
`addCheckboxGroup(int rows, int columns, String[] labels, boolean[] defaultValues)`
Adds a group of checkboxs using a grid layout.
`void`
`addCheckboxGroup(int rows, int columns, String[] labels, boolean[] defaultValues, String[] headings)`
Adds a group of checkboxs using a grid layout.
`void`
`addChoice(String label, String[] items, String defaultItem)`
Adds a popup menu.
`void`
`addDialogListener(DialogListener dl)`
Add an Object implementing the DialogListener interface.
`void`
`addDirectoryField(String label, String defaultPath)`
Adds a directory text field and "Browse" button, where the field width is determined by the length of 'defaultPath', with a minimum of 25 columns.
`void`
`addDirectoryField(String label, String defaultPath, int columns)`
`<E extends Enum<E>>
void`
`addEnumChoice(String label, E defaultItem)`
Adds a group of choices to the dialog with menu items taken from the `enum` class of the specified default item (enum constant).
`<E extends Enum<E>>
void`
`addEnumChoice(String label, E[] enumArray, E defaultItem)`
Adds a group of choices to the dialog with menu items taken from the supplied array of `enum` elements.
`void`
`addFileField(String label, String defaultPath)`
Adds a file text field and "Browse" button, where the field width is determined by the length of 'defaultPath', with a minimum of 25 columns.
`void`
`addFileField(String label, String defaultPath, int columns)`
`void`
`addHelp(String url)`
Adds a "Help" button that opens the specified URL in the default browser.
`void`
`addImage(ImagePlus image)`
Adds an image to the dialog.
`void`
`addImageChoice(String label, String defaultImage)`
Adds a popup menu that lists the currently open images.
`void`
`addMessage(String text)`
Adds a message consisting of one or more lines of text.
`void`
`addMessage(String text, Font font)`
Adds a message consisting of one or more lines of text, which will be displayed using the specified font.
`void`
`addMessage(String text, Font font, Color color)`
Adds a message consisting of one or more lines of text, which will be displayed using the specified font and color.
`void`
`addNumericField(String label, double defaultValue)`
Adds a numeric field.
`void`
`addNumericField(String label, double defaultValue, int digits)`
Adds a numeric field.
`void`
`addNumericField(String label, double defaultValue, int digits, int columns, String units)`
Adds a numeric field.
`void`
`addPanel(Panel panel)`
Adds a Panel to the dialog.
`void`
`addPanel(Panel panel, int constraints, Insets insets)`
Adds a Panel to the dialog with custom contraint and insets.
`void`
`addPreviewCheckbox(PlugInFilterRunner pfr)`
Adds a checkbox labelled "Preview" for "automatic" preview.
`void`
`addPreviewCheckbox(PlugInFilterRunner pfr, String label)`
Add the preview checkbox with user-defined label; for details see the addPreviewCheckbox method with standard "Preview" label.
`void`
`addRadioButtonGroup(String label, String[] items, int rows, int columns, String defaultItem)`
Adds a radio button group.
`void`
`addSlider(String label, double minValue, double maxValue, double defaultValue)`
Adds a slider (scroll bar) to the dialog box.
`void`
`addSlider(String label, double minValue, double maxValue, double defaultValue, double stepSize)`
This vesion of addSlider() adds a 'stepSize' argument.
Example: http://wsr.imagej.net/macros/SliderDemo.txt
`void`
`addStringField(String label, String defaultText)`
Adds an 8 column text field.
`void`
`addStringField(String label, String defaultText, int columns)`
Adds a text field.
`void`
`addTextAreas(String text1, String text2, int rows, int columns)`
Adds one or two (side by side) text areas.
`void`
`addToSameRow()`
Makes the next item appear in the same row as the previous.
`void`
`adjustmentValueChanged(AdjustmentEvent e)`
`void`
`centerDialog(boolean b)`
Display dialog centered on the primary screen.
`void`
`dispose()`
Closes the dialog; records the options
`void`
`enableYesNoCancel()`
Make this a "Yes No Cancel" dialog.
`void`
`enableYesNoCancel(String yesLabel, String noLabel)`
Make this a "Yes No Cancel" dialog with custom labels.
`void`
`focusGained(FocusEvent e)`
`void`
`focusLost(FocusEvent e)`
`Button[]`
`getButtons()`
Returns references to the "OK" ("Yes"), "Cancel", "No", and "Help" buttons as an array of length 4.
`Vector`
`getCheckboxes()`
Returns the Vector containing the Checkboxes.
`Vector`
`getChoices()`
Returns the Vector containing the Choices.
`String`
`getErrorMessage()`
Returns an error message if getNextNumber was unable to convert a string into a number, otherwise, returns null.
`Insets`
`getInsets()`
`static GenericDialog`
`getInstance()`
`Label`
`getLabel()`
Returns a reference to the label of the most recently added numeric field, string field, choice or slider.
`Component`
`getMessage()`
Returns a reference to the Label or MultiLineLabel created by the last addMessage() call.
`boolean`
`getNextBoolean()`
Returns the state of the next checkbox.
`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.
`<E extends Enum<E>>
E`
`getNextEnumChoice(Class<E> enumClass)`
Returns the selected item in the next enum choice menu.
`ImagePlus`
`getNextImage()`
`double`
`getNextNumber()`
Returns the contents of the next numeric field, or NaN if the field does not contain a number.
`String`
`getNextRadioButton()`
Returns the selected item in the next radio button group.
`String`
`getNextString()`
Returns the contents of the next text field.
`String`
`getNextText()`
Returns the contents of the next text area.
`Vector`
`getNumericFields()`
Returns the Vector containing the numeric TextFields.
`Checkbox`
`getPreviewCheckbox()`
Returns a reference to the Preview checkbox.
`Vector`
`getRadioButtonGroups()`
Returns the Vector that contains the RadioButtonGroups.
`Vector`
`getSliders()`
Returns the Vector containing the sliders (Scrollbars).
`Vector`
`getStringFields()`
Returns the Vector containing the string TextFields.
`TextArea`
`getTextArea1()`
Returns a reference to textArea1.
`TextArea`
`getTextArea2()`
Returns a reference to textArea2.
`protected Double`
`getValue(String text)`
`void`
`hideCancelButton()`
Do not display "Cancel" button.
`boolean`
`invalidNumber()`
Returns true if one or more of the numeric fields contained an invalid number.
`protected boolean`
`isMacro()`
`boolean`
`isPreviewActive()`
Returns 'true' if this dialog has a "Preview" checkbox and it is enabled.
`void`
`itemStateChanged(ItemEvent e)`
`void`
`keyPressed(KeyEvent e)`
`void`
`keyReleased(KeyEvent e)`
`void`
`keyTyped(KeyEvent e)`
`void`
`paint(Graphics g)`
`double`
`parseDouble(String s)`
`void`
`previewRunning(boolean isRunning)`
Used by PlugInFilterRunner to provide visable feedback whether preview is running or not by switching from "Preview" to "wait..."
`void`
`repaint()`
`void`
`resetCounters()`
Reset the counters before reading the dialog parameters
`void`
`setCancelLabel(String label)`
Sets a replacement label for the "Cancel" button.
`void`
`setDefaultString(int index, String str)`
`void`
`setEchoChar(char echoChar)`
Sets the echo character for the next string field.
`void`
`setFont(Font font)`
`void`
`setHelpLabel(String label)`
Sets a replacement label for the "Help" button.
`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 (except components added to the same row with addToSameRow)
`void`
`setLocation(int x, int y)`
`void`
`setOKLabel(String label)`
Sets a replacement label for the "OK" button.
`void`
`setSmartRecording(boolean smartRecording)`
Unchanged parameters are not recorder in 'smart recording' mode.
`protected void`
`setup()`
`void`
`showDialog()`
Displays this dialog box.
`void`
`textValueChanged(TextEvent e)`
`boolean`
`wasCanceled()`
Returns true if the user clicked on "Cancel".
`boolean`
`wasOKed()`
Returns true if the user has clicked on "OK" or a macro is running.
`void`
`windowActivated(WindowEvent e)`
`void`
`windowClosed(WindowEvent e)`
`void`
`windowClosing(WindowEvent e)`
`void`
`windowDeactivated(WindowEvent e)`
`void`
`windowDeiconified(WindowEvent e)`
`void`
`windowIconified(WindowEvent e)`
`void`
`windowOpened(WindowEvent e)`

### Methods inherited from class java.awt.Dialog

`addNotify, getAccessibleContext, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, paramString, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, setVisible, show, toBack`

### Methods inherited from class java.awt.Window

`addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, postEvent, processEvent, processWindowEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, 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, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, 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, 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, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### numberField

protected Vector numberField

### stringField

protected Vector stringField

### checkbox

protected Vector checkbox

### choice

protected Vector choice

### slider

protected Vector slider

### radioButtonGroups

protected Vector radioButtonGroups

### textArea1

protected TextArea textArea1

### textArea2

protected TextArea textArea2

### defaultValues

protected Vector defaultValues

### defaultText

protected Vector defaultText

### defaultStrings

protected Vector defaultStrings

### defaultChoiceIndexes

protected Vector defaultChoiceIndexes

### theLabel

protected Component theLabel

### instance

protected static GenericDialog instance

## Constructor Details

### GenericDialog

public GenericDialog(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(String title, Frame parent)
Creates a new GenericDialog using the specified title and parent frame.

## Method Details

### addNumericField

public void addNumericField(String label, double defaultValue)
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

### addNumericField

public void addNumericField(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(String label, double defaultValue, int digits, int columns, 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(String label, String defaultText)
Adds an 8 column text field.

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

### addStringField

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

Parameters:
  `label` - the label
  `defaultText` - text initially displayed
  `columns` - width of the text field. If columns is 8 or more, additional items may be added to this line with addToSameRow()

### setEchoChar

public void setEchoChar(char echoChar)
Sets the echo character for the next string field.

### addDirectoryField

public void addDirectoryField(String label, String defaultPath)
Adds a directory text field and "Browse" button, where the field width is determined by the length of 'defaultPath', with a minimum of 25 columns. Use getNextString to retrieve the directory path. Call OpenDialog.setDefaultDirectory() to set the default directory used when the user clicks on "Browse". Based on the addDirectoryField() method in Fiji's GenericDialogPlus class.

See Also:
  - `OpenDialog.setDefaultDirectory(String)`

### addDirectoryField

public void addDirectoryField(String label, String defaultPath, int columns)

### addFileField

public void addFileField(String label, String defaultPath)
Adds a file text field and "Browse" button, where the field width is determined by the length of 'defaultPath', with a minimum of 25 columns. Use getNextString to retrieve the file path. Based on the addFileField() method in Fiji's GenericDialogPlus class.

### addFileField

public void addFileField(String label, String defaultPath, int columns)

### addButton

public void addButton(String label, ActionListener listener)
Add button to the dialog

Parameters:
  `label` - button label
  `listener` - listener to handle the action when pressing the button

### addImageChoice

public void addImageChoice(String label, String defaultImage)
Adds a popup menu that lists the currently open images. Call getNextImage() to retrieve the selected image. Based on the addImageChoice() method in Fiji's GenericDialogPlus class.

Parameters:
  `label` - the label
  `defaultImage` - the image title initially selected in the menu or the first image if null

### getNextImage

public ImagePlus getNextImage()

### addEnumChoice

public <E extends Enum<E>> void addEnumChoice(String label, E defaultItem)
Adds a group of choices to the dialog with menu items taken from the `enum` class of the specified default item (enum constant). Calls the original (string-based) `addChoice(String, String[], String)` method. Usage example:

     import ij.process.AutoThresholder.Method;
     ...
     Method method = Method.Otsu;

     GenericDialog gd = new GenericDialog("Select AutoThresholder Method");
     gd.addEnumChoice("All threshold methods", method);
     ...
     gd.showDialog();
     ...
     method = gd.getNextEnumChoice(Method.class);

Type Parameters:
  `E` - the generic enum type containing the items to chose from
Parameters:
  `label` - the label displayed for this choice group
  `defaultItem` - the menu item initially selected
See Also:
  - `addEnumChoice(String, Enum[], Enum)`
  - `getNextEnumChoice(Class)`

### addEnumChoice

public <E extends Enum<E>> void addEnumChoice(String label, E[] enumArray, E defaultItem)
Adds a group of choices to the dialog with menu items taken from the supplied array of `enum` elements. This allows to present only a subset of enum choices in a specified order. A default item (enum constant) must be specified which, if `null` of not contained in the enum array, is replaced by the first element of the enum array. Calls the original (string-based) `addChoice(String, String[], String)` method. Usage example:

     import ij.process.AutoThresholder.Method;
     ...
     Method[] selectMethods = {Method.Triangle, Method.Otsu, Method.Huang};
     Method method = Method.Otsu;

     GenericDialog gd = new GenericDialog("Select AutoThresholder Method");
     gd.addEnumChoice("Select threshold methods", selectMethods, method);
     ...
     gd.showDialog();
     ...
     method = gd.getNextEnumChoice(Method.class);

Type Parameters:
  `E` - the generic enum type containing the items to choose from
Parameters:
  `label` - the label displayed for this choice group
  `enumArray` - an array of enum items (of type E)
  `defaultItem` - the menu item initially selected (of type E, may be `null`)
See Also:
  - `addEnumChoice(String, Enum)`
  - `getNextEnumChoice(Class)`

### getNextEnumChoice

public <E extends Enum<E>> E getNextEnumChoice(Class<E> enumClass)
Returns the selected item in the next enum choice menu. Note that 'enumClass' is required to infer the proper enum type. Throws `IllegalArgumentException` if the selected item is not a defined constant in the specified enum class.

Type Parameters:
  `E` - the generic enum type
Parameters:
  `enumClass` - the enum type
Returns:
  the selected item

### addCheckbox

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

Parameters:
  `label` - the label
  `defaultValue` - the initial state

### addPreviewCheckbox

public void addPreviewCheckbox(PlugInFilterRunner pfr)
Adds a checkbox labelled "Preview" for "automatic" preview. The reference to this checkbox can be retrieved by getPreviewCheckbox() and it provides the additional method previewRunning for optical feedback while preview is prepared. PlugInFilters can have their "run" method automatically called for preview under the following conditions: - the PlugInFilter must pass a reference to itself (i.e., "this") as an argument to the AddPreviewCheckbox - it must implement the DialogListener interface and set the filter parameters in the dialogItemChanged method. - it must have DIALOG and PREVIEW set in its flags. A previewCheckbox is always off when the filter is started and does not get recorded by the Macro Recorder.

Parameters:
  `pfr` - A reference to the PlugInFilterRunner calling the PlugInFilter if automatic preview is desired, null otherwise.

### addPreviewCheckbox

public void addPreviewCheckbox(PlugInFilterRunner pfr, String label)
Add the preview checkbox with user-defined label; for details see the addPreviewCheckbox method with standard "Preview" label. Adds the checkbox when the current image is a CompositeImage in "Composite" mode, unlike the one argument version. Note that a GenericDialog can have only one PreviewCheckbox.

### addCheckboxGroup

public void addCheckboxGroup(int rows, int columns, 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

### addCheckboxGroup

public void addCheckboxGroup(int rows, int columns, String[] labels, boolean[] defaultValues, String[] headings)
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
  `headings` - the column headings Example: http://imagej.nih.gov/ij/plugins/multi-column-dialog/index.html

### addRadioButtonGroup

public void addRadioButtonGroup(String label, String[] items, int rows, int columns, String defaultItem)
Adds a radio button group.

Parameters:
  `label` - group label (or null)
  `items` - radio button labels
  `rows` - number of rows
  `columns` - number of columns
  `defaultItem` - button initially selected

### addChoice

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

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

### addMessage

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

### addMessage

public void addMessage(String text, Font font)
Adds a message consisting of one or more lines of text, which will be displayed using the specified font.

### addMessage

public void addMessage(String text, Font font, Color color)
Adds a message consisting of one or more lines of text, which will be displayed using the specified font and color.

### addTextAreas

public void addTextAreas(String text1, String text2, int rows, int columns)
Adds one or two (side by side) text areas. Append "SCROLLBARS_VERTICAL_ONLY" to the text of the first text area to get vertical scrollbars and "SCROLLBARS_BOTH" to get both vertical and horizontal scrollbars.

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

### addSlider

public void addSlider(String label, double minValue, double maxValue, double defaultValue)
Adds a slider (scroll bar) to the dialog box. Floating point values are used if (maxValue-minValue)invalid input: '<'=5.0 and either defaultValue or minValue are non-integer.

Parameters:
  `label` - the label
  `minValue` - the minimum value of the slider
  `maxValue` - the maximum value of the slider
  `defaultValue` - the initial value of the slider

### addSlider

public void addSlider(String label, double minValue, double maxValue, double defaultValue, double stepSize)
This vesion of addSlider() adds a 'stepSize' argument.
Example: http://wsr.imagej.net/macros/SliderDemo.txt

### addPanel

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

### addPanel

public void addPanel(Panel panel, int constraints, 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).

### addImage

public void addImage(ImagePlus image)
Adds an image to the dialog.

### 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 (except components added to the same row with addToSameRow)

            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
                    addRadioButtonGroup: 5,10,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

### addToSameRow

public void addToSameRow()
Makes the next item appear in the same row as the previous. May be used for addNumericField, addSlider, addChoice, addCheckbox, addStringField, addMessage, addPanel, and before the showDialog() method (in the latter case, the buttons appear to the right of the previous item). Note that addMessage (and addStringField, if its column width is more than 8) use the remaining width, so it must be the last item of a row.

### setOKLabel

public void setOKLabel(String label)
Sets a replacement label for the "OK" button.

### setCancelLabel

public void setCancelLabel(String label)
Sets a replacement label for the "Cancel" button.

### setHelpLabel

public void setHelpLabel(String label)
Sets a replacement label for the "Help" button.

### setSmartRecording

public void setSmartRecording(boolean smartRecording)
Unchanged parameters are not recorder in 'smart recording' mode.

### enableYesNoCancel

public void enableYesNoCancel()
Make this a "Yes No Cancel" dialog.

### enableYesNoCancel

public void enableYesNoCancel(String yesLabel, String noLabel)
Make this a "Yes No Cancel" dialog with custom labels. Here is an example:

                    GenericDialog gd = new GenericDialog("YesNoCancel Demo");
                    gd.addMessage("This is a custom YesNoCancel dialog");
                    gd.enableYesNoCancel("Do something", "Do something else");
                    gd.showDialog();
                    if (gd.wasCanceled())
                            IJ.log("User clicked 'Cancel'");
                    else if (gd.wasOKed())
                            IJ. log("User clicked 'Yes'");
                    else
                            IJ. log("User clicked 'No'");

### hideCancelButton

public void hideCancelButton()
Do not display "Cancel" button.

### addDialogListener

public void addDialogListener(DialogListener dl)
Add an Object implementing the DialogListener interface. This object will be notified by its dialogItemChanged method of input to the dialog. The first DialogListener will be also called after the user has typed 'OK' or if the dialog has been invoked by a macro; it should read all input fields of the dialog. For other listeners, the OK button will not cause a call to dialogItemChanged; the CANCEL button will never cause such a call.

Parameters:
  `dl` - the Object that wants to listen.

### wasCanceled

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

### wasOKed

public boolean wasOKed()
Returns true if the user has clicked on "OK" or a macro is running.

### getNextNumber

public double getNextNumber()
Returns the contents of the next numeric field, or NaN if the field does not contain a number.

### getValue

protected Double getValue(String text)

### parseDouble

public double parseDouble(String s)

### 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 String getErrorMessage()
Returns an error message if getNextNumber was unable to convert a string into a number, otherwise, returns null.

### getNextString

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

### getNextBoolean

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

### getNextChoice

public 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.

### getNextRadioButton

public String getNextRadioButton()
Returns the selected item in the next radio button group.

### getNextText

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

### showDialog

public void showDialog()
Displays this dialog box.

### setFont

public void setFont(Font font)

Overrides:
  `setFont` in class `Container`

### resetCounters

public void resetCounters()
Reset the counters before reading the dialog parameters

### getNumericFields

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

### getStringFields

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

### getCheckboxes

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

### getChoices

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

### getSliders

public Vector getSliders()
Returns the Vector containing the sliders (Scrollbars).

### getRadioButtonGroups

public Vector getRadioButtonGroups()
Returns the Vector that contains the RadioButtonGroups.

### getTextArea1

public TextArea getTextArea1()
Returns a reference to textArea1.

### getTextArea2

public TextArea getTextArea2()
Returns a reference to textArea2.

### getMessage

public Component getMessage()
Returns a reference to the Label or MultiLineLabel created by the last addMessage() call. Otherwise returns null.

### getPreviewCheckbox

public Checkbox getPreviewCheckbox()
Returns a reference to the Preview checkbox.

### isPreviewActive

public boolean isPreviewActive()
Returns 'true' if this dialog has a "Preview" checkbox and it is enabled.

### getButtons

public Button[] getButtons()
Returns references to the "OK" ("Yes"), "Cancel", "No", and "Help" buttons as an array of length 4. If a button is not present, the corresponding array element is null.

### previewRunning

public void previewRunning(boolean isRunning)
Used by PlugInFilterRunner to provide visable feedback whether preview is running or not by switching from "Preview" to "wait..."

### centerDialog

public void centerDialog(boolean b)
Display dialog centered on the primary screen.

### setLocation

public void setLocation(int x, int y)

Overrides:
  `setLocation` in class `Window`

### setDefaultString

public void setDefaultString(int index, String str)

### setup

protected void setup()

### actionPerformed

public void actionPerformed(ActionEvent e)

Specified by:
  `actionPerformed` in interface `ActionListener`

### textValueChanged

public void textValueChanged(TextEvent e)

Specified by:
  `textValueChanged` in interface `TextListener`

### itemStateChanged

public void itemStateChanged(ItemEvent e)

Specified by:
  `itemStateChanged` in interface `ItemListener`

### focusGained

public void focusGained(FocusEvent e)

Specified by:
  `focusGained` in interface `FocusListener`

### focusLost

public void focusLost(FocusEvent e)

Specified by:
  `focusLost` in interface `FocusListener`

### keyPressed

public void keyPressed(KeyEvent e)

Specified by:
  `keyPressed` in interface `KeyListener`

### keyReleased

public void keyReleased(KeyEvent e)

Specified by:
  `keyReleased` in interface `KeyListener`

### keyTyped

public void keyTyped(KeyEvent e)

Specified by:
  `keyTyped` in interface `KeyListener`

### getInsets

public Insets getInsets()

Overrides:
  `getInsets` in class `Container`

### adjustmentValueChanged

public void adjustmentValueChanged(AdjustmentEvent e)

Specified by:
  `adjustmentValueChanged` in interface `AdjustmentListener`

### repaint

public void repaint()

Overrides:
  `repaint` in class `Component`

### paint

public void paint(Graphics g)

Overrides:
  `paint` in class `Window`

### windowClosing

public void windowClosing(WindowEvent e)

Specified by:
  `windowClosing` in interface `WindowListener`

### addHelp

public void addHelp(String url)
Adds a "Help" button that opens the specified URL in the default browser. With v1.46b or later, displays an HTML formatted message if 'url' starts with "
". There is an example at http://imagej.nih.gov/ij/macros/js/DialogWithHelp.js If url is an empty String, pressing the "Help" button does nothing except calling the DialogListeners (if any). See also: setHelpLabel.

### isMacro

protected boolean isMacro()

### getInstance

public static GenericDialog getInstance()

### dispose

public void dispose()
Closes the dialog; records the options

Overrides:
  `dispose` in class `Window`

### getLabel

public Label getLabel()
Returns a reference to the label of the most recently added numeric field, string field, choice or slider.

### windowActivated

public void windowActivated(WindowEvent e)

Specified by:
  `windowActivated` in interface `WindowListener`

### windowOpened

public void windowOpened(WindowEvent e)

Specified by:
  `windowOpened` in interface `WindowListener`

### windowClosed

public void windowClosed(WindowEvent e)

Specified by:
  `windowClosed` in interface `WindowListener`

### windowIconified

public void windowIconified(WindowEvent e)

Specified by:
  `windowIconified` in interface `WindowListener`

### windowDeiconified

public void windowDeiconified(WindowEvent e)

Specified by:
  `windowDeiconified` in interface `WindowListener`

### windowDeactivated

public void windowDeactivated(WindowEvent e)

Specified by:
  `windowDeactivated` in interface `WindowListener`