jigcell.compare.ui
Class InterfaceBuilder

java.lang.Object
  extended by jigcell.compare.ui.InterfaceBuilder

public class InterfaceBuilder
extends java.lang.Object

Generates and manages interfaces for another component. Only one interface can be created at a time with this class. Synchronization should be used to prevent multiple simultaneous interface creation attempts.

This code is licensed under the DARPA BioCOMP Open Source License. See LICENSE for more details.

Author:
Nicholas Allen

Field Summary
protected  java.util.List blocks
          Blocks in the curernt interface
static javax.swing.border.Border BORDER_NOTHING
          Clean border for nested components
protected static java.lang.String CLIENT_COMPONENTNAME
          Component client property for customizer name
protected  java.util.List components
          Components in the current interface row
protected  java.awt.GridBagConstraints constraints
          Layout constraints
protected static java.lang.String DEFAULT_COMBOBOXPROTOTYPE
          Default label for a combo box
protected static java.awt.Insets DEFAULT_INSETS
          Insets for spacing components
protected static java.lang.String DEFAULT_LISTPROTOTYPE
          Default label for a list
protected static int DEFAULT_TEXTFIELDSIZE
          Default width for a text field
protected  java.lang.ref.Reference display
          Display for this interface
protected static java.lang.String LABEL_CANCEL
          Button label for closing a dialog without accepting choice
protected static java.lang.String LABEL_ERRORCLOSE
          Button label for closing an error dialog normally
protected static java.lang.String LABEL_ERRORSHOWMORE
          Button label for closing an error dialog and wanting to see a stack trace
protected static java.lang.String[] LABELS_ERROR
          Button labels for closing an error dialog with no stack trace available
protected static java.lang.String[] LABELS_ERROR2
          Button label for closing an error dialog with stack trace available
protected  java.awt.GridBagLayout layout
          Interface layout
protected static java.lang.String MESSAGE_NOMESSAGE
          Message text to use when no error message is available
protected  java.lang.ref.Reference owner
          Owner of this interface
protected  javax.swing.JPanel panel
          Interface block holder
protected  java.util.Map registered
          Components registered by this interface
 
Constructor Summary
InterfaceBuilder(java.lang.Object owner)
          Creates a new managed interface.
InterfaceBuilder(java.lang.Object owner, java.awt.Component display)
          Creates a new managed interface.
 
Method Summary
 javax.swing.JButton addButton(java.lang.String label)
          Adds a button to the interface.
 javax.swing.JButton addButton(java.lang.String name, java.lang.String label)
          Adds a button to the interface.
 javax.swing.JCheckBox addCheckBox(java.lang.String name)
          Adds a check box to the interface.
 javax.swing.JCheckBox addCheckBox(java.lang.String name, java.lang.String label)
          Adds a check box to the interface.
 javax.swing.JComboBox addComboBox(java.lang.String name, javax.swing.ComboBoxModel model)
          Adds a combo box to the interface.
 javax.swing.JComboBox addComboBox(java.lang.String name, javax.swing.ComboBoxModel model, java.lang.String prototype)
          Adds a combo box to the interface.
 javax.swing.JComponent addComponent(java.lang.String name, javax.swing.JComponent component)
          Adds a component to the interface.
static void addComponentRow(javax.swing.JComponent parent, java.awt.GridBagLayout layout, java.awt.GridBagConstraints constraints, javax.swing.JComponent[] components, java.awt.event.ActionListener actionListener, javax.swing.event.ChangeListener changeListener, java.awt.event.ItemListener itemListener)
          Adds a row of components to an interface and attaches listeners as appropriate.
