public void init() {
    setForeground(Color.black);
    setTitle("DTI Create List File " + " v1.0");

    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints mainPanelConstraints = new GridBagConstraints();
    JPanel mainPanel = new JPanel(gbl);

    performRegistrationCheckbox = new JCheckBox("Register first");
    performRegistrationCheckbox.setFont(serif12B);
    performRegistrationCheckbox.setSelected(false);
    performRegistrationCheckbox.addActionListener(this);
    performRegistrationCheckbox.setActionCommand("performRegistrationCheckbox");
    performRegistrationCheckbox.setEnabled(false);
    registrationSettingsButton = new JButton("Registration Settings");
    registrationSettingsButton.setFont(serif12B);
    registrationSettingsButton.setEnabled(false);
    registrationSettingsButton.addActionListener(this);
    registrationSettingsButton.setActionCommand("registrationSettingsButton");
    dicomB0VolumeLabel = new JLabel("DICOM B0 volume: ");
    dicomB0VolumeLabel.setFont(serif12B);
    dicomB0VolumeLabel.setEnabled(false);
    dicomB0VolumeTextField = new JTextField(55);
    dicomB0VolumeTextField.setEditable(false);
    dicomB0VolumeTextField.setEnabled(false);
    dicomB0VolumeTextField.setBorder(new LineBorder(Color.gray));
    dicomB0VolumeBrowseButton = new JButton("Browse");
    dicomB0VolumeBrowseButton.setFont(serif12B);
    dicomB0VolumeBrowseButton.addActionListener(this);
    dicomB0VolumeBrowseButton.setActionCommand("dicomB0VolumeBrowse");
    dicomB0VolumeBrowseButton.setEnabled(false);
    JLabel dicomB0InfoLabel = new JLabel("Select the first image slice in the volume");
    dicomB0InfoLabel.setFont(serif12B);
    dicomB0InfoLabel.setEnabled(false);

    JPanel regPanel = new JPanel(gbl);
    regPanel.setBorder(buildTitledBorder("Registration"));
    GridBagConstraints regPanelConstraints = new GridBagConstraints();
    regPanelConstraints.gridx = 0;
    regPanelConstraints.gridy = 0;
    regPanelConstraints.anchor = GridBagConstraints.WEST;
    regPanelConstraints.insets = new Insets(0, 5, 15, 5);
    regPanel.add(performRegistrationCheckbox, regPanelConstraints);
    regPanelConstraints.gridx = 1;
    regPanelConstraints.gridy = 0;
    regPanelConstraints.insets = new Insets(0, 5, 15, 5);
    regPanel.add(registrationSettingsButton, regPanelConstraints);
    regPanelConstraints.gridx = 0;
    regPanelConstraints.gridy = 1;
    regPanelConstraints.insets = new Insets(0, 5, 5, 5);
    regPanel.add(dicomB0VolumeLabel, regPanelConstraints);
    regPanelConstraints.gridx = 1;
    regPanelConstraints.gridy = 1;
    regPanelConstraints.insets = new Insets(0, 5, 5, 5);
    regPanel.add(dicomB0VolumeTextField, regPanelConstraints);
    regPanelConstraints.gridx = 2;
    regPanelConstraints.gridy = 1;
    regPanelConstraints.insets = new Insets(0, 5, 5, 5);
    regPanel.add(dicomB0VolumeBrowseButton, regPanelConstraints);
    regPanelConstraints.gridx = 1;
    regPanelConstraints.gridy = 2;
    regPanelConstraints.gridwidth = 3;
    regPanelConstraints.anchor = GridBagConstraints.CENTER;
    regPanelConstraints.insets = new Insets(0, 5, 15, 5);
    regPanel.add(dicomB0InfoLabel, regPanelConstraints);

    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 0;
    mainPanelConstraints.insets = new Insets(15, 5, 5, 0);
    mainPanelConstraints.gridwidth = 1;
    mainPanelConstraints.anchor = GridBagConstraints.WEST;
    dwiLabel = new JLabel(" DWI data : ");
    dwiLabel.setFont(serif12B);
    mainPanel.add(dwiLabel, mainPanelConstraints);

    mainPanelConstraints.gridx = 1;
    mainPanelConstraints.gridy = 0;
    mainPanelConstraints.insets = new Insets(15, 5, 5, 0);
    dwiPathTextField = new JTextField(55);
    dwiPathTextField.setEditable(false);
    // dwiPathTextField.setBackground(Color.white);
    dwiPathTextField.setBorder(new LineBorder(Color.black));
    mainPanel.add(dwiPathTextField, mainPanelConstraints);

    mainPanelConstraints.gridx = 2;
    mainPanelConstraints.gridy = 0;
    mainPanelConstraints.insets = new Insets(15, 5, 5, 5);
    dwiPathBrowseButton = new JButton("Browse");
    dwiPathBrowseButton.setFont(serif12B);
    dwiPathBrowseButton.addActionListener(this);
    dwiPathBrowseButton.setActionCommand("dwiPathBrowse");
    mainPanel.add(dwiPathBrowseButton, mainPanelConstraints);

    // mainPanelConstraints.anchor = GridBagConstraints.CENTER;
    // interleavedCheckbox = new JCheckBox("  interleaved dataset");
    // mainPanelConstraints.gridx = 1;
    // mainPanelConstraints.gridy = 1;
    // mainPanelConstraints.insets = new Insets(0,5,55,5);
    // mainPanel.add(interleavedCheckbox, mainPanelConstraints);

    mainPanelConstraints.anchor = GridBagConstraints.CENTER;
    JLabel dwiDataInfoLabel =
        new JLabel(
            "For DICOM datasets, select the top level study directory.  For Par/Rec datasets, select the .rec file");
    dwiDataInfoLabel.setFont(serif12B);
    dwiDataInfoLabel.setEnabled(false);
    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 1;
    mainPanelConstraints.gridwidth = 3;
    mainPanelConstraints.insets = new Insets(0, 5, 70, 5);
    mainPanel.add(dwiDataInfoLabel, mainPanelConstraints);

    mainPanelConstraints.anchor = GridBagConstraints.WEST;
    optionsGroup = new ButtonGroup();

    gradFileRadio = new JRadioButton(" gradient file : ");
    gradFileRadio.setFont(serif12B);
    gradFileRadio.setSelected(true);
    gradFileRadio.addActionListener(this);
    gradFileRadio.setActionCommand("gradFileRadio");
    optionsGroup.add(gradFileRadio);
    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 2;
    mainPanelConstraints.gridwidth = 1;
    mainPanelConstraints.insets = new Insets(0, 5, 15, 0);
    mainPanel.add(gradFileRadio, mainPanelConstraints);

    mainPanelConstraints.gridx = 1;
    mainPanelConstraints.gridy = 2;
    mainPanelConstraints.insets = new Insets(0, 5, 15, 0);
    gradientFilePathTextField = new JTextField(55);
    gradientFilePathTextField.setEditable(false);
    gradientFilePathTextField.setBorder(new LineBorder(Color.black));
    // gradientFilePathTextField.setBackground(Color.white);
    mainPanel.add(gradientFilePathTextField, mainPanelConstraints);

    mainPanelConstraints.gridx = 2;
    mainPanelConstraints.gridy = 2;
    mainPanelConstraints.insets = new Insets(0, 5, 15, 5);
    gradientFileBrowseButton = new JButton("Browse");
    gradientFileBrowseButton.setFont(serif12B);
    gradientFileBrowseButton.addActionListener(this);
    gradientFileBrowseButton.setActionCommand("gradientFileBrowse");
    mainPanel.add(gradientFileBrowseButton, mainPanelConstraints);

    bmtxtFileRadio = new JRadioButton(" b-matrix file : ");
    bmtxtFileRadio.setFont(serif12B);
    bmtxtFileRadio.setSelected(false);
    bmtxtFileRadio.addActionListener(this);
    bmtxtFileRadio.setActionCommand("bmtxtFileRadio");
    optionsGroup.add(bmtxtFileRadio);
    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 3;
    mainPanelConstraints.insets = new Insets(0, 5, 5, 0);
    mainPanel.add(bmtxtFileRadio, mainPanelConstraints);

    mainPanelConstraints.gridx = 1;
    mainPanelConstraints.gridy = 3;
    mainPanelConstraints.insets = new Insets(0, 5, 5, 0);
    bmtxtFilePathTextField = new JTextField(55);
    bmtxtFilePathTextField.setText("");
    bmtxtFilePathTextField.setEnabled(false);
    bmtxtFilePathTextField.setEditable(false);
    bmtxtFilePathTextField.setBorder(new LineBorder(Color.gray));
    // bmtxtFilePathTextField.setBackground(Color.lightGray);
    mainPanel.add(bmtxtFilePathTextField, mainPanelConstraints);

    mainPanelConstraints.gridx = 2;
    mainPanelConstraints.gridy = 3;
    mainPanelConstraints.insets = new Insets(0, 5, 5, 5);
    bmtxtFileBrowseButton = new JButton("Browse");
    bmtxtFileBrowseButton.setFont(serif12B);
    bmtxtFileBrowseButton.addActionListener(this);
    bmtxtFileBrowseButton.setActionCommand("bmtxtFileBrowse");
    bmtxtFileBrowseButton.setEnabled(false);
    mainPanel.add(bmtxtFileBrowseButton, mainPanelConstraints);

    mainPanelConstraints.anchor = GridBagConstraints.CENTER;
    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 4;
    mainPanelConstraints.gridwidth = 3;
    mainPanelConstraints.insets = new Insets(0, 5, 30, 5);
    JLabel parRecInfoLabel =
        new JLabel(
            "Gradient file or b-matrix file must be provided for all DICOM study directories and for versions 4.0 and earlier of Par/Rec");
    parRecInfoLabel.setFont(serif12B);
    parRecInfoLabel.setEnabled(false);
    mainPanel.add(parRecInfoLabel, mainPanelConstraints);

    // mainPanelConstraints.anchor = GridBagConstraints.CENTER;
    // mainPanelConstraints.gridx = 1;
    // mainPanelConstraints.gridy = 4;
    // mainPanelConstraints.insets = new Insets(10,5,5,5);
    // JLabel interleavedLabel = new JLabel("* for interleaved datasets, b-matrix file is
    // required");
    // mainPanel.add(interleavedLabel, mainPanelConstraints);

    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 5;
    mainPanelConstraints.insets = new Insets(15, 5, 15, 0);
    mainPanelConstraints.gridwidth = 3;
    mainPanelConstraints.anchor = GridBagConstraints.CENTER;
    mainPanel.add(regPanel, mainPanelConstraints);

    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 6;
    mainPanelConstraints.gridwidth = 3;
    mainPanelConstraints.insets = new Insets(15, 5, 15, 5);
    outputTextArea = new JTextArea(15, 70);
    outputTextArea.setEditable(false);
    outputTextArea.setBackground(Color.lightGray);
    outputTextArea.setBorder(new LineBorder(Color.black));
    outputTextArea.setForeground(Color.black);
    scrollPane =
        new JScrollPane(
            outputTextArea,
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    mainPanel.add(scrollPane, mainPanelConstraints);

    mainPanelConstraints.gridx = 0;
    mainPanelConstraints.gridy = 7;
    mainPanelConstraints.gridwidth = 3;
    mainPanelConstraints.insets = new Insets(15, 5, 15, 5);
    JLabel refLabel =
        new JLabel(
            "Developed in concert with Dr. Lin-Ching Chang D.Sc.,  Dr. Carlo Pierpaoli MD Ph.D.,  and Lindsay Walker MS from the NIH/NICHD/LIMB/STBB group");
    refLabel.setFont(serif12B);
    mainPanel.add(refLabel, mainPanelConstraints);

    JPanel OKCancelPanel = new JPanel();
    buildOKButton();
    OKButton.setActionCommand("ok");
    OKButton.setFont(serif12B);
    OKCancelPanel.add(OKButton);
    buildCancelButton();
    cancelButton.setActionCommand("cancel");
    cancelButton.setFont(serif12B);
    OKCancelPanel.add(cancelButton);
    buildHelpButton();
    helpButton.setActionCommand("help");
    helpButton.setFont(serif12B);
    OKCancelPanel.add(helpButton);

    getContentPane().add(mainPanel, BorderLayout.CENTER);
    getContentPane().add(OKCancelPanel, BorderLayout.SOUTH);

    pack();
    setResizable(false);
    setVisible(true);
  }