Example usage for com.jgoodies.forms.builder DefaultFormBuilder DefaultFormBuilder

List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder DefaultFormBuilder

Introduction

In this page you can find the example usage for com.jgoodies.forms.builder DefaultFormBuilder DefaultFormBuilder.

Prototype

public DefaultFormBuilder(FormLayout layout) 

Source Link

Document

Constructs a DefaultFormBuilder for the given layout.

Usage

From source file:ca.sqlpower.architect.swingui.PreferencesEditor.java

License:Open Source License

private JPanel createLabelPanel(ArchitectSwingSession session) {
    FormLayout layout = new FormLayout("pref:grow, pref, pref:grow", "pref"); //$NON-NLS-1$ //$NON-NLS-2$
    DefaultFormBuilder fb = new DefaultFormBuilder(layout);

    JLabel label = new JLabel();
    label.setText((session.isEnterpriseSession()
            ? "Enterprise Server JDBCDrivers on " + ((ArchitectSwingSessionImpl) session).getServerName()
            : "Local JDBCDrivers"));
    label.setFont(new Font("Arial", Font.BOLD, 18));
    label.setIcon((session.isEnterpriseSession() ? SERVER_JDBCDRIVER_ICON : LOCAL_JDBCDRIVER_ICON));
    fb.add(label, "2, 1");

    return fb.getPanel();
}

From source file:ca.sqlpower.architect.swingui.UserRepositoryDirectoryChooser.java

License:Open Source License

/**
 * This method allows the selection of the directory. Null is returned if the user cancelled.
 *///from  w  w w . j a  va 2 s . c  om
public RepositoryDirectory selectDirectory(Repository repo) {
    final JDialog chooserDialog = new JDialog(parent);
    chooserDialog.setTitle(Messages.getString("UserRepositoryDirectoryChooser.selectRepositoryDialogTitle")); //$NON-NLS-1$
    FormLayout layout = new FormLayout("10dlu, 2dlu, fill:pref:grow, 12dlu", "pref, fill:pref:grow, pref"); //$NON-NLS-1$ //$NON-NLS-2$
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    builder.nextColumn(2);
    builder.append(Messages.getString("UserRepositoryDirectoryChooser.chooseDirectory")); //$NON-NLS-1$
    builder.nextLine();
    DefaultMutableTreeNode root = populateTree(repo.getDirectoryTree());
    final JTree tree = new JTree(root);
    builder.append(""); //$NON-NLS-1$
    JScrollPane scrollPane = new JScrollPane(tree);
    scrollPane.setPreferredSize(new Dimension(200, 350));
    builder.append(scrollPane);
    ButtonBarBuilder buttonBar = new ButtonBarBuilder();
    buttonBar.addGlue();
    JButton okButton = new JButton(Messages.getString("UserRepositoryDirectoryChooser.okOption")); //$NON-NLS-1$
    okButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (tree.getSelectionPath() == null) {
                return;
            }
            directory = (RepositoryDirectory) ((DefaultMutableTreeNode) tree.getSelectionPath()
                    .getLastPathComponent()).getUserObject();
            chooserDialog.dispose();
        }
    });
    buttonBar.addGridded(okButton);
    buttonBar.addRelatedGap();
    JButton cancelButton = new JButton(Messages.getString("UserRepositoryDirectoryChooser.cancelOption")); //$NON-NLS-1$
    cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            directory = null;
            chooserDialog.dispose();
        }
    });
    buttonBar.addGridded(cancelButton);
    builder.nextLine();
    builder.append(""); //$NON-NLS-1$
    builder.add(buttonBar.getPanel());

    chooserDialog.add(builder.getPanel());

    chooserDialog.setModal(true);
    Runnable promptUser = new Runnable() {
        public void run() {
            chooserDialog.pack();
            chooserDialog.setLocationRelativeTo(parent);
            chooserDialog.setVisible(true);
        }
    };

    if (SwingUtilities.isEventDispatchThread()) {
        promptUser.run();
    } else {
        try {
            SwingUtilities.invokeAndWait(promptUser);
        } catch (InterruptedException e) {
            ASUtils.showExceptionDialogNoReport(parent,
                    "While queing the dialog's pack, setVisible and setLocation, we were interrupted", e); //$NON-NLS-1$
        } catch (InvocationTargetException e) {
            ASUtils.showExceptionDialogNoReport(parent,
                    "While queing the dialog's pack, setVisible and setLocation, an InvocationTargetException was thrown", //$NON-NLS-1$
                    e);
        }
    }
    return directory;
}