static void addComponentRow(javax.swing.JComponent parent, java.awt.GridBagLayout layout, java.awt.GridBagConstraints constraints, javax.swing.JComponent[] components, java.awt.event.ActionListener actionListener, javax.swing.event.ChangeListener changeListener, java.awt.event.ItemListener itemListener, boolean center)
          Adds a row of components to an interface and attaches listeners as appropriate.
 javax.swing.JLabel addLabel(javax.swing.Icon icon)
          Adds a label to the interface.
 javax.swing.JLabel addLabel(java.lang.String label)
          Adds a label to the interface.
 javax.swing.JList addList(java.lang.String label, javax.swing.ListModel model, boolean wrapped)
          Adds a list to the interface.
 javax.swing.JList addList(java.lang.String label, javax.swing.ListModel model, boolean wrapped, javax.swing.ListSelectionModel selection)
          Adds a list to the interface.
 javax.swing.JList addList(java.lang.String label, javax.swing.ListModel model, boolean wrapped, javax.swing.ListSelectionModel selection, java.lang.String prototype)
          Adds a list to the interface.
 javax.swing.JRadioButton addRadioButton(java.lang.String name, java.lang.String text, javax.swing.ButtonGroup group)
          Adds a radio button to the interface.
 javax.swing.JSeparator addSeparator(int orientation)
          Adds a separator to the interface.
 javax.swing.JSlider addSlider(java.lang.String name, javax.swing.BoundedRangeModel model)
          Adds a slider to the interface.
 javax.swing.JSpinner addSpinner(java.lang.String name, javax.swing.SpinnerModel model)
          Adds a spinner to the interface.
 javax.swing.JTable addTable(java.lang.String name, BasicTable.BasicTableModel model)
          Adds a table to the interface.
 javax.swing.JTextArea addTextArea(java.lang.String name, javax.swing.text.Document document)
          Adds a text area to the interface.
 javax.swing.JTextArea addTextArea(java.lang.String name, javax.swing.text.Document document, int rows, int columns, boolean wrapped)
          Adds a text area to the interface.
 javax.swing.JTextField addTextField(java.lang.String name, javax.swing.text.Document document)
          Adds a text field to the interface.
 javax.swing.JTextField addTextField(java.lang.String name, javax.swing.text.Document document, int columns)
          Adds a text field to the interface.
static javax.swing.JPanel createButtonPanel(javax.swing.JButton[] buttons)
          Creates a panel holding a collection of buttons.
static javax.swing.text.Document createDocument(java.lang.String text)
          Creates a new document from existing text.
static javax.swing.JFileChooser createFileChooser()
          The standard file chooser used by views.
static javax.swing.JFileChooser createFileChooser(javax.swing.filechooser.FileFilter filter)
          The standard file chooser used by views.
static javax.swing.JComponent createHTMLViewer(java.lang.String text, int width)
          Creates a viewer for HTML.
static javax.swing.JComponent createHTMLViewer(java.net.URL url, int width)
          Creates a viewer for HTML.
 void endBlock()
          Signals that a block in the interface has been completed.
 javax.swing.JComponent endInterface()
          Creates the described interface.
 void endRow()
          Signals that a row in the interface has been completed.
 void endRow(boolean centered)
          Signals that a row in the interface has been completed.
 void endRow(boolean centered, int fill)
          Signals that a row in the interface has been completed.
static void fitComponentInDialog(javax.swing.JDialog dialog, javax.swing.JComponent component, int width, int height)
          Checks that a component fits in the desired space or wraps it in a scroll pane.
 java.lang.String getComponentName(javax.swing.JComponent component)
          The name given for this particular component.
 java.lang.String getComponentName(java.lang.Object component)
          The name given for this particular component.
 java.awt.Component getDisplay()
          The display for this manager.
static int[] getSelectedIndices(javax.swing.ListSelectionModel model)
          The selected indices of a list selection model.
static java.lang.String readDocument(javax.swing.text.Document document)
          Reads the text out of document.
