Package ij.gui

Class 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
  • Field Details

  • 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, 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.
    • 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.
      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)<=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()
      No 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
    • 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, or null if addMessage() was not called.
    • 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", and if present, "No" buttons as an array.
    • 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
    • isMacro

      protected boolean isMacro()
    • getInstance

      public static GenericDialog getInstance()
    • dispose

      public void dispose()
      Overrides:
      dispose in class Window
    • 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