From source file:ca.sqlpower.architect.swingui.WelcomeScreen.java

License:Open Source License

public void showWelcomeDialog(Component dialogOwner) {
    final JDialog d = SPSUtils.makeOwnedDialog(dialogOwner,
            Messages.getString("WelcomeScreen.welcomeScreenTitle")); //$NON-NLS-1$
    d.setLayout(new BorderLayout(0, 12));
    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow, fill:pref, pref:grow", "pref, pref, pref"));
    CellConstraints cc = new CellConstraints();
    JPanel logoPanel = LogoLayout.generateLogoPanel();
    builder.add(logoPanel, cc.xyw(1, 1, 3));
    d.add(builder.getPanel(), BorderLayout.NORTH);
    logoPanel.getLayout().layoutContainer(logoPanel);

    HTMLEditorKit htmlKit = new HTMLEditorKit();
    final JEditorPane htmlComponent = new JEditorPane();
    htmlComponent.setEditorKit(htmlKit);
    htmlComponent.setText(welcomeHTMLstuff);
    htmlComponent.setEditable(false);// w  ww  . j  av  a 2 s .co m
    htmlComponent.setBackground(null);

    /** Jump to the URL (in the user's configured browser)
     * when a link is clicked.
     */
    htmlComponent.addHyperlinkListener(new HyperlinkListener() {
        public void hyperlinkUpdate(HyperlinkEvent evt) {
            if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                URL url = evt.getURL();
                try {
                    BrowserUtil.launch(url.toString());
                } catch (IOException e1) {
                    throw new RuntimeException(Messages.getString("WelcomeScreen.unexpectedError"), e1); //$NON-NLS-1$
                }
            }
        }
    });
    d.add(htmlComponent, BorderLayout.CENTER);

    showPrefsAgain = new JCheckBox(Messages.getString("WelcomeScreen.showWelcomeInFuture")); //$NON-NLS-1$
    showPrefsAgain.setSelected(true);

    JButton closeButton = new JButton(Messages.getString("WelcomeScreen.closeButton")); //$NON-NLS-1$
    closeButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            context.getUserSettings().getSwingSettings()
                    .setBoolean(ArchitectSwingUserSettings.SHOW_WELCOMESCREEN, showPrefsAgain.isSelected());
            d.dispose();
        }
    });

    JPanel bottomPanel = new JPanel();
    bottomPanel.setLayout(new BorderLayout());
    bottomPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
    bottomPanel.add(showPrefsAgain, BorderLayout.WEST);
    bottomPanel.add(closeButton, BorderLayout.EAST);
    d.add(bottomPanel, BorderLayout.SOUTH);

    d.getRootPane().setDefaultButton(closeButton);
    d.pack();

    // The dialog is just a few pixels too wide after packing.
    d.setSize(d.getSize().width - 4, d.getSize().height);

    d.setLocationRelativeTo(dialogOwner);
    d.setVisible(true);
}

From source file:ca.sqlpower.matchmaker.swingui.data.CommonWordsFinderPanel.java

License:Open Source License

public CommonWordsFinderPanel(final MatchMakerSwingSession session, SPDataSource defaultConnection) {
    this.session = session;
    DataSourceCollection dataSources = session.getContext().getPlDotIni();
    final JComboBox connectionChooser = new JComboBox(new ConnectionComboBoxModel(dataSources));
    connectionChooser.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                JDBCDataSource ds = (JDBCDataSource) connectionChooser.getSelectedItem();

                // Gets the session's shared SQLDatabase for this data source
                SQLDatabase db = session.getDatabase(ds);

                // XXX don't know if this is going to reparent the shared database in a bad way!
                SQLObjectRoot root = new SQLObjectRoot();

                root.addChild(db);//  w  ww  . j  av  a  2  s. c o m
                DBTreeModel model = new DBTreeModel(root);
                columnPicker.setModel(model);
            } catch (SQLObjectException ex) {
                throw new RuntimeException(ex);
            }
        }
    });
    columnPicker = new JTree();

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref:grow"));
    builder.append("Choose a column to analyze for frequently-occurring words:");
    builder.append(connectionChooser);
    builder.append(new JScrollPane(columnPicker));

    JDefaultButton okButton = new JDefaultButton("Start");
    JButton cancelButton = new JButton("Cancel");
    builder.append(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton));
    panel = builder.getPanel();
}