static void replaceDocument(javax.swing.text.Document document, java.lang.String text)
          Replaces the text in a document.
 void setCheckBoxSelection(java.lang.String name, boolean selection)
          Sets the selection state for a group of checkboxes.
 void setComponentEnabled(java.lang.String name, boolean enabled)
          Sets the enabled state for a group of components.
 void setComponentTreeEnabled(java.lang.String name, boolean enabled)
          Sets the enabled state for a group of component trees.
 int showChoiceDialog(java.lang.String title, java.lang.Object message, java.lang.String[] options, int initial)
          Prompts the user to make a choice from among several options.
 void showErrorDialog(java.lang.String title, java.lang.Object message, java.lang.Throwable t)
          Informs the user of an error or warning in the Comparator.
 void showErrorTrace(java.lang.String title, java.lang.Object message, java.lang.Throwable t)
          Informs the user of an error or warning in the Comparator.
 java.lang.Object showInputDialog(java.lang.String title, java.lang.Object[] choices, java.lang.Object initial, java.lang.String accept)
          Prompts the user for input.
 java.lang.Object showInputDialog(java.lang.String title, java.lang.Object[] choices, java.lang.Object initial, java.lang.String accept, boolean editable)
          Prompts the user for input.
 java.lang.Object showInputDialog(java.lang.String title, java.lang.Object initial, java.lang.String accept)
          Prompts the user for input.
 void showMessageDialog(java.lang.String title, java.lang.Object message)
          Shows the user a message.
protected  void startBlock()
          Starts a new block.
protected  void startInterface()
          Starts a new interface.
protected  void startRow()
          Starts a new interface row.
protected static javax.swing.JComponent wrapHTMLEditor(javax.swing.JEditorPane pane)
          Fixes up an editor pane to be an HTML viewer and wraps it in a panel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BORDER_NOTHING

public static final javax.swing.border.Border BORDER_NOTHING
Clean border for nested components


DEFAULT_INSETS

protected static final java.awt.Insets DEFAULT_INSETS
Insets for spacing components


DEFAULT_TEXTFIELDSIZE

protected static final int DEFAULT_TEXTFIELDSIZE
Default width for a text field

See Also:
Constant Field Values

CLIENT_COMPONENTNAME

protected static final java.lang.String CLIENT_COMPONENTNAME
Component client property for customizer name

See Also:
Constant Field Values

DEFAULT_COMBOBOXPROTOTYPE

protected static final java.lang.String DEFAULT_COMBOBOXPROTOTYPE
Default label for a combo box

See Also:
Constant Field Values

DEFAULT_LISTPROTOTYPE

protected static final java.lang.String DEFAULT_LISTPROTOTYPE
Default label for a list

See Also:
Constant Field Values

LABEL_CANCEL

protected static final java.lang.String LABEL_CANCEL
Button label for closing a dialog without accepting choice

See Also:
Constant Field Values

LABEL_ERRORCLOSE

protected static final java.lang.String LABEL_ERRORCLOSE
Button label for closing an error dialog normally

See Also:
Constant Field Values

LABEL_ERRORSHOWMORE

protected static final java.lang.String LABEL_ERRORSHOWMORE
Button label for closing an error dialog and wanting to see a stack trace

See Also:
Constant Field Values

LABELS_ERROR

protected static final java.lang.String[] LABELS_ERROR
Button labels for closing an error dialog with no stack trace available


LABELS_ERROR2

protected static final java.lang.String[] LABELS_ERROR2
Button label for closing an error dialog with stack trace available


MESSAGE_NOMESSAGE

protected static final java.lang.String MESSAGE_NOMESSAGE
Message text to use when no error message is available

See Also:
Constant Field Values

constraints

protected java.awt.GridBagConstraints constraints
Layout constraints


layout

protected java.awt.GridBagLayout layout
Interface layout


panel

protected javax.swing.JPanel panel
Interface block holder


blocks

protected java.util.List blocks
Blocks in the curernt interface


components

protected java.util.List components
Components in the current interface row


registered

protected java.util.Map registered
Components registered by this interface


display

protected java.lang.ref.Reference display
Display for this interface


owner

protected java.lang.ref.Reference owner
Owner of this interface

Constructor Detail

InterfaceBuilder

public InterfaceBuilder(java.lang.Object owner)
Creates a new managed interface.

Parameters:
owner - Owner of this interface

InterfaceBuilder

public InterfaceBuilder(java.lang.Object owner,
                        java.awt.Component display)
Creates a new managed interface.

Parameters:
owner - Owner of this interface
Method Detail

addComponentRow

public static void addComponentRow(javax.swing.JComponent parent,
                                   java.awt.GridBagLayout layout,
                                   java.awt.GridBagConstraints constraints,
                                   javax.swing.JComponent[] components,
                                   java.awt.event.ActionListener actionListener,
                                   javax.swing.event.ChangeListener changeListener,
                                   java.awt.event.ItemListener itemListener)
Adds a row of components to an interface and attaches listeners as appropriate.

Parameters:
parent - Parent component
layout - Grid bag to put panel in
constraints - Grid bag constraints to control layout
components - Components
actionListener - Action listener
changeListener - Change listener
itemListener - Item listener

addComponentRow

public static void addComponentRow(javax.swing.JComponent parent,
                                   java.awt.GridBagLayout layout,
                                   java.awt.GridBagConstraints constraints,
                                   javax.swing.JComponent[] components,
                                   java.awt.event.ActionListener actionListener,
                                   javax.swing.event.ChangeListener changeListener,
                                   java.awt.event.ItemListener itemListener,
                                   boolean center)
Adds a row of components to an interface and attaches listeners as appropriate.

Parameters:
parent - Parent component
layout - Grid bag to put panel in
constraints - Grid bag constraints to control layout
components - Components
actionListener - Action listener
changeListener - Change listener
itemListener - Item listener
center - Whether to center the components

createButtonPanel

public static javax.swing.JPanel createButtonPanel(javax.swing.JButton[] buttons)
Creates a panel holding a collection of buttons.

Parameters:
buttons - Buttons

createDocument

public static javax.swing.text.Document createDocument(java.lang.String text)
Creates a new document from existing text.

Parameters:
text - Text

createFileChooser

public static javax.swing.JFileChooser createFileChooser()
The standard file chooser used by views.


createFileChooser

public static javax.swing.JFileChooser createFileChooser(javax.swing.filechooser.FileFilter filter)
The standard file chooser used by views.

Parameters:
filter - File chooser filters

createHTMLViewer

public static javax.swing.JComponent createHTMLViewer(java.lang.String text,
                                                      int width)
Creates a viewer for HTML.

Parameters:
text - HTML text
width - Width of viewer

createHTMLViewer

public static javax.swing.JComponent createHTMLViewer(java.net.URL url,
                                                      int width)
Creates a viewer for HTML.

Parameters:
url - Location of HTML text
width - Width of viewer

fitComponentInDialog

public static void fitComponentInDialog(javax.swing.JDialog dialog,
                                        javax.swing.JComponent component,
                                        int width,
                                        int height)
Checks that a component fits in the desired space or wraps it in a scroll pane.

Parameters:
dialog - Dialog
component - component
width - Width
height - Height

getSelectedIndices

public static int[] getSelectedIndices(javax.swing.ListSelectionModel model)
The selected indices of a list selection model.

Parameters:
model - Model

readDocument

public static java.lang.String readDocument(javax.swing.text.Document document)
Reads the text out of document.

Parameters:
document - Document

replaceDocument

public static void replaceDocument(javax.swing.text.Document document,
                                   java.lang.String text)
Replaces the text in a document.

Parameters:
document - Document
text - Text

wrapHTMLEditor

protected static javax.swing.JComponent wrapHTMLEditor(javax.swing.JEditorPane pane)
Fixes up an editor pane to be an HTML viewer and wraps it in a panel.

Parameters:
pane - Editor pane

addButton

public javax.swing.JButton addButton(java.lang.String label)
Adds a button to the interface.

Parameters:
label - Button label

addButton

public javax.swing.JButton addButton(java.lang.String name,
                                     java.lang.String label)
Adds a button to the interface.