From source file:ca.sqlpower.matchmaker.swingui.engine.AddressValidationSettingsPanel.java

License:Open Source License

private void buildUI() {
    FormLayout validationSettingsLayout = new FormLayout("pref");
    DefaultFormBuilder dfb = new DefaultFormBuilder(validationSettingsLayout);
    dfb.append("Address Filter Setting");

    dfb.nextLine();/*from  www  .j a v  a  2s  . c  o  m*/
    valid = new JCheckBox("Include all valid addresses");
    if (settings.getPoolFilterSetting() == PoolFilterSetting.EVERYTHING
            || settings.getPoolFilterSetting() == PoolFilterSetting.VALID_ONLY
            || settings.getPoolFilterSetting() == PoolFilterSetting.VALID_OR_DIFFERENT_FORMAT
            || settings.getPoolFilterSetting() == PoolFilterSetting.VALID_OR_INVALID) {
        valid.setSelected(true);
    }
    dfb.append(valid);

    dfb.nextLine();
    differentFormat = new JCheckBox("Include all valid addresses with different formatting");
    if (settings.getPoolFilterSetting() == PoolFilterSetting.EVERYTHING
            || settings.getPoolFilterSetting() == PoolFilterSetting.INVALID_OR_DIFFERENT_FORMAT
            || settings.getPoolFilterSetting() == PoolFilterSetting.VALID_OR_DIFFERENT_FORMAT
            || settings.getPoolFilterSetting() == PoolFilterSetting.DIFFERENT_FORMAT_ONLY) {
        differentFormat.setSelected(true);
    }
    dfb.append(differentFormat);

    dfb.nextLine();
    invalid = new JCheckBox("Include all invalid addresses");
    if (settings.getPoolFilterSetting() == PoolFilterSetting.EVERYTHING
            || settings.getPoolFilterSetting() == PoolFilterSetting.INVALID_OR_DIFFERENT_FORMAT
            || settings.getPoolFilterSetting() == PoolFilterSetting.VALID_OR_INVALID
            || settings.getPoolFilterSetting() == PoolFilterSetting.INVALID_ONLY) {
        invalid.setSelected(true);
    }
    dfb.append(invalid);

    dfb.nextLine();
    dfb.appendUnrelatedComponentsGapRow();
    dfb.nextLine();
    dfb.append("Auto-correction Setting");
    ButtonGroup autoValidateButtonGroup = new ButtonGroup();

    dfb.nextLine();
    avcNothingRB = new JRadioButton(AutoValidateSetting.NOTHING.getLongDescription());
    if (settings.getAutoValidateSetting() == AutoValidateSetting.NOTHING) {
        avcNothingRB.setSelected(true);
    }
    dfb.append(avcNothingRB);
    autoValidateButtonGroup.add(avcNothingRB);

    dfb.nextLine();
    avcSerpCorrectableRB = new JRadioButton(AutoValidateSetting.SERP_CORRECTABLE.getLongDescription());
    if (settings.getAutoValidateSetting() == AutoValidateSetting.SERP_CORRECTABLE) {
        avcSerpCorrectableRB.setSelected(true);
    }
    dfb.append(avcSerpCorrectableRB);
    autoValidateButtonGroup.add(avcSerpCorrectableRB);

    dfb.nextLine();
    avcEverythingWithOneSuggestionRB = new JRadioButton(
            AutoValidateSetting.EVERYTHING_WITH_ONE_SUGGESTION.getLongDescription());
    if (settings.getAutoValidateSetting() == AutoValidateSetting.EVERYTHING_WITH_ONE_SUGGESTION) {
        avcEverythingWithOneSuggestionRB.setSelected(true);
    }
    dfb.append(avcEverythingWithOneSuggestionRB);
    autoValidateButtonGroup.add(avcEverythingWithOneSuggestionRB);

    dfb.nextLine();
    avcEverythingWithSuggestionRB = new JRadioButton(
            AutoValidateSetting.EVERYTHING_WITH_SUGGESTION.getLongDescription());
    if (settings.getAutoValidateSetting() == AutoValidateSetting.EVERYTHING_WITH_SUGGESTION) {
        avcEverythingWithSuggestionRB.setSelected(true);
    }
    dfb.append(avcEverythingWithSuggestionRB);
    autoValidateButtonGroup.add(avcEverythingWithSuggestionRB);

    panel = dfb.getPanel();
}