Parameters:
name - Component name
label - Button label

addCheckBox

public javax.swing.JCheckBox addCheckBox(java.lang.String name)
Adds a check box to the interface.

Parameters:
name - Component name

addCheckBox

public javax.swing.JCheckBox addCheckBox(java.lang.String name,
                                         java.lang.String label)
Adds a check box to the interface.

Parameters:
name - Component name
label - Box label

addComboBox

public javax.swing.JComboBox addComboBox(java.lang.String name,
                                         javax.swing.ComboBoxModel model)
Adds a combo box to the interface.

Parameters:
name - Component name
model - Box model

addComboBox

public javax.swing.JComboBox addComboBox(java.lang.String name,
                                         javax.swing.ComboBoxModel model,
                                         java.lang.String prototype)
Adds a combo box to the interface.

Parameters:
name - Component name
model - Box model
prototype - Prototype label or null

addComponent

public javax.swing.JComponent addComponent(java.lang.String name,
                                           javax.swing.JComponent component)
Adds a component to the interface.

Parameters:
name - Component name
component - Component

addLabel

public javax.swing.JLabel addLabel(javax.swing.Icon icon)
Adds a label to the interface.

Parameters:
icon - Label icon

addLabel

public javax.swing.JLabel addLabel(java.lang.String label)
Adds a label to the interface.

Parameters:
label - Label

addList

public javax.swing.JList addList(java.lang.String label,
                                 javax.swing.ListModel model,
                                 boolean wrapped)
Adds a list to the interface.

Parameters:
label - Label
model - List data model
wrapped - Whether the list should be enclosed in a scrollpane

addList

public javax.swing.JList addList(java.lang.String label,
                                 javax.swing.ListModel model,
                                 boolean wrapped,
                                 javax.swing.ListSelectionModel selection)
Adds a list to the interface.

Parameters:
label - Label
model - List data model
wrapped - Whether the list should be enclosed in a scrollpane
selection - List selection model

addList

public javax.swing.JList addList(java.lang.String label,
                                 javax.swing.ListModel model,
                                 boolean wrapped,
                                 javax.swing.ListSelectionModel selection,
                                 java.lang.String prototype)
Adds a list to the interface.

Parameters:
label - Label
model - List data model
wrapped - Whether the list should be enclosed in a scrollpane
selection - List selection model
prototype - Cell prototype value

addRadioButton

public javax.swing.JRadioButton addRadioButton(java.lang.String name,
                                               java.lang.String text,
                                               javax.swing.ButtonGroup group)
Adds a radio button to the interface.

Parameters:
name - Component name
text - Button text
group - Button group

addSeparator

public javax.swing.JSeparator addSeparator(int orientation)
Adds a separator to the interface.

Parameters:
orientation - Separator orientation

addSlider

public javax.swing.JSlider addSlider(java.lang.String name,
                                     javax.swing.BoundedRangeModel model)
Adds a slider to the interface.

Parameters:
name - Component name
model - Table model

addSpinner

public javax.swing.JSpinner addSpinner(java.lang.String name,
                                       javax.swing.SpinnerModel model)
Adds a spinner to the interface.

Parameters:
name - Component name
model - Table model

addTable

public javax.swing.JTable addTable(java.lang.String name,
                                   BasicTable.BasicTableModel model)
Adds a table to the interface.

Parameters:
name - Component name
model - Table model

addTextArea

public javax.swing.JTextArea addTextArea(java.lang.String name,
                                         javax.swing.text.Document document)
Adds a text area to the interface.

Parameters:
name - Component name
document - Document

addTextArea

public javax.swing.JTextArea addTextArea(java.lang.String name,
                                         javax.swing.text.Document document,
                                         int rows,
                                         int columns,
                                         boolean wrapped)
Adds a text area to the interface.

Parameters:
name - Component name
document - Document
rows - Initial number of rows in the text area
columns - Initial number of columns in the text area

addTextField

public javax.swing.JTextField addTextField(java.lang.String name,
                                           javax.swing.text.Document document)
Adds a text field to the interface.

Parameters:
name - Component name
document - Document

addTextField

public javax.swing.JTextField addTextField(java.lang.String name,
                                           javax.swing.text.Document document,
                                           int columns)
Adds a text field to the interface.

Parameters:
name - Component name
document - Document
columns - Field width

endBlock

public void endBlock()
Signals that a block in the interface has been completed.


endInterface

public javax.swing.JComponent endInterface()
Creates the described interface.


endRow

public void endRow()
Signals that a row in the interface has been completed.


endRow

public void endRow(boolean centered)
Signals that a row in the interface has been completed.

Parameters:
centered - Whether to center the row

endRow

public void endRow(boolean centered,
                   int fill)
Signals that a row in the interface has been completed.

Parameters:
centered - Whether to center the row
fill - Fill type to use with the row

getComponentName

public java.lang.String getComponentName(javax.swing.JComponent component)
The name given for this particular component.

Parameters:
component - Component

getComponentName

public java.lang.String getComponentName(java.lang.Object component)
The name given for this particular component.

Parameters:
component - Component

getDisplay

public java.awt.Component getDisplay()
The display for this manager.


setCheckBoxSelection

public void setCheckBoxSelection(java.lang.String name,
                                 boolean selection)
Sets the selection state for a group of checkboxes.

Parameters:
name - Component name
selection - Whether the checkboxes are selected

setComponentEnabled

public void setComponentEnabled(java.lang.String name,
                                boolean enabled)
Sets the enabled state for a group of components.

Parameters:
name - Component name
enabled - Whether the components are enabled

setComponentTreeEnabled

public void setComponentTreeEnabled(java.lang.String name,
                                    boolean enabled)
Sets the enabled state for a group of component trees.

Parameters:
name - Root component name
enabled - Whether the components are enabled

showChoiceDialog

public int showChoiceDialog(java.lang.String title,
                            java.lang.Object message,
                            java.lang.String[] options,
                            int initial)
Prompts the user to make a choice from among several options.

Parameters:
title - Type of choice
message - Description of choice
options - Labels for options
initial - Initially selected option

showErrorDialog

public void showErrorDialog(java.lang.String title,
                            java.lang.Object message,
                            java.lang.Throwable t)
Informs the user of an error or warning in the Comparator.

Parameters:
title - Type of message
message - Error message
t - Error object

showErrorTrace

public void showErrorTrace(java.lang.String title,
                           java.lang.Object message,
                           java.lang.Throwable t)
Informs the user of an error or warning in the Comparator.

Parameters:
title - Type of message
message - Error message
t - Error object

showInputDialog

public java.lang.Object showInputDialog(java.lang.String title,
                                        java.lang.Object initial,
                                        java.lang.String accept)
Prompts the user for input.

Parameters:
title - Dialog title
initial - Default value
accept - Text for accept button

showInputDialog

public java.lang.Object showInputDialog(java.lang.String title,
                                        java.lang.Object[] choices,
                                        java.lang.Object initial,
                                        java.lang.String accept)
Prompts the user for input.

Parameters:
title - Dialog title
choices - Choices to provide
initial - Default value
accept - Text for accept button

showInputDialog

public java.lang.Object showInputDialog(java.lang.String title,
                                        java.lang.Object[] choices,
                                        java.lang.Object initial,
                                        java.lang.String accept,
                                        boolean editable)
Prompts the user for input.

Parameters:
title - Dialog title
choices - Choices to provide
initial - Default value
accept - Text for accept button
editable - Whether values other than the list of choices are permitted

showMessageDialog

public void showMessageDialog(java.lang.String title,
                              java.lang.Object message)
Shows the user a message.

Parameters:
title - Type of message
message - Message

startBlock

protected void startBlock()
Starts a new block.


startInterface

protected void startInterface()
Starts a new interface.


startRow

protected void startRow()
Starts a new interface row.