From source file:ca.sqlpower.matchmaker.swingui.LabelPane.java

License:Open Source License

/**
 * This method sets up the color chooser that is used on every component in
 * this label./* www . j av  a  2s. c  o m*/
 */
private void setUpColorChanger() {
    colorChanger = new JDialog((JFrame) mp.getTopLevelAncestor().getParent(), true);
    colorPanel = new JColorChooser(getBackground());

    FormLayout layout = new FormLayout("default", "default, default");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();

    colorChanger.setLayout(new BorderLayout());
    builder.add(colorPanel);
    JButton ok = new JButton("Ok");
    JButton cancel = new JButton("Cancel");
    JPanel okCancelBar = ButtonBarFactory.buildOKCancelBar(ok, cancel);
    cancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            colorChanger.setVisible(false);
        }
    });
    ok.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            Color lastColorChosen = colorPanel.getColor();
            Component comp = currentComponent;

            if (comp == null) {
                logger.error(
                        "Why was this null?!?! check the " + "generateColorSelectSubMenu method and make sure "
                                + "the component is being set before we get here");
            } else if (comp instanceof LabelPane) {
                comp.setBackground(lastColorChosen);
                for (JTextArea a : textAreaList) {
                    a.setBackground(lastColorChosen);
                }
            } else {
                comp.setForeground(lastColorChosen);
            }

            colorChanger.setVisible(false);
        }

    });
    builder.nextRow();
    builder.add(okCancelBar);
    colorChanger.getContentPane().add(builder.getPanel());
    colorChanger.pack();
    colorChanger.setLocationRelativeTo(this);
}

From source file:ca.sqlpower.matchmaker.swingui.munge.AddressCorrectionMungeComponent.java

License:Open Source License

@Override
protected JPanel buildUI() {
    if (addressDataRequired != null) {
        addressDataRequired.removeMouseListener(HyperlinkTextSelectedListener);
    }//from  ww  w  . ja v  a2  s .c o  m

    if (HyperlinkTextSelectedListener == null) {
        HyperlinkTextSelectedListener = new MouseAdapter() {

            public void mouseEntered(MouseEvent e) {
                setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
            }

            public void mousePressed(MouseEvent e) {
                try {
                    BrowserUtil.launch(addressDataURL);
                } catch (IOException e1) {
                    SPSUtils.showExceptionDialogNoReport(AddressCorrectionMungeComponent.this, "Invalid URL",
                            e1);
                }
            }

            public void mouseExited(MouseEvent e) {
                setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            }
        };
    }

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("center:pref:grow", "fill:pref, pref"));

    addressDataURL = "http://www.sqlpower.ca/page/dqguru_address_data";
    addressDataRequired = new JLabel(
            "<html> <p align =\"center\">You cannot continue without having a valid address database to compare against!<br> Please set the path to your address database in the User Preferences... <br> To purchase one, click on the following link:<br> <a href=\""
                    + addressDataURL + "\">http://www.sqlpower.ca/page/dqguru_address_data</a><html>");
    addressDataRequired.addMouseListener(HyperlinkTextSelectedListener);

    builder.add(addressDataRequired);
    builder.nextLine();
    addressDataRequired.setVisible(false);

    if (!((AddressCorrectionMungeStep) getStep()).doesDatabaseExist()) {
        addressDataRequired.setVisible(true);
    }

    showAllButton = new JButton(new HideShowAllLabelsAction("Show All", true, true, true));
    hideAllButton = new JButton(new HideShowAllLabelsAction("Hide All", true, true, false));
    JPanel content = new JPanel(new FlowLayout());
    content.add(showAllButton);
    content.add(hideAllButton);

    builder.append(content);

    setOutputShowNames(true);
    setInputShowNames(true);

    return builder.getPanel();
}

From source file:ca.sqlpower.matchmaker.swingui.munge.ConcatMungeComponent.java

License:Open Source License

@Override
protected JPanel buildUI() {
    ConcatMungeStep step = (ConcatMungeStep) getStep();

    addInputButton = new JButton(new AddInputAction("Add Input"));
    removeInputsButton = new JButton(new RemoveUnusedInputAction("Clean Up"));

    delimiterField = new JTextField(step.getDelimiter());
    delimiterField.getDocument().addDocumentListener(new DocumentListener() {
        public void insertUpdate(DocumentEvent e) {
            doStuff();/*from w  ww.j a va  2  s . c o m*/
        }

        public void removeUpdate(DocumentEvent e) {
            doStuff();
        }

        public void changedUpdate(DocumentEvent e) {
            doStuff();
        }

        private void doStuff() {
            ConcatMungeStep step = (ConcatMungeStep) getStep();
            step.setDelimiter(delimiterField.getText());
        }
    });

    FormLayout fl = new FormLayout("pref:grow,4dlu,pref:grow");
    DefaultFormBuilder b = new DefaultFormBuilder(fl);
    b.append("Delimiter", delimiterField);
    b.append(ButtonBarFactory.buildAddRemoveBar(addInputButton, removeInputsButton), 3);

    content = b.getPanel();
    return content;
}

From source file:ca.sqlpower.matchmaker.swingui.munge.CSVWriterMungeComponent.java

License:Open Source License

@Override
protected JPanel buildUI() {
    final CSVWriterMungeStep step = (CSVWriterMungeStep) getStep();

    addInputButton = new JButton(new AddInputAction("Add Input"));
    removeInputsButton = new JButton(new RemoveUnusedInputAction("Clean Up"));
    separatorField = new JTextField(step.getSeparator() + "", 1);
    getHandler().addValidateObject(separatorField, new CharacterValidator("separator"));
    separatorField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            doStuff();//  w w w . ja  v a  2 s .  c o  m
        }

        public void insertUpdate(DocumentEvent e) {
            doStuff();
        }

        public void removeUpdate(DocumentEvent e) {
            doStuff();
        }

        private void doStuff() {
            if (separatorField.getText().length() == 1) {
                step.setSeparator(separatorField.getText().charAt(0));
            }
        }
    });

    quoteField = new JTextField(step.getQuoteChar() + "", 1);
    getHandler().addValidateObject(quoteField, new CharacterValidator("quote"));
    quoteField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            doStuff();
        }

        public void insertUpdate(DocumentEvent e) {
            doStuff();
        }

        public void removeUpdate(DocumentEvent e) {
            doStuff();
        }

        private void doStuff() {
            if (quoteField.getText().length() == 1) {
                step.setQuoteChar(quoteField.getText().charAt(0));
            }
        }
    });

    escapeField = new JTextField(step.getEscapeChar() + "", 1);
    getHandler().addValidateObject(escapeField, new CharacterValidator("escape"));
    escapeField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            doStuff();
        }

        public void insertUpdate(DocumentEvent e) {
            doStuff();
        }

        public void removeUpdate(DocumentEvent e) {
            doStuff();
        }

        private void doStuff() {
            if (escapeField.getText().length() == 1) {
                step.setEscapeChar(escapeField.getText().charAt(0));
            }
        }
    });

    filePathField = new JTextField(step.getFilePath(), 20);
    getHandler().addValidateObject(filePathField, new FileNameValidator("Output"));
    filePathField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            doStuff();
        }

        public void insertUpdate(DocumentEvent e) {
            doStuff();
        }

        public void removeUpdate(DocumentEvent e) {
            doStuff();
        }

        private void doStuff() {
            step.setFilePath(filePathField.getText());
        }
    });

    fileChooser = new JFileChooser();
    fileButton = new JButton(new AbstractAction("...") {
        public void actionPerformed(ActionEvent e) {
            if (fileChooser.showSaveDialog(CSVWriterMungeComponent.this) == JFileChooser.APPROVE_OPTION) {
                filePathField.setText(fileChooser.getSelectedFile().getAbsolutePath());
            }
        }
    });

    clrFileCheckBox = new JCheckBox();
    clrFileCheckBox.setSelected(step.getClearFile());
    clrFileCheckBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            step.setClearFile(clrFileCheckBox.isSelected());
        }
    });

    FormLayout fl = new FormLayout("pref:grow,4dlu,pref:grow");
    DefaultFormBuilder b = new DefaultFormBuilder(fl);
    b.append(filePathField, fileButton);
    b.append("Separator", separatorField);
    b.append("Quote Char", quoteField);
    b.append("Escape Char", escapeField);
    b.append("Clear File", clrFileCheckBox);
    b.append(ButtonBarFactory.buildAddRemoveBar(addInputButton, removeInputsButton), 3);

    content = b.getPanel();
    return content;
}

From source file:ca.sqlpower.matchmaker.swingui.munge.DateConstantMungeComponent.java

License:Open Source License

@Override
protected JPanel buildUI() {
    final DateConstantMungeStep step = (DateConstantMungeStep) getStep();
    Date value;//  www.j  a  v  a  2  s. c  o  m
    try {
        value = ((DateConstantMungeStep) getStep()).getValueAsDate();
    } catch (ParseException e) {
        SPSUtils.showExceptionDialogNoReport(getPen(), "Error Loading munge step", e);
        value = null;
    }
    if (value == null) {
        value = new Date();
        ((DateConstantMungeStep) getStep()).setValueAsDate(value);
    }
    dc = new SpinnerDateModel(value, null, null, Calendar.SECOND);
    date = new JSpinner(dc);
    editor = new JSpinner.DateEditor(date, getFormateString());
    date.setEditor(editor);
    getHandler().addValidateObject(date, new DateValidator());

    dc.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            setDate();
        }
    });

    retNull = new JCheckBox("Return null");
    retNull.addActionListener(new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            boolean b = retNull.isSelected();
            if (b) {
                useCurrent.setEnabled(false);
                useCurrent.setSelected(false);
                date.setEnabled(false);
                opts.setEnabled(!retNull.isSelected());
            } else if (!useCurrent.isSelected()) {
                date.setEnabled(true);
                useCurrent.setEnabled(true);
                opts.setEnabled(!retNull.isSelected());
            }
            step.setReturnNull(b);
        }
    });

    useCurrent = new JCheckBox("Use Time of engine run");
    useCurrent.addActionListener(new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            boolean b = useCurrent.isSelected();
            if (b) {
                retNull.setEnabled(false);
                retNull.setSelected(false);
                date.setEnabled(false);
                opts.setEnabled(!retNull.isSelected());
            } else if (!retNull.isSelected()) {
                date.setEnabled(true);
                opts.setEnabled(!retNull.isSelected());
                retNull.setEnabled(true);
            }
            step.setUseCurrentTime(b);
        }
    });

    retNull.setSelected(step.isReturnNull());
    if (retNull.isSelected()) {
        useCurrent.setEnabled(false);
    }
    useCurrent.setSelected(step.getUseCurrentTime());
    if (useCurrent.isSelected()) {
        retNull.setEnabled(false);
    }
    date.setEnabled(!retNull.isSelected() && !useCurrent.isSelected());

    opts = new JComboBox(DateConstantMungeStep.FORMAT.toArray());
    opts.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            step.setDateFormat((String) opts.getSelectedItem());
            date.setEditor(new JSpinner.DateEditor(date, getFormateString()));
        }
    });

    opts.setSelectedItem(step.getDateFormat());
    opts.setEnabled(!retNull.isSelected());

    FormLayout layout = new FormLayout("pref,4dlu,pref:grow");
    DefaultFormBuilder fb = new DefaultFormBuilder(layout);
    fb.append("Value:", date);
    fb.append("Format", opts);
    fb.append("", retNull);
    fb.append("", useCurrent);

    return fb.getPanel();
}