Package jpiv2

Source Code of jpiv2.SettingsFrame

/*
* SettingsFrame.java
*
* Copyright 2008 Peter Vennemann
*
* This file is part of JPIV.
*
* JPIV is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JPIV is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with JPIV.  If not, see <http://www.gnu.org/licenses/>.
*/

package jpiv2;

import javax.swing.tree.*;
import javax.swing.JEditorPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;
import javax.swing.text.html.HTMLDocument;
import java.io.File;
import java.net.URL;
import java.net.URI;

/**
* An internal frame providing access to all program settings via a tree
* structure.
*
*/
public class SettingsFrame extends javax.swing.JInternalFrame {

  /**
   * Creates new form SettingsFrame
   *
   * @param jpiv
   *            The parent component.
   */
  public SettingsFrame(jpiv2.JPiv jpiv) {
    initTreeModel();
    initComponents();
    configTree();
    this.jpiv = jpiv;
  }

  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  // <editor-fold defaultstate="collapsed"
  // desc="Generated Code">//GEN-BEGIN:initComponents
  private void initComponents() {

    buttonGroupPivCorr = new javax.swing.ButtonGroup();
    buttonGroupPivSequence = new javax.swing.ButtonGroup();
    buttonGroupPivSubPixelInt = new javax.swing.ButtonGroup();
    buttonGroupPivWeightKernel = new javax.swing.ButtonGroup();
    buttonGroupSinglePixelSequence = new javax.swing.ButtonGroup();
    jSplitPane = new javax.swing.JSplitPane();
    jScrollPaneLeft = new javax.swing.JScrollPane();
    jTree = new javax.swing.JTree(tnSettings);
    jScrollPaneRight = new javax.swing.JScrollPane();
    jPanelPreferences = new javax.swing.JPanel();
    jPanelLoadSave = new javax.swing.JPanel();
    jCheckBoxLoadSaveTecplotHeader = new javax.swing.JCheckBox();
    jPanelCmd = new javax.swing.JPanel();
    jLabelCmdNumOfLines = new javax.swing.JLabel();
    jTextFieldCmdNumOfLines = new javax.swing.JTextField();
    jCheckBoxCmdLineWrap = new javax.swing.JCheckBox();
    jPanelPaths = new javax.swing.JPanel();
    jLabelJpivLibrary = new javax.swing.JLabel();
    jTextFieldJpivLibrary = new javax.swing.JTextField();
    jButtonJpivLibrary = new javax.swing.JButton();
    jPanelVector = new javax.swing.JPanel();
    jLabelVectorScale = new javax.swing.JLabel();
    jLabelVectorHeadLength = new javax.swing.JLabel();
    jLabelVectorAngle = new javax.swing.JLabel();
    jTextFieldVectorScale = new javax.swing.JTextField();
    jTextFieldVectorHeadLength = new javax.swing.JTextField();
    jTextFieldVectorAngle = new javax.swing.JTextField();
    jLabelVectorBackground = new javax.swing.JLabel();
    jLabelVectorColor = new javax.swing.JLabel();
    jButtonVectorBackground = new javax.swing.JButton();
    jButtonVectorColor = new javax.swing.JButton();
    jLabelVectorZoomFactor = new javax.swing.JLabel();
    jTextFieldVectorZoom = new javax.swing.JTextField();
    jCheckBoxVectorColorCoding = new javax.swing.JCheckBox();
    jTextFieldVectorColorMin = new javax.swing.JTextField();
    jLabelVectorColorMax = new javax.swing.JLabel();
    jLabelVectorColorMin = new javax.swing.JLabel();
    jTextFieldVectorColorMax = new javax.swing.JTextField();
    jCheckBoxVectorBackgroundImage = new javax.swing.JCheckBox();
    jTextFieldBackgroundImage = new javax.swing.JTextField();
    jSeparator1 = new javax.swing.JSeparator();
    jSeparator2 = new javax.swing.JSeparator();
    jSeparator3 = new javax.swing.JSeparator();
    jButtonChooseBackgroundImage = new javax.swing.JButton();
    jCheckBoxVectorShowReference = new javax.swing.JCheckBox();
    jTextFieldVectorReferenceLength = new javax.swing.JTextField();
    jCheckBoxVectorShowColorBar = new javax.swing.JCheckBox();
    jLabelVectorReferenceLength = new javax.swing.JLabel();
    jLabelVectorAxisTickSpacing = new javax.swing.JLabel();
    jTextFieldVectorAxisTickSpacing = new javax.swing.JTextField();
    jLabelVectorAxisScalingFactor = new javax.swing.JLabel();
    jTextFieldVectorAxisScaling = new javax.swing.JTextField();
    jLabelVectorAxisLabel = new javax.swing.JLabel();
    jTextFieldVectorAxisLabel = new javax.swing.JTextField();
    jSeparator6 = new javax.swing.JSeparator();
    jLabelVectorColorBarLabel = new javax.swing.JLabel();
    jTextFieldVectorColorBarLabel = new javax.swing.JTextField();
    jTextFieldVectorReferenceLabel = new javax.swing.JTextField();
    jLabelVectorReferenceLabel = new javax.swing.JLabel();
    jLabelVectorColorLevels = new javax.swing.JLabel();
    jSpinnerVectorColorLevels = new javax.swing.JSpinner();
    jCheckBoxVectorBackgroundColorCoding = new javax.swing.JCheckBox();
    jLabelVectorBackgroundColorCodingMin = new javax.swing.JLabel();
    jLabelVectorBackgroundColorCodingMax = new javax.swing.JLabel();
    jTextFieldVectorBackgroundColorCodingMax = new javax.swing.JTextField();
    jTextFieldVectorBackgroundColorCodingMin = new javax.swing.JTextField();
    jLabelVectorBackgroundColorCodingColumn = new javax.swing.JLabel();
    jTextFieldVectorBackgroundColorCodingColumn = new javax.swing.JTextField();
    jSeparator10 = new javax.swing.JSeparator();
    jTextFieldVectorReferenceUnitConversion = new javax.swing.JTextField();
    jLabelVectorReferenceUnitConversion = new javax.swing.JLabel();
    jTextFieldVectorColorBarUnitConversion = new javax.swing.JTextField();
    jLabelVectorColorBarUnitConversion = new javax.swing.JLabel();
    jSeparator11 = new javax.swing.JSeparator();
    jButtonVectorColorInvalid = new javax.swing.JButton();
    jCheckBoxLabelInvalidVectors = new javax.swing.JCheckBox();
    jSeparator13 = new javax.swing.JSeparator();
    jLabelShapeColor = new javax.swing.JLabel();
    jButtonShapeColor = new javax.swing.JButton();
    jLabelVectorMultyColorTransparancy = new javax.swing.JLabel();
    jTextFieldVectorMultiColorTransparancy = new javax.swing.JTextField();
    jLabelVectorColorBarFormatString = new javax.swing.JLabel();
    jTextFieldVectorColorBarFormatString = new javax.swing.JTextField();
    jPanelImg = new javax.swing.JPanel();
    jLabelImgZoomFactor = new javax.swing.JLabel();
    jCheckBoxImgTwoFrames = new javax.swing.JCheckBox();
    jTextFieldImgZoom = new javax.swing.JTextField();
    jPanelPiv = new javax.swing.JPanel();
    jPanelPivGeneral = new javax.swing.JPanel();
    jRadioButtonPivTwoImages = new javax.swing.JRadioButton();
    jRadioButtonPivConsecutive = new javax.swing.JRadioButton();
    jRadioButtonPivSkip = new javax.swing.JRadioButton();
    jTextFieldPivSkip = new javax.swing.JTextField();
    jLabelPivSkip = new javax.swing.JLabel();
    jRadioButtonPivCascade = new javax.swing.JRadioButton();
    jCheckBoxPivSumOfCorr = new javax.swing.JCheckBox();
    jRadioButtonPivPairs = new javax.swing.JRadioButton();
    jPanelPivWindow = new javax.swing.JPanel();
    jLabelPivMultiPass = new javax.swing.JLabel();
    jSpinnerPivMultiPass = new javax.swing.JSpinner(
        new javax.swing.SpinnerNumberModel(1, 1, 9, 1));
    jLabelPivWndWidth = new javax.swing.JLabel();
    jLabelPivWndHeight = new javax.swing.JLabel();
    jLabelPivHorVecSpacing = new javax.swing.JLabel();
    jLabelPivVerVecSpacing = new javax.swing.JLabel();
    jLabelPivDomainWidth = new javax.swing.JLabel();
    jLabelPivDomainHeight = new javax.swing.JLabel();
    jLabelPivHorPreShift = new javax.swing.JLabel();
    jTextFieldPivHorPreShift = new javax.swing.JTextField();
    jLabelPivVerPreShift = new javax.swing.JLabel();
    jTextFieldPivVerPreShift = new javax.swing.JTextField();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTablePivWindow = new javax.swing.JTable();
    jTablePivWindow.putClientProperty("terminateEditOnFocusLost",
        Boolean.TRUE);
    jLabelPivBetweenPasses = new javax.swing.JLabel();
    jCheckBoxPivReplace = new javax.swing.JCheckBox();
    jCheckBoxPivMedian = new javax.swing.JCheckBox();
    jTextFieldPivROIP2y = new javax.swing.JTextField();
    jTextFieldPivROIP1y = new javax.swing.JTextField();
    jLabelPivROIY1 = new javax.swing.JLabel();
    jLabelPivROIX = new javax.swing.JLabel();
    jTextFieldPivROIP1x = new javax.swing.JTextField();
    jTextFieldPivROIP2x = new javax.swing.JTextField();
    jLabelPivROIRight = new javax.swing.JLabel();
    jLabelPivROILeft = new javax.swing.JLabel();
    jCheckBoxPivROI = new javax.swing.JCheckBox();
    jSeparator7 = new javax.swing.JSeparator();
    jSeparator8 = new javax.swing.JSeparator();
    jSeparator9 = new javax.swing.JSeparator();
    jCheckBoxPivNormMedianTest = new javax.swing.JCheckBox();
    jCheckBoxPivSmoothing = new javax.swing.JCheckBox();
    jSeparator14 = new javax.swing.JSeparator();
    jCheckBoxPivShearIntWindows = new javax.swing.JCheckBox();
    jSeparator15 = new javax.swing.JSeparator();
    jCheckBoxExpCorrFunc = new javax.swing.JCheckBox();
    jLabelExpCorrFuncVec = new javax.swing.JLabel();
    jLabelExpCorrFuncPass = new javax.swing.JLabel();
    jTextFieldExpCorrFuncVec = new javax.swing.JTextField();
    jTextFieldExpCorrFuncPass = new javax.swing.JTextField();
    jCheckBoxExpCorrFuncSum = new javax.swing.JCheckBox();
    jPanelSinglePixel = new javax.swing.JPanel();
    jRadioButtonSinglePixelTwoImages = new javax.swing.JRadioButton();
    jRadioButtonSinglePixelSingleImages = new javax.swing.JRadioButton();
    jLabelSinglePixelROLeft = new javax.swing.JLabel();
    jLabelSinglePixelROIRight = new javax.swing.JLabel();
    jLabelSinglePixelROIX = new javax.swing.JLabel();
    jLabelSinglePixelROIY = new javax.swing.JLabel();
    jTextFieldSinglePixelROIP1x = new javax.swing.JTextField();
    jTextFieldSinglePixelROIP2x = new javax.swing.JTextField();
    jTextFieldSinglePixelROIP1y = new javax.swing.JTextField();
    jTextFieldSinglePixelROIP2y = new javax.swing.JTextField();
    jSeparator4 = new javax.swing.JSeparator();
    jLabelSinglePixelDomainWidth = new javax.swing.JLabel();
    jTextFieldSinglePixelDomainWidth = new javax.swing.JTextField();
    jLabelSinglePixelDomainHeight = new javax.swing.JLabel();
    jTextFieldSinglePixelDomainHeight = new javax.swing.JTextField();
    jLabelSinglePixelHorPreShift = new javax.swing.JLabel();
    jTextFieldSinglePixelHorPreShift = new javax.swing.JTextField();
    jLabelSinglePixelVerPreShift = new javax.swing.JLabel();
    jTextFieldSinglePixelVerPreShift = new javax.swing.JTextField();
    jSeparator5 = new javax.swing.JSeparator();
    jCheckBoxSinglePixelROI = new javax.swing.JCheckBox();
    jSeparator12 = new javax.swing.JSeparator();
    jCheckBoxSinglePixel3by3 = new javax.swing.JCheckBox();
    jCheckBoxSinglePixelSignalOnly = new javax.swing.JCheckBox();
    jCheckBoxSinglePixelCreatePreShiftVectorField = new javax.swing.JCheckBox();
    jPanelVectorProcessing = new javax.swing.JPanel();
    jPanelProfiles = new javax.swing.JPanel();
    jCheckBoxProfilePrintStat = new javax.swing.JCheckBox();
    jCheckBoxProfilePrintData = new javax.swing.JCheckBox();
    jCheckBoxProfileQuadInterp = new javax.swing.JCheckBox();
    jCheckBoxProfileAverage = new javax.swing.JCheckBox();
    jLabelProfileNumberOf = new javax.swing.JLabel();
    jSpinnerProfileNumberOf = new javax.swing.JSpinner();
    jLabelProfileDistance = new javax.swing.JLabel();
    jSpinnerProfileDistance = new javax.swing.JSpinner();
    jCheckBoxProfileFixDataPoints = new javax.swing.JCheckBox();
    jTextFieldProfileFixDataPoints = new javax.swing.JTextField();
    jPanelNormMedianTest = new javax.swing.JPanel();
    jLabelNormMedianTestThreshold = new javax.swing.JLabel();
    jTextFieldNormMedianTestThreshold = new javax.swing.JTextField();
    jLabelNormMedianNoiseLevel = new javax.swing.JLabel();
    jTextFieldNormMedianTestNoiseLevel = new javax.swing.JTextField();
    jPanelInvalidateIsolatedVectors = new javax.swing.JPanel();
    jLabelInvalidateIsolatedVectorsNumOfNeighbours = new javax.swing.JLabel();
    jSpinnerInvalidateIsolatedVectorsNumOfNeighbours = new javax.swing.JSpinner(
        new javax.swing.SpinnerNumberModel(3, 0, 8, 1));
    jLabelInvalidateIsolatedVectorsNumOfNeighbours1 = new javax.swing.JLabel();
    jPanelSubsRefDisp = new javax.swing.JPanel();
    jLabelSubsRefDispDx = new javax.swing.JLabel();
    jLabelSubsRefDispDy = new javax.swing.JLabel();
    jTextFieldSubsRefDispDx = new javax.swing.JTextField();
    jTextFieldSubsRefDispDy = new javax.swing.JTextField();
    jPanelSettings = new javax.swing.JPanel();
    jPanelThirdCompRecon = new javax.swing.JPanel();
    jLabelThirdCompReconDz = new javax.swing.JLabel();
    jTextFieldThirdCompReconDz = new javax.swing.JTextField();
    jEditorPaneBrowser = new javax.swing.JEditorPane();

    setMaximizable(true);
    setResizable(true);
    setTitle("Settings");

    jTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
      public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
        jTreeValueChanged(evt);
      }
    });
    jScrollPaneLeft.setViewportView(jTree);

    jSplitPane.setLeftComponent(jScrollPaneLeft);

    jScrollPaneRight.setViewportView(jPanelPreferences);

    jPanelLoadSave.setLayout(null);

    jCheckBoxLoadSaveTecplotHeader.setText("write Tecplot header");
    jCheckBoxLoadSaveTecplotHeader.setBorder(javax.swing.BorderFactory
        .createEmptyBorder(0, 0, 0, 0));
    jCheckBoxLoadSaveTecplotHeader
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelLoadSaveInputComponentFocusLost(evt);
          }
        });
    jPanelLoadSave.add(jCheckBoxLoadSaveTecplotHeader);
    jCheckBoxLoadSaveTecplotHeader.setBounds(10, 10, 380, 19);

    jScrollPaneRight.setViewportView(jPanelLoadSave);

    jPanelCmd.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelCmd.setLayout(null);

    jLabelCmdNumOfLines.setText("Maximum number of lines");
    jPanelCmd.add(jLabelCmdNumOfLines);
    jLabelCmdNumOfLines.setBounds(10, 10, 190, 19);

    jTextFieldCmdNumOfLines.setText("jTextField1");
    jTextFieldCmdNumOfLines.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldCmdNumOfLines
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelCmdInputComponentFocusLost(evt);
          }
        });
    jPanelCmd.add(jTextFieldCmdNumOfLines);
    jTextFieldCmdNumOfLines.setBounds(210, 10, 80, 23);

    jCheckBoxCmdLineWrap.setSelected(true);
    jCheckBoxCmdLineWrap.setText("Enable line wrap");
    jCheckBoxCmdLineWrap
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelCmdInputComponentFocusLost(evt);
          }
        });
    jPanelCmd.add(jCheckBoxCmdLineWrap);
    jCheckBoxCmdLineWrap.setBounds(10, 30, 190, 27);

    jScrollPaneRight.setViewportView(jPanelCmd);

    jPanelPaths.setLayout(null);

    jLabelJpivLibrary.setText("JPIV library directory");
    jPanelPaths.add(jLabelJpivLibrary);
    jLabelJpivLibrary.setBounds(10, 10, 220, 19);

    jTextFieldJpivLibrary.setText("/usr/local/piv/jpiv/jpivlib");
    jTextFieldJpivLibrary
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPathsInputComponentFocusLost(evt);
          }
        });
    jPanelPaths.add(jTextFieldJpivLibrary);
    jTextFieldJpivLibrary.setBounds(230, 10, 190, 23);

    jButtonJpivLibrary.setText("Choose");
    jButtonJpivLibrary
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonJpivLibraryActionPerformed(evt);
          }
        });
    jPanelPaths.add(jButtonJpivLibrary);
    jButtonJpivLibrary.setBounds(420, 10, 72, 20);

    jScrollPaneRight.setViewportView(jPanelPaths);

    jPanelVector.setPreferredSize(new java.awt.Dimension(500, 800));
    jPanelVector.setLayout(null);

    jLabelVectorScale.setText("Vector length scale factor");
    jPanelVector.add(jLabelVectorScale);
    jLabelVectorScale.setBounds(10, 40, 220, 19);

    jLabelVectorHeadLength.setText("Arrow head fraction of length");
    jPanelVector.add(jLabelVectorHeadLength);
    jLabelVectorHeadLength.setBounds(10, 60, 220, 19);

    jLabelVectorAngle.setText("Arrow head angle");
    jPanelVector.add(jLabelVectorAngle);
    jLabelVectorAngle.setBounds(10, 80, 220, 19);

    jTextFieldVectorScale.setText("jTextField1");
    jTextFieldVectorScale.setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorScale
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorScale);
    jTextFieldVectorScale.setBounds(230, 40, 62, 23);

    jTextFieldVectorHeadLength.setText("jTextField2");
    jTextFieldVectorHeadLength.setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorHeadLength
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorHeadLength);
    jTextFieldVectorHeadLength.setBounds(230, 60, 62, 23);

    jTextFieldVectorAngle.setText("jTextField3");
    jTextFieldVectorAngle.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldVectorAngle
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorAngle);
    jTextFieldVectorAngle.setBounds(230, 80, 62, 23);

    jLabelVectorBackground.setText("Background color");
    jPanelVector.add(jLabelVectorBackground);
    jLabelVectorBackground.setBounds(10, 110, 220, 19);

    jLabelVectorColor.setText("Vector color");
    jPanelVector.add(jLabelVectorColor);
    jLabelVectorColor.setBounds(10, 260, 220, 19);

    jButtonVectorBackground
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtionVectorPlotActionPerformed(evt);
          }
        });
    jPanelVector.add(jButtonVectorBackground);
    jButtonVectorBackground.setBounds(230, 110, 70, 20);

    jButtonVectorColor
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtionVectorPlotActionPerformed(evt);
          }
        });
    jPanelVector.add(jButtonVectorColor);
    jButtonVectorColor.setBounds(230, 260, 70, 20);

    jLabelVectorZoomFactor.setText("Zoom factor");
    jPanelVector.add(jLabelVectorZoomFactor);
    jLabelVectorZoomFactor.setBounds(10, 10, 63, 19);

    jTextFieldVectorZoom.setText("jTextField1");
    jTextFieldVectorZoom.setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorZoom
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorZoom);
    jTextFieldVectorZoom.setBounds(230, 10, 62, 23);

    jCheckBoxVectorColorCoding.setText("Color-coding");
    jCheckBoxVectorColorCoding
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxVectorColorCoding);
    jCheckBoxVectorColorCoding.setBounds(10, 300, 170, 27);

    jTextFieldVectorColorMin.setText("jTextField1");
    jTextFieldVectorColorMin.setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorColorMin
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorColorMin);
    jTextFieldVectorColorMin.setBounds(230, 320, 62, 23);

    jLabelVectorColorMax.setText("Max vector length (red)");
    jPanelVector.add(jLabelVectorColorMax);
    jLabelVectorColorMax.setBounds(30, 340, 200, 19);

    jLabelVectorColorMin.setText("Min vector length (blue)");
    jPanelVector.add(jLabelVectorColorMin);
    jLabelVectorColorMin.setBounds(30, 320, 200, 19);

    jTextFieldVectorColorMax.setText("jTextField2");
    jTextFieldVectorColorMax.setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorColorMax
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorColorMax);
    jTextFieldVectorColorMax.setBounds(230, 340, 62, 23);

    jCheckBoxVectorBackgroundImage.setText("Background image");
    jCheckBoxVectorBackgroundImage
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxVectorBackgroundImage);
    jCheckBoxVectorBackgroundImage.setBounds(10, 130, 220, 27);

    jTextFieldBackgroundImage.setText("jTextField1");
    jTextFieldBackgroundImage
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldBackgroundImage);
    jTextFieldBackgroundImage.setBounds(230, 130, 190, 20);
    jPanelVector.add(jSeparator1);
    jSeparator1.setBounds(10, 250, 500, 10);
    jPanelVector.add(jSeparator2);
    jSeparator2.setBounds(10, 100, 500, 10);
    jPanelVector.add(jSeparator3);
    jSeparator3.setBounds(10, 560, 500, 10);

    jButtonChooseBackgroundImage.setText("Choose");
    jButtonChooseBackgroundImage
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonChooseBackgroundImageActionPerformed(evt);
          }
        });
    jButtonChooseBackgroundImage
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jButtonChooseBackgroundImage);
    jButtonChooseBackgroundImage.setBounds(420, 130, 72, 20);

    jCheckBoxVectorShowReference.setText("Show reference vector");
    jCheckBoxVectorShowReference
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxVectorShowReference);
    jCheckBoxVectorShowReference.setBounds(10, 480, 220, 20);

    jTextFieldVectorReferenceLength.setText("jTextField1");
    jTextFieldVectorReferenceLength
        .setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorReferenceLength
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorReferenceLength);
    jTextFieldVectorReferenceLength.setBounds(230, 500, 62, 23);

    jCheckBoxVectorShowColorBar.setText("Show color legend");
    jCheckBoxVectorShowColorBar
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxVectorShowColorBar);
    jCheckBoxVectorShowColorBar.setBounds(10, 370, 200, 27);

    jLabelVectorReferenceLength.setText("Reference vector length");
    jPanelVector.add(jLabelVectorReferenceLength);
    jLabelVectorReferenceLength.setBounds(30, 500, 200, 19);

    jLabelVectorAxisTickSpacing.setText("Axis tickmark spacing");
    jPanelVector.add(jLabelVectorAxisTickSpacing);
    jLabelVectorAxisTickSpacing.setBounds(10, 570, 220, 19);

    jTextFieldVectorAxisTickSpacing.setText("jTextField1");
    jTextFieldVectorAxisTickSpacing
        .setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorAxisTickSpacing
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorAxisTickSpacing);
    jTextFieldVectorAxisTickSpacing.setBounds(230, 570, 62, 23);

    jLabelVectorAxisScalingFactor.setText("Axis unit conversion factor");
    jPanelVector.add(jLabelVectorAxisScalingFactor);
    jLabelVectorAxisScalingFactor.setBounds(10, 590, 220, 19);

    jTextFieldVectorAxisScaling.setText("jTextField2");
    jTextFieldVectorAxisScaling.setInputVerifier(new jpiv2.VerifierFloat());
    jTextFieldVectorAxisScaling
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorAxisScaling);
    jTextFieldVectorAxisScaling.setBounds(230, 590, 62, 23);

    jLabelVectorAxisLabel.setText("Axis unit label");
    jPanelVector.add(jLabelVectorAxisLabel);
    jLabelVectorAxisLabel.setBounds(10, 610, 220, 19);

    jTextFieldVectorAxisLabel.setText("jTextField3");
    jTextFieldVectorAxisLabel
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorAxisLabel);
    jTextFieldVectorAxisLabel.setBounds(230, 610, 62, 23);
    jPanelVector.add(jSeparator6);
    jSeparator6.setBounds(10, 630, 500, 10);

    jLabelVectorColorBarLabel.setText("Color bar label");
    jPanelVector.add(jLabelVectorColorBarLabel);
    jLabelVectorColorBarLabel.setBounds(30, 430, 200, 19);

    jTextFieldVectorColorBarLabel.setText("jTextField1");
    jTextFieldVectorColorBarLabel
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorColorBarLabel);
    jTextFieldVectorColorBarLabel.setBounds(230, 430, 62, 23);

    jTextFieldVectorReferenceLabel.setText("jTextField2");
    jTextFieldVectorReferenceLabel
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorReferenceLabel);
    jTextFieldVectorReferenceLabel.setBounds(230, 540, 62, 23);

    jLabelVectorReferenceLabel.setText("Reference vector label");
    jPanelVector.add(jLabelVectorReferenceLabel);
    jLabelVectorReferenceLabel.setBounds(30, 540, 200, 19);

    jLabelVectorColorLevels.setText("Color levels");
    jPanelVector.add(jLabelVectorColorLevels);
    jLabelVectorColorLevels.setBounds(30, 390, 180, 19);

    jSpinnerVectorColorLevels
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jSpinnerVectorColorLevels);
    jSpinnerVectorColorLevels.setBounds(230, 390, 70, 20);

    jCheckBoxVectorBackgroundColorCoding.setText("Color-coding");
    jCheckBoxVectorBackgroundColorCoding
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxVectorBackgroundColorCoding);
    jCheckBoxVectorBackgroundColorCoding.setBounds(10, 150, 170, 27);

    jLabelVectorBackgroundColorCodingMin.setText("Min value (blue)");
    jPanelVector.add(jLabelVectorBackgroundColorCodingMin);
    jLabelVectorBackgroundColorCodingMin.setBounds(30, 190, 200, 19);

    jLabelVectorBackgroundColorCodingMax.setText("Max value (red)");
    jPanelVector.add(jLabelVectorBackgroundColorCodingMax);
    jLabelVectorBackgroundColorCodingMax.setBounds(30, 210, 200, 19);

    jTextFieldVectorBackgroundColorCodingMax.setText("jTextField2");
    jTextFieldVectorBackgroundColorCodingMax
        .setInputVerifier(new jpiv2.VerifierFloat());
    jTextFieldVectorBackgroundColorCodingMax
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorBackgroundColorCodingMax);
    jTextFieldVectorBackgroundColorCodingMax.setBounds(230, 210, 62, 23);

    jTextFieldVectorBackgroundColorCodingMin.setText("jTextField1");
    jTextFieldVectorBackgroundColorCodingMin
        .setInputVerifier(new jpiv2.VerifierFloat());
    jTextFieldVectorBackgroundColorCodingMin
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorBackgroundColorCodingMin);
    jTextFieldVectorBackgroundColorCodingMin.setBounds(230, 190, 62, 23);

    jLabelVectorBackgroundColorCodingColumn.setText("Data column");
    jPanelVector.add(jLabelVectorBackgroundColorCodingColumn);
    jLabelVectorBackgroundColorCodingColumn.setBounds(30, 170, 200, 19);

    jTextFieldVectorBackgroundColorCodingColumn.setText("jTextField1");
    jTextFieldVectorBackgroundColorCodingColumn
        .setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldVectorBackgroundColorCodingColumn
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorBackgroundColorCodingColumn);
    jTextFieldVectorBackgroundColorCodingColumn.setBounds(230, 170, 62, 23);
    jPanelVector.add(jSeparator10);
    jSeparator10.setBounds(10, 360, 500, 10);

    jTextFieldVectorReferenceUnitConversion.setText("jTextField1");
    jTextFieldVectorReferenceUnitConversion
        .setInputVerifier(new jpiv2.VerifierFloat());
    jTextFieldVectorReferenceUnitConversion
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorReferenceUnitConversion);
    jTextFieldVectorReferenceUnitConversion.setBounds(230, 520, 62, 23);

    jLabelVectorReferenceUnitConversion.setText("Unit Conversion factor");
    jPanelVector.add(jLabelVectorReferenceUnitConversion);
    jLabelVectorReferenceUnitConversion.setBounds(30, 520, 200, 19);

    jTextFieldVectorColorBarUnitConversion.setText("jTextField2");
    jTextFieldVectorColorBarUnitConversion
        .setInputVerifier(new jpiv2.VerifierFloat());
    jTextFieldVectorColorBarUnitConversion
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorColorBarUnitConversion);
    jTextFieldVectorColorBarUnitConversion.setBounds(230, 410, 62, 23);

    jLabelVectorColorBarUnitConversion.setText("Unit conversion factor");
    jPanelVector.add(jLabelVectorColorBarUnitConversion);
    jLabelVectorColorBarUnitConversion.setBounds(30, 410, 200, 19);
    jPanelVector.add(jSeparator11);
    jSeparator11.setBounds(10, 470, 500, 10);

    jButtonVectorColorInvalid
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtionVectorPlotActionPerformed(evt);
          }
        });
    jPanelVector.add(jButtonVectorColorInvalid);
    jButtonVectorColorInvalid.setBounds(230, 280, 70, 20);

    jCheckBoxLabelInvalidVectors.setText("Label invalid vectors");
    jCheckBoxLabelInvalidVectors
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jCheckBoxLabelInvalidVectors);
    jCheckBoxLabelInvalidVectors.setBounds(10, 280, 170, 27);
    jPanelVector.add(jSeparator13);
    jSeparator13.setBounds(10, 30, 500, 10);

    jLabelShapeColor.setText("Color of shapes (e.g. profiles)");
    jPanelVector.add(jLabelShapeColor);
    jLabelShapeColor.setBounds(10, 640, 220, 19);

    jButtonShapeColor
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtionVectorPlotActionPerformed(evt);
          }
        });
    jPanelVector.add(jButtonShapeColor);
    jButtonShapeColor.setBounds(230, 640, 70, 20);

    jLabelVectorMultyColorTransparancy.setText("Opacity");
    jPanelVector.add(jLabelVectorMultyColorTransparancy);
    jLabelVectorMultyColorTransparancy.setBounds(30, 230, 200, 19);

    jTextFieldVectorMultiColorTransparancy.setText("jTextField2");
    jTextFieldVectorMultiColorTransparancy
        .setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldVectorMultiColorTransparancy
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorMultiColorTransparancy);
    jTextFieldVectorMultiColorTransparancy.setBounds(230, 230, 62, 23);

    jLabelVectorColorBarFormatString.setText("Label format string");
    jPanelVector.add(jLabelVectorColorBarFormatString);
    jLabelVectorColorBarFormatString.setBounds(30, 450, 200, 19);

    jTextFieldVectorColorBarFormatString.setText("jTextField1");
    jTextFieldVectorColorBarFormatString
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelVectorInputComponentFocusLost(evt);
          }
        });
    jPanelVector.add(jTextFieldVectorColorBarFormatString);
    jTextFieldVectorColorBarFormatString.setBounds(230, 450, 62, 23);

    jScrollPaneRight.setViewportView(jPanelVector);

    jPanelImg.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelImg.setLayout(null);

    jLabelImgZoomFactor.setText("Zoom factor");
    jPanelImg.add(jLabelImgZoomFactor);
    jLabelImgZoomFactor.setBounds(10, 40, 190, 19);

    jCheckBoxImgTwoFrames.setText("Two frames per image");
    jCheckBoxImgTwoFrames
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelImgInputComponentFocusLost(evt);
          }
        });
    jPanelImg.add(jCheckBoxImgTwoFrames);
    jCheckBoxImgTwoFrames.setBounds(10, 10, 190, 27);

    jTextFieldImgZoom.setText("jTextField1");
    jTextFieldImgZoom.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelImgInputComponentFocusLost(evt);
      }
    });
    jPanelImg.add(jTextFieldImgZoom);
    jTextFieldImgZoom.setBounds(210, 40, 62, 23);

    jScrollPaneRight.setViewportView(jPanelImg);

    jPanelPiv.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelPiv.setLayout(null);
    jScrollPaneRight.setViewportView(jPanelPiv);

    jPanelPivGeneral.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelPivGeneral.setLayout(null);

    buttonGroupPivSequence.add(jRadioButtonPivTwoImages);
    jRadioButtonPivTwoImages.setText("Two images per file");
    jRadioButtonPivTwoImages
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivGeneralInputComponentFocusLost(evt);
          }
        });
    jPanelPivGeneral.add(jRadioButtonPivTwoImages);
    jRadioButtonPivTwoImages.setBounds(10, 10, 320, 20);

    buttonGroupPivSequence.add(jRadioButtonPivConsecutive);
    jRadioButtonPivConsecutive.setText("Consecutive (1+2, 2+3, 3+4, ...)");
    jRadioButtonPivConsecutive
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivGeneralInputComponentFocusLost(evt);
          }
        });
    jPanelPivGeneral.add(jRadioButtonPivConsecutive);
    jRadioButtonPivConsecutive.setBounds(10, 50, 400, 20);

    buttonGroupPivSequence.add(jRadioButtonPivSkip);
    jRadioButtonPivSkip.setText("Skip");
    jRadioButtonPivSkip.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivGeneralInputComponentFocusLost(evt);
      }
    });
    jPanelPivGeneral.add(jRadioButtonPivSkip);
    jRadioButtonPivSkip.setBounds(10, 70, 60, 20);

    jTextFieldPivSkip.setText("jTextField1");
    jTextFieldPivSkip.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldPivSkip.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivGeneralInputComponentFocusLost(evt);
      }
    });
    jPanelPivGeneral.add(jTextFieldPivSkip);
    jTextFieldPivSkip.setBounds(80, 70, 50, 23);

    jLabelPivSkip.setText("files (e.g skip=2: 1+4, 2+5, 3+6, ...)");
    jPanelPivGeneral.add(jLabelPivSkip);
    jLabelPivSkip.setBounds(140, 70, 270, 20);

    buttonGroupPivSequence.add(jRadioButtonPivCascade);
    jRadioButtonPivCascade.setText("Cascade (1+2, 1+3, 1+4, ...)");
    jRadioButtonPivCascade
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivGeneralInputComponentFocusLost(evt);
          }
        });
    jPanelPivGeneral.add(jRadioButtonPivCascade);
    jRadioButtonPivCascade.setBounds(10, 90, 400, 20);

    jCheckBoxPivSumOfCorr
        .setText("Sum up correlation functions (ensemble correlation)");
    jCheckBoxPivSumOfCorr
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivGeneralInputComponentFocusLost(evt);
          }
        });
    jPanelPivGeneral.add(jCheckBoxPivSumOfCorr);
    jCheckBoxPivSumOfCorr.setBounds(10, 120, 400, 27);

    buttonGroupPivSequence.add(jRadioButtonPivPairs);
    jRadioButtonPivPairs.setText("Pairs (1+2, 3+4, 5+6, ...)");
    jRadioButtonPivPairs
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivGeneralInputComponentFocusLost(evt);
          }
        });
    jPanelPivGeneral.add(jRadioButtonPivPairs);
    jRadioButtonPivPairs.setBounds(10, 30, 400, 20);

    jScrollPaneRight.setViewportView(jPanelPivGeneral);

    jPanelPivWindow.setPreferredSize(new java.awt.Dimension(500, 700));
    jPanelPivWindow.setLayout(null);

    jLabelPivMultiPass.setText("Multi pass");
    jPanelPivWindow.add(jLabelPivMultiPass);
    jLabelPivMultiPass.setBounds(10, 10, 220, 19);

    jSpinnerPivMultiPass
        .addChangeListener(new javax.swing.event.ChangeListener() {
          public void stateChanged(javax.swing.event.ChangeEvent evt) {
            jSpinnerPivMultiPassStateChanged(evt);
          }
        });
    jPanelPivWindow.add(jSpinnerPivMultiPass);
    jSpinnerPivMultiPass.setBounds(240, 10, 40, 24);

    jLabelPivWndWidth.setText("Interrogation window width");
    jPanelPivWindow.add(jLabelPivWndWidth);
    jLabelPivWndWidth.setBounds(10, 55, 220, 19);

    jLabelPivWndHeight.setText("Interrogation window height");
    jPanelPivWindow.add(jLabelPivWndHeight);
    jLabelPivWndHeight.setBounds(10, 71, 220, 19);

    jLabelPivHorVecSpacing.setText("Horizontal vector spacing");
    jPanelPivWindow.add(jLabelPivHorVecSpacing);
    jLabelPivHorVecSpacing.setBounds(10, 119, 220, 19);

    jLabelPivVerVecSpacing.setText("Vertical vector spacing");
    jPanelPivWindow.add(jLabelPivVerVecSpacing);
    jLabelPivVerVecSpacing.setBounds(10, 135, 220, 19);

    jLabelPivDomainWidth.setText("Search domain width");
    jPanelPivWindow.add(jLabelPivDomainWidth);
    jLabelPivDomainWidth.setBounds(10, 87, 220, 19);

    jLabelPivDomainHeight.setText("Search domain height");
    jPanelPivWindow.add(jLabelPivDomainHeight);
    jLabelPivDomainHeight.setBounds(10, 103, 220, 19);

    jLabelPivHorPreShift.setText("Horizontal pre-shift (fist pass)");
    jPanelPivWindow.add(jLabelPivHorPreShift);
    jLabelPivHorPreShift.setBounds(10, 280, 220, 19);

    jTextFieldPivHorPreShift.setText("jTextField1");
    jTextFieldPivHorPreShift.setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldPivHorPreShift
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jTextFieldPivHorPreShift);
    jTextFieldPivHorPreShift.setBounds(240, 280, 80, 23);

    jLabelPivVerPreShift.setText("Vertical pre-shift (first pass)");
    jPanelPivWindow.add(jLabelPivVerPreShift);
    jLabelPivVerPreShift.setBounds(10, 300, 220, 19);

    jTextFieldPivVerPreShift.setText("jTextField2");
    jTextFieldPivVerPreShift.setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldPivVerPreShift
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jTextFieldPivVerPreShift);
    jTextFieldPivVerPreShift.setBounds(240, 300, 80, 23);

    jTablePivWindow.setModel(new javax.swing.table.DefaultTableModel(
        new Object[][] { { null, null, null, null },
            { null, null, null, null }, { null, null, null, null },
            { null, null, null, null }, { null, null, null, null },
            { null, null, null, null } }, new String[] { "Title 1",
            "Title 2", "Title 3", "Title 4" }));
    jTablePivWindow.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jScrollPane1.setViewportView(jTablePivWindow);

    jPanelPivWindow.add(jScrollPane1);
    jScrollPane1.setBounds(240, 40, 240, 114);

    jLabelPivBetweenPasses.setText("Between passes:");
    jPanelPivWindow.add(jLabelPivBetweenPasses);
    jLabelPivBetweenPasses.setBounds(10, 340, 220, 19);

    jCheckBoxPivReplace.setText("Replace invalid vecors by median");
    jCheckBoxPivReplace.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jCheckBoxPivReplace);
    jCheckBoxPivReplace.setBounds(240, 360, 240, 27);

    jCheckBoxPivMedian.setText("3x3 median filter");
    jCheckBoxPivMedian.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jCheckBoxPivMedian);
    jCheckBoxPivMedian.setBounds(240, 380, 240, 27);

    jTextFieldPivROIP2y.setText("jTextField4");
    jTextFieldPivROIP2y.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldPivROIP2y.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jTextFieldPivROIP2y);
    jTextFieldPivROIP2y.setBounds(190, 240, 62, 23);

    jTextFieldPivROIP1y.setText("jTextField3");
    jTextFieldPivROIP1y.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldPivROIP1y.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jTextFieldPivROIP1y);
    jTextFieldPivROIP1y.setBounds(110, 240, 62, 23);

    jLabelPivROIY1.setText("y [pixel]");
    jPanelPivWindow.add(jLabelPivROIY1);
    jLabelPivROIY1.setBounds(30, 240, 70, 19);

    jLabelPivROIX.setText("x [pixel]");
    jPanelPivWindow.add(jLabelPivROIX);
    jLabelPivROIX.setBounds(30, 220, 70, 19);

    jTextFieldPivROIP1x.setText("jTextField1");
    jTextFieldPivROIP1x.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldPivROIP1x.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jTextFieldPivROIP1x);
    jTextFieldPivROIP1x.setBounds(110, 220, 62, 23);

    jTextFieldPivROIP2x.setText("jTextField2");
    jTextFieldPivROIP2x.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldPivROIP2x.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jTextFieldPivROIP2x);
    jTextFieldPivROIP2x.setBounds(190, 220, 62, 23);

    jLabelPivROIRight.setText("bottom right");
    jPanelPivWindow.add(jLabelPivROIRight);
    jLabelPivROIRight.setBounds(190, 200, 90, 19);

    jLabelPivROILeft.setText("top left");
    jPanelPivWindow.add(jLabelPivROILeft);
    jLabelPivROILeft.setBounds(110, 200, 70, 19);

    jCheckBoxPivROI.setText("Region of interest (ROI)");
    jCheckBoxPivROI.addFocusListener(new java.awt.event.FocusAdapter() {
      public void focusLost(java.awt.event.FocusEvent evt) {
        jPanelPivWindowInputComponentFocusLost(evt);
      }
    });
    jPanelPivWindow.add(jCheckBoxPivROI);
    jCheckBoxPivROI.setBounds(10, 170, 250, 27);
    jPanelPivWindow.add(jSeparator7);
    jSeparator7.setBounds(10, 160, 500, 10);
    jPanelPivWindow.add(jSeparator8);
    jSeparator8.setBounds(10, 330, 500, 10);
    jPanelPivWindow.add(jSeparator9);
    jSeparator9.setBounds(10, 270, 500, 10);

    jCheckBoxPivNormMedianTest.setText("Normalized median test");
    jCheckBoxPivNormMedianTest
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jCheckBoxPivNormMedianTest);
    jCheckBoxPivNormMedianTest.setBounds(240, 340, 240, 27);

    jCheckBoxPivSmoothing.setText("3x3 smoothing");
    jCheckBoxPivSmoothing
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jCheckBoxPivSmoothing);
    jCheckBoxPivSmoothing.setBounds(240, 400, 240, 27);
    jPanelPivWindow.add(jSeparator14);
    jSeparator14.setBounds(10, 430, 500, 10);

    jCheckBoxPivShearIntWindows
        .setText("Deform (shear) interrogation windows");
    jCheckBoxPivShearIntWindows
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jCheckBoxPivShearIntWindows);
    jCheckBoxPivShearIntWindows.setBounds(10, 440, 500, 27);
    jPanelPivWindow.add(jSeparator15);
    jSeparator15.setBounds(10, 470, 500, 10);

    jCheckBoxExpCorrFunc.setText("Export correlation functions");
    jCheckBoxExpCorrFunc
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jCheckBoxExpCorrFunc);
    jCheckBoxExpCorrFunc.setBounds(10, 480, 230, 27);

    jLabelExpCorrFuncVec
        .setText("Vector (zero from upper left corner, -1 for all)");
    jPanelPivWindow.add(jLabelExpCorrFuncVec);
    jLabelExpCorrFuncVec.setBounds(10, 510, 310, 19);

    jLabelExpCorrFuncPass.setText("Pass (starting with zero, -1 for all)");
    jPanelPivWindow.add(jLabelExpCorrFuncPass);
    jLabelExpCorrFuncPass.setBounds(10, 530, 310, 19);

    jTextFieldExpCorrFuncVec.setText("0");
    jTextFieldExpCorrFuncVec.setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldExpCorrFuncVec
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jTextFieldExpCorrFuncVec);
    jTextFieldExpCorrFuncVec.setBounds(320, 500, 80, 23);

    jTextFieldExpCorrFuncPass.setText("0");
    jTextFieldExpCorrFuncPass.setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldExpCorrFuncPass
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jTextFieldExpCorrFuncPass);
    jTextFieldExpCorrFuncPass.setBounds(320, 520, 80, 23);

    jCheckBoxExpCorrFuncSum.setText("Only Sum Of Correlation");
    jCheckBoxExpCorrFuncSum
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelPivWindowInputComponentFocusLost(evt);
          }
        });
    jPanelPivWindow.add(jCheckBoxExpCorrFuncSum);
    jCheckBoxExpCorrFuncSum.setBounds(10, 550, 230, 27);

    jScrollPaneRight.setViewportView(jPanelPivWindow);

    jPanelSinglePixel.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelSinglePixel.setLayout(null);

    buttonGroupSinglePixelSequence.add(jRadioButtonSinglePixelTwoImages);
    jRadioButtonSinglePixelTwoImages.setText("Two images per file");
    jRadioButtonSinglePixelTwoImages
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jRadioButtonSinglePixelTwoImages);
    jRadioButtonSinglePixelTwoImages.setBounds(10, 10, 250, 27);

    buttonGroupSinglePixelSequence.add(jRadioButtonSinglePixelSingleImages);
    jRadioButtonSinglePixelSingleImages.setText("Single image files");
    jRadioButtonSinglePixelSingleImages
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jRadioButtonSinglePixelSingleImages);
    jRadioButtonSinglePixelSingleImages.setBounds(10, 30, 250, 27);

    jLabelSinglePixelROLeft.setText("top left");
    jPanelSinglePixel.add(jLabelSinglePixelROLeft);
    jLabelSinglePixelROLeft.setBounds(110, 90, 70, 19);

    jLabelSinglePixelROIRight.setText("bottom right");
    jPanelSinglePixel.add(jLabelSinglePixelROIRight);
    jLabelSinglePixelROIRight.setBounds(190, 90, 90, 19);

    jLabelSinglePixelROIX.setText("x [pixel]");
    jPanelSinglePixel.add(jLabelSinglePixelROIX);
    jLabelSinglePixelROIX.setBounds(30, 110, 70, 19);

    jLabelSinglePixelROIY.setText("y [pixel]");
    jPanelSinglePixel.add(jLabelSinglePixelROIY);
    jLabelSinglePixelROIY.setBounds(30, 130, 70, 19);

    jTextFieldSinglePixelROIP1x.setText("jTextField1");
    jTextFieldSinglePixelROIP1x.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelROIP1x
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelROIP1x);
    jTextFieldSinglePixelROIP1x.setBounds(110, 110, 62, 23);

    jTextFieldSinglePixelROIP2x.setText("jTextField2");
    jTextFieldSinglePixelROIP2x.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelROIP2x
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelROIP2x);
    jTextFieldSinglePixelROIP2x.setBounds(190, 110, 62, 23);

    jTextFieldSinglePixelROIP1y.setText("jTextField3");
    jTextFieldSinglePixelROIP1y.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelROIP1y
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelROIP1y);
    jTextFieldSinglePixelROIP1y.setBounds(110, 130, 62, 23);

    jTextFieldSinglePixelROIP2y.setText("jTextField4");
    jTextFieldSinglePixelROIP2y.setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelROIP2y
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelROIP2y);
    jTextFieldSinglePixelROIP2y.setBounds(190, 130, 62, 23);

    jSeparator4.setVerifyInputWhenFocusTarget(false);
    jPanelSinglePixel.add(jSeparator4);
    jSeparator4.setBounds(10, 160, 500, 10);

    jLabelSinglePixelDomainWidth.setText("Search domain width");
    jPanelSinglePixel.add(jLabelSinglePixelDomainWidth);
    jLabelSinglePixelDomainWidth.setBounds(10, 170, 150, 19);

    jTextFieldSinglePixelDomainWidth.setText("jTextField1");
    jTextFieldSinglePixelDomainWidth
        .setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelDomainWidth
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelDomainWidth);
    jTextFieldSinglePixelDomainWidth.setBounds(170, 170, 62, 23);

    jLabelSinglePixelDomainHeight.setText("Search domain height");
    jPanelSinglePixel.add(jLabelSinglePixelDomainHeight);
    jLabelSinglePixelDomainHeight.setBounds(10, 190, 150, 19);

    jTextFieldSinglePixelDomainHeight.setText("jTextField2");
    jTextFieldSinglePixelDomainHeight
        .setInputVerifier(new jpiv2.VerifierUInt());
    jTextFieldSinglePixelDomainHeight
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelDomainHeight);
    jTextFieldSinglePixelDomainHeight.setBounds(170, 190, 62, 23);

    jLabelSinglePixelHorPreShift.setText("Horizontal pre-shift");
    jPanelSinglePixel.add(jLabelSinglePixelHorPreShift);
    jLabelSinglePixelHorPreShift.setBounds(10, 220, 150, 19);

    jTextFieldSinglePixelHorPreShift.setText("jTextField3");
    jTextFieldSinglePixelHorPreShift
        .setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldSinglePixelHorPreShift
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelHorPreShift);
    jTextFieldSinglePixelHorPreShift.setBounds(170, 220, 62, 23);

    jLabelSinglePixelVerPreShift.setText("Vertical pre-shift");
    jPanelSinglePixel.add(jLabelSinglePixelVerPreShift);
    jLabelSinglePixelVerPreShift.setBounds(10, 240, 150, 19);

    jTextFieldSinglePixelVerPreShift.setText("jTextField4");
    jTextFieldSinglePixelVerPreShift
        .setInputVerifier(new jpiv2.VerifierInt());
    jTextFieldSinglePixelVerPreShift
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jTextFieldSinglePixelVerPreShift);
    jTextFieldSinglePixelVerPreShift.setBounds(170, 240, 62, 23);
    jPanelSinglePixel.add(jSeparator5);
    jSeparator5.setBounds(10, 60, 500, 10);

    jCheckBoxSinglePixelROI.setText("Region of interest (ROI)");
    jCheckBoxSinglePixelROI
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jCheckBoxSinglePixelROI);
    jCheckBoxSinglePixelROI.setBounds(10, 70, 250, 27);
    jPanelSinglePixel.add(jSeparator12);
    jSeparator12.setBounds(10, 290, 500, 10);

    jCheckBoxSinglePixel3by3.setText("Use 3x3 pixel instead of one");
    jCheckBoxSinglePixel3by3
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jCheckBoxSinglePixel3by3);
    jCheckBoxSinglePixel3by3.setBounds(10, 300, 380, 27);

    jCheckBoxSinglePixelSignalOnly
        .setText("Skip correlation when I(x,y) < I(mean)");
    jCheckBoxSinglePixelSignalOnly
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jCheckBoxSinglePixelSignalOnly);
    jCheckBoxSinglePixelSignalOnly.setBounds(10, 320, 380, 27);

    jCheckBoxSinglePixelCreatePreShiftVectorField
        .setText("First do a standard PIV-evaluation to create a pre-shift vector field.");
    jCheckBoxSinglePixelCreatePreShiftVectorField
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSinglePixelInputComponentFocusLost(evt);
          }
        });
    jPanelSinglePixel.add(jCheckBoxSinglePixelCreatePreShiftVectorField);
    jCheckBoxSinglePixelCreatePreShiftVectorField.setBounds(10, 260, 500,
        27);

    jScrollPaneRight.setViewportView(jPanelSinglePixel);

    jPanelVectorProcessing
        .setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelVectorProcessing.setLayout(null);
    jScrollPaneRight.setViewportView(jPanelVectorProcessing);

    jPanelProfiles.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelProfiles.setLayout(null);

    jCheckBoxProfilePrintStat.setText("Print profile statistics");
    jCheckBoxProfilePrintStat
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jCheckBoxProfilePrintStat);
    jCheckBoxProfilePrintStat.setBounds(10, 10, 380, 27);

    jCheckBoxProfilePrintData.setText("Print profile data");
    jCheckBoxProfilePrintData
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jCheckBoxProfilePrintData);
    jCheckBoxProfilePrintData.setBounds(10, 30, 380, 27);

    jCheckBoxProfileQuadInterp
        .setText("Smooth profile display (quadratic Bezier spline)");
    jCheckBoxProfileQuadInterp
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jCheckBoxProfileQuadInterp);
    jCheckBoxProfileQuadInterp.setBounds(10, 70, 380, 27);

    jCheckBoxProfileAverage
        .setText("Average over a number of parallel profiles");
    jCheckBoxProfileAverage
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jCheckBoxProfileAverage);
    jCheckBoxProfileAverage.setBounds(10, 110, 380, 27);

    jLabelProfileNumberOf.setText("Number of profiles");
    jPanelProfiles.add(jLabelProfileNumberOf);
    jLabelProfileNumberOf.setBounds(50, 140, 200, 20);

    jSpinnerProfileNumberOf.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
    jSpinnerProfileNumberOf.setModel(new javax.swing.SpinnerNumberModel(3,
        1, 9999, 2));
    jSpinnerProfileNumberOf
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jSpinnerProfileNumberOf);
    jSpinnerProfileNumberOf.setBounds(260, 140, 70, 24);

    jLabelProfileDistance.setText("Distance of profiles [pixel]");
    jPanelProfiles.add(jLabelProfileDistance);
    jLabelProfileDistance.setBounds(50, 160, 200, 20);

    jSpinnerProfileDistance.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
    jSpinnerProfileDistance.setModel(new javax.swing.SpinnerNumberModel(16,
        1, 9999, 1));
    jSpinnerProfileDistance
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jSpinnerProfileDistance);
    jSpinnerProfileDistance.setBounds(260, 160, 70, 24);

    jCheckBoxProfileFixDataPoints.setText("Fixed number of data points");
    jCheckBoxProfileFixDataPoints
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jCheckBoxProfileFixDataPoints);
    jCheckBoxProfileFixDataPoints.setBounds(10, 200, 240, 27);

    jTextFieldProfileFixDataPoints.setText("jTextField1");
    jTextFieldProfileFixDataPoints
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelProfilesInputComponentFocusLost(evt);
          }
        });
    jPanelProfiles.add(jTextFieldProfileFixDataPoints);
    jTextFieldProfileFixDataPoints.setBounds(260, 200, 62, 23);

    jScrollPaneRight.setViewportView(jPanelProfiles);

    jPanelNormMedianTest.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelNormMedianTest.setLayout(null);

    jLabelNormMedianTestThreshold
        .setText("Threshold for normalized residual [-]");
    jPanelNormMedianTest.add(jLabelNormMedianTestThreshold);
    jLabelNormMedianTestThreshold.setBounds(10, 10, 250, 19);

    jTextFieldNormMedianTestThreshold.setText("jTextField1");
    jTextFieldNormMedianTestThreshold
        .setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldNormMedianTestThreshold
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jTextFieldNormMedianTestInputComponentFocusLost(evt);
          }
        });
    jPanelNormMedianTest.add(jTextFieldNormMedianTestThreshold);
    jTextFieldNormMedianTestThreshold.setBounds(270, 10, 62, 23);

    jLabelNormMedianNoiseLevel.setText("Velocity data noise level [pixel]");
    jPanelNormMedianTest.add(jLabelNormMedianNoiseLevel);
    jLabelNormMedianNoiseLevel.setBounds(10, 30, 250, 19);

    jTextFieldNormMedianTestNoiseLevel.setText("jTextField2");
    jTextFieldNormMedianTestNoiseLevel
        .setInputVerifier(new jpiv2.VerifierUFloat());
    jTextFieldNormMedianTestNoiseLevel
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jTextFieldNormMedianTestInputComponentFocusLost(evt);
          }
        });
    jPanelNormMedianTest.add(jTextFieldNormMedianTestNoiseLevel);
    jTextFieldNormMedianTestNoiseLevel.setBounds(270, 30, 62, 23);

    jScrollPaneRight.setViewportView(jPanelNormMedianTest);

    jPanelInvalidateIsolatedVectors
        .setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelInvalidateIsolatedVectors.setLayout(null);

    jLabelInvalidateIsolatedVectorsNumOfNeighbours
        .setText("Invalidate vectors with less than");
    jPanelInvalidateIsolatedVectors
        .add(jLabelInvalidateIsolatedVectorsNumOfNeighbours);
    jLabelInvalidateIsolatedVectorsNumOfNeighbours.setBounds(10, 10, 250,
        20);

    jSpinnerInvalidateIsolatedVectorsNumOfNeighbours
        .addChangeListener(new javax.swing.event.ChangeListener() {
          public void stateChanged(javax.swing.event.ChangeEvent evt) {
            jSpinnerInvalidateIsolatedVectorsNumOfNeighboursStateChanged(evt);
          }
        });
    jPanelInvalidateIsolatedVectors
        .add(jSpinnerInvalidateIsolatedVectorsNumOfNeighbours);
    jSpinnerInvalidateIsolatedVectorsNumOfNeighbours.setBounds(270, 10, 40,
        24);

    jLabelInvalidateIsolatedVectorsNumOfNeighbours1
        .setText("valid neighbours");
    jPanelInvalidateIsolatedVectors
        .add(jLabelInvalidateIsolatedVectorsNumOfNeighbours1);
    jLabelInvalidateIsolatedVectorsNumOfNeighbours1.setBounds(10, 30, 250,
        20);

    jScrollPaneRight.setViewportView(jPanelInvalidateIsolatedVectors);

    jPanelSubsRefDisp.setLayout(null);

    jLabelSubsRefDispDx.setText("Horizontal reference displacement");
    jPanelSubsRefDisp.add(jLabelSubsRefDispDx);
    jLabelSubsRefDispDx.setBounds(10, 10, 250, 19);

    jLabelSubsRefDispDy.setText("Vertical reference displacement");
    jPanelSubsRefDisp.add(jLabelSubsRefDispDy);
    jLabelSubsRefDispDy.setBounds(10, 30, 250, 19);

    jTextFieldSubsRefDispDx.setText("jTextField1");
    jTextFieldSubsRefDispDx
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSubsRefDispInputComponentFocusLost(evt);
          }
        });
    jPanelSubsRefDisp.add(jTextFieldSubsRefDispDx);
    jTextFieldSubsRefDispDx.setBounds(270, 10, 62, 23);

    jTextFieldSubsRefDispDy.setText("jTextField2");
    jTextFieldSubsRefDispDy
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelSubsRefDispInputComponentFocusLost(evt);
          }
        });
    jPanelSubsRefDisp.add(jTextFieldSubsRefDispDy);
    jTextFieldSubsRefDispDy.setBounds(270, 30, 62, 23);

    jScrollPaneRight.setViewportView(jPanelSubsRefDisp);

    jPanelSettings.setPreferredSize(new java.awt.Dimension(500, 500));
    jPanelSettings.setLayout(null);
    jScrollPaneRight.setViewportView(jPanelSettings);

    jPanelThirdCompRecon.setLayout(null);

    jLabelThirdCompReconDz.setText("Distance between scan planes");
    jPanelThirdCompRecon.add(jLabelThirdCompReconDz);
    jLabelThirdCompReconDz.setBounds(10, 10, 250, 19);

    jTextFieldThirdCompReconDz.setText("jTextField1");
    jTextFieldThirdCompReconDz
        .addFocusListener(new java.awt.event.FocusAdapter() {
          public void focusLost(java.awt.event.FocusEvent evt) {
            jPanelThirdCompReconFocusLost(evt);
          }
        });
    jPanelThirdCompRecon.add(jTextFieldThirdCompReconDz);
    jTextFieldThirdCompReconDz.setBounds(270, 10, 62, 23);

    jScrollPaneRight.setViewportView(jPanelThirdCompRecon);

    jEditorPaneBrowser.setEditable(false);
    jEditorPaneBrowser.setOpaque(false);
    jEditorPaneBrowser
        .addHyperlinkListener(new javax.swing.event.HyperlinkListener() {
          public void hyperlinkUpdate(
              javax.swing.event.HyperlinkEvent evt) {
            jEditorPaneBrowserHyperlinkUpdate(evt);
          }
        });
    jScrollPaneRight.setViewportView(jEditorPaneBrowser);

    jSplitPane.setRightComponent(jScrollPaneRight);

    getContentPane().add(jSplitPane, java.awt.BorderLayout.CENTER);

    pack();
  }// </editor-fold>//GEN-END:initComponents

  private void jButtonJpivLibraryActionPerformed(
      java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonJpivLibraryActionPerformed
    chooseLibraryPath();
    getPaths(jpiv.getSettings());
  }// GEN-LAST:event_jButtonJpivLibraryActionPerformed

  private void jPanelPathsInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelPathsInputComponentFocusLost
    getPaths(jpiv.getSettings());
  }// GEN-LAST:event_jPanelPathsInputComponentFocusLost

  private void jPanelThirdCompReconFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelThirdCompReconFocusLost
    getThirdCompReconSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelThirdCompReconFocusLost

  private void jPanelLoadSaveInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelLoadSaveInputComponentFocusLost
    getLoadSaveSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelLoadSaveInputComponentFocusLost

  private void jPanelCmdInputComponentFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelCmdInputComponentFocusLost
    getCmdSettings(jpiv.getSettings());
    jpiv.updateCmdFrame();
  }// GEN-LAST:event_jPanelCmdInputComponentFocusLost

  private void jButtonChooseBackgroundImageActionPerformed(
      java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonChooseBackgroundImageActionPerformed
    chooseBackgroundImage();
    getVectorSettings(jpiv.getSettings());
  }// GEN-LAST:event_jButtonChooseBackgroundImageActionPerformed

  private void jPanelVectorInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelVectorInputComponentFocusLost
    getVectorSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelVectorInputComponentFocusLost

  private void jButtionVectorPlotActionPerformed(
      java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtionVectorPlotActionPerformed
    jpiv2.Settings settings = jpiv.getSettings();
    if (evt.getSource().equals(jButtonVectorBackground)) {
      settings.vectorBackground = new jpiv2.ColorChooserDlg(jpiv, true)
          .showDialog("Choose Background Color",
              settings.vectorBackground);
    }
    if (evt.getSource().equals(jButtonVectorColor)) {
      settings.vectorColor = new jpiv2.ColorChooserDlg(jpiv, true)
          .showDialog("Choose Vector Color", settings.vectorColor);
    }
    if (evt.getSource().equals(jButtonVectorColorInvalid)) {
      settings.vectorColorInvalid = new jpiv2.ColorChooserDlg(jpiv, true)
          .showDialog("Choose Color for Invalid Vectors",
              settings.vectorColorInvalid);
    }
    if (evt.getSource().equals(jButtonShapeColor)) {
      settings.shapeColor = new jpiv2.ColorChooserDlg(jpiv, true)
          .showDialog("Choose Color for Shapes", settings.shapeColor);
    }
    setVectorSettings(settings);
  }// GEN-LAST:event_jButtionVectorPlotActionPerformed

  private void jPanelImgInputComponentFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelImgInputComponentFocusLost
    getImgSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelImgInputComponentFocusLost

  private void jPanelPivGeneralInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelPivGeneralInputComponentFocusLost
    getPivGeneralSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelPivGeneralInputComponentFocusLost

  private void jSpinnerPivMultiPassStateChanged(
      javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_jSpinnerPivMultiPassStateChanged
    updateJTablePivWindow(jpiv.getSettings());
    getPivWindowSettings(jpiv.getSettings());
  }// GEN-LAST:event_jSpinnerPivMultiPassStateChanged

  private void jPanelPivWindowInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelPivWindowInputComponentFocusLost
    if (jTablePivWindow.isEditing()) {
      jTablePivWindow.getCellEditor().stopCellEditing();
    }
    getPivWindowSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelPivWindowInputComponentFocusLost

  private void jPanelSinglePixelInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelSinglePixelInputComponentFocusLost
    getSinglePixelSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelSinglePixelInputComponentFocusLost

  private void jPanelProfilesInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelProfilesInputComponentFocusLost
    getProfilesSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelProfilesInputComponentFocusLost

  private void jTextFieldNormMedianTestInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jTextFieldNormMedianTestInputComponentFocusLost
    getNormMedianTestSettings(jpiv.getSettings());
  }// GEN-LAST:event_jTextFieldNormMedianTestInputComponentFocusLost

  private void jSpinnerInvalidateIsolatedVectorsNumOfNeighboursStateChanged(
      javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_jSpinnerInvalidateIsolatedVectorsNumOfNeighboursStateChanged
    getinvalidateIsolatedVectorsSettings(jpiv.getSettings());
  }// GEN-LAST:event_jSpinnerInvalidateIsolatedVectorsNumOfNeighboursStateChanged

  private void jPanelSubsRefDispInputComponentFocusLost(
      java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jPanelSubsRefDispInputComponentFocusLost
    getSubsRefDispSettings(jpiv.getSettings());
  }// GEN-LAST:event_jPanelSubsRefDispInputComponentFocusLost

  private void jEditorPaneBrowserHyperlinkUpdate(
      javax.swing.event.HyperlinkEvent evt) {// GEN-FIRST:event_jEditorPaneBrowserHyperlinkUpdate
    hyperlinkUpdate(evt);
  }// GEN-LAST:event_jEditorPaneBrowserHyperlinkUpdate

  private void jTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {// GEN-FIRST:event_jTreeValueChanged
    TreePath tp = evt.getNewLeadSelectionPath();
    updatePanelView(tp);
  }// GEN-LAST:event_jTreeValueChanged

  /** Creates a tree-model. */
  private void initTreeModel() {
    tnSettings = new DefaultMutableTreeNode("JPIV");
    tnPreferences = new DefaultMutableTreeNode("Preferences");
    tnLoadSave = new DefaultMutableTreeNode("Load/Save");
    tnCmd = new DefaultMutableTreeNode("Cmd");
    tnPaths = new DefaultMutableTreeNode("Paths");
    tnVector = new DefaultMutableTreeNode("Vector Plot");
    tnImg = new DefaultMutableTreeNode("Image Display");
    tnPiv = new DefaultMutableTreeNode("PIV");
    tnPivGeneral = new DefaultMutableTreeNode("General");
    tnPivWindow = new DefaultMutableTreeNode("Interrogation Window");
    tnSinglePixel = new DefaultMutableTreeNode("Single Pixel Correlation");
    tnVectorProcessing = new DefaultMutableTreeNode("Vector Processing");
    tnProfiles = new DefaultMutableTreeNode("Profile Extraction");
    tnNormMedianTest = new DefaultMutableTreeNode("Normalized Median Test");
    tninvalidateIsolatedVectors = new DefaultMutableTreeNode(
        "Remove Isolated Vectors");
    tnSubsRefDisp = new DefaultMutableTreeNode(
        "Substract Reference Displacement");
    tnThirdCompRecon = new DefaultMutableTreeNode("3C Reconstruction");
    tnBrowser = new DefaultMutableTreeNode("Documentation");
    tnSettings.add(tnPreferences);
    tnPreferences.add(tnLoadSave);
    tnPreferences.add(tnCmd);
    tnPreferences.add(tnPaths);
    tnPreferences.add(tnVector);
    tnPreferences.add(tnImg);
    tnSettings.add(tnPiv);
    tnPiv.add(tnPivGeneral);
    tnPiv.add(tnPivWindow);
    tnPiv.add(tnSinglePixel);
    tnSettings.add(tnVectorProcessing);
    tnVectorProcessing.add(tnProfiles);
    tnVectorProcessing.add(tnNormMedianTest);
    tnVectorProcessing.add(tninvalidateIsolatedVectors);
    tnVectorProcessing.add(tnSubsRefDisp);
    tnVectorProcessing.add(tnThirdCompRecon);
    tnSettings.add(tnBrowser);
  }

  /** Creates a single selection tree selection model. */
  private void configTree() {
    TreeSelectionModel tsm = new DefaultTreeSelectionModel();
    tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    jTree.setSelectionModel(tsm);
  }

  /** Shows a specific panel in dependence of the selected tree node. */
  private void updatePanelView(TreePath tp) {
    if (tp != null) {
      Object o = tp.getLastPathComponent();
      if (o == tnSettings) {
        jScrollPaneRight.setViewportView(jPanelSettings);
      } else if (o == tnPreferences) {
        jScrollPaneRight.setViewportView(jPanelPreferences);
      } else if (o == tnLoadSave) {
        jScrollPaneRight.setViewportView(jPanelLoadSave);
      } else if (o == tnCmd) {
        jScrollPaneRight.setViewportView(jPanelCmd);
      } else if (o == tnPaths) {
        jScrollPaneRight.setViewportView(jPanelPaths);
      } else if (o == tnVector) {
        jScrollPaneRight.setViewportView(jPanelVector);
      } else if (o == tnImg) {
        jScrollPaneRight.setViewportView(jPanelImg);
      } else if (o == tnPiv) {
        jScrollPaneRight.setViewportView(jPanelPiv);
      } else if (o == tnPiv) {
        jScrollPaneRight.setViewportView(jPanelPiv);
      } else if (o == tnPivGeneral) {
        jScrollPaneRight.setViewportView(jPanelPivGeneral);
      } else if (o == tnPivWindow) {
        jScrollPaneRight.setViewportView(jPanelPivWindow);
      } else if (o == tnSinglePixel) {
        jScrollPaneRight.setViewportView(jPanelSinglePixel);
      } else if (o == tnVectorProcessing) {
        jScrollPaneRight.setViewportView(jPanelVectorProcessing);
      } else if (o == tnProfiles) {
        jScrollPaneRight.setViewportView(jPanelProfiles);
      } else if (o == tnNormMedianTest) {
        jScrollPaneRight.setViewportView(jPanelNormMedianTest);
      } else if (o == tninvalidateIsolatedVectors) {
        jScrollPaneRight
            .setViewportView(jPanelInvalidateIsolatedVectors);
      } else if (o == tnSubsRefDisp) {
        jScrollPaneRight.setViewportView(jPanelSubsRefDisp);
      } else if (o == tnThirdCompRecon) {
        jScrollPaneRight.setViewportView(jPanelThirdCompRecon);
      } else if (o == tnBrowser) {
        jScrollPaneRight.setViewportView(jEditorPaneBrowser);
      }
    }
  }

  private void updateJTablePivWindow(jpiv2.Settings settings) {
    int columns = ((Integer) jSpinnerPivMultiPass.getValue()).intValue();
    tableContent = new String[6][columns];
    for (int i = 0; i < 6; ++i) {
      for (int j = 0; j < columns; ++j) {
        if (j < settings.pivWindow[i].length) {
          tableContent[i][j] = String
              .valueOf(settings.pivWindow[i][j]);
        } else {
          tableContent[i][j] = "0";
        }
      }
    }
    colHeads = new String[columns];
    for (int j = 0; j < columns; ++j) {
      colHeads[j] = "pass " + (j + 1);
    }
    tableModel = new javax.swing.table.DefaultTableModel(tableContent,
        colHeads);
    jTablePivWindow.setModel(tableModel);
  }

  /**
   * Modify settings related to file loading and saving. Copies all settings
   * related to file loading and saving into its graphical components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setLoadSaveSettings(jpiv2.Settings settings) {
    jCheckBoxLoadSaveTecplotHeader
        .setSelected(settings.loadSaveTecplotHeader);
  }

  /**
   * Set jpiv2.CmdFrame related settings. Copies all jpiv2.CmdFrame related
   * settings from a settings object into its graphical components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setCmdSettings(jpiv2.Settings settings) {
    jTextFieldCmdNumOfLines.setText(String.valueOf(settings.cmdNumOfLines));
    jCheckBoxCmdLineWrap.setSelected(settings.cmdLineWrap);
  }

  /**
   * Set path information. Copies all paths from a settings object into the
   * related gui components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setPaths(jpiv2.Settings settings) {
    jTextFieldJpivLibrary.setText(settings.jpivLibPath);
  }

  /**
   * Set jpiv2.DisplayVectorFrame related settings. Copies all
   * jpiv2.DisplayVectorFrame related settings from a settings object into its
   * graphical components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setVectorSettings(jpiv2.Settings settings) {
    jTextFieldVectorScale.setText(String.valueOf(settings.vectorScale));
    jTextFieldVectorHeadLength.setText(String
        .valueOf(settings.vectorHeadLength));
    jTextFieldVectorAngle.setText(String.valueOf(settings.vectorAngle));
    jButtonVectorBackground.setBackground(settings.vectorBackground);
    jCheckBoxVectorBackgroundImage
        .setSelected(settings.vectorBackgroundImage);
    jTextFieldBackgroundImage.setText(settings.vectorBackgroundImagePath);
    jButtonVectorColor.setBackground(settings.vectorColor);
    jCheckBoxLabelInvalidVectors.setSelected(settings.labelInvalidVectors);
    jButtonVectorColorInvalid.setBackground(settings.vectorColorInvalid);
    jCheckBoxVectorBackgroundColorCoding
        .setSelected(settings.vectorBackgroundColorCoding);
    jButtonShapeColor.setBackground(settings.shapeColor);
    jTextFieldVectorBackgroundColorCodingColumn.setText(String
        .valueOf(settings.vectorBackgroundColorCodingColumn));
    jTextFieldVectorBackgroundColorCodingMin.setText(String
        .valueOf(settings.vectorBackgroundColorCodingMin));
    jTextFieldVectorBackgroundColorCodingMax.setText(String
        .valueOf(settings.vectorBackgroundColorCodingMax));
    jTextFieldVectorZoom.setText(String.valueOf(settings.vectorZoom));
    jCheckBoxVectorColorCoding.setSelected(settings.vectorMultiColor);
    jTextFieldVectorColorMin.setText(String
        .valueOf(settings.vectorMultiColorMin));
    jTextFieldVectorColorMax.setText(String
        .valueOf(settings.vectorMultiColorMax));
    jTextFieldVectorMultiColorTransparancy.setText(String
        .valueOf(settings.vectorMultiColorTransparancy));
    jCheckBoxVectorShowReference.setSelected(settings.vectorShowReference);
    jTextFieldVectorReferenceUnitConversion.setText(String
        .valueOf(settings.vectorReferenceUnitConversion));
    jTextFieldVectorReferenceLength.setText(String
        .valueOf(settings.vectorReferenceLength));
    jTextFieldVectorReferenceLabel.setText(settings.vectorReferenceLabel);
    jCheckBoxVectorShowColorBar.setSelected(settings.vectorShowColorBar);
    jTextFieldVectorColorBarUnitConversion.setText(String
        .valueOf(settings.vectorColorBarUnitConversion));
    jTextFieldVectorColorBarLabel.setText(settings.vectorColorBarLabel);
    jTextFieldVectorColorBarFormatString
        .setText(settings.vectorColorBarFormatString);
    jTextFieldVectorAxisTickSpacing.setText(String
        .valueOf(settings.vectorTickSpacing));
    jTextFieldVectorAxisScaling.setText(String
        .valueOf(settings.vectorAxisScaling));
    jTextFieldVectorAxisLabel.setText(settings.vectorAxisLabel);
    jSpinnerVectorColorLevels.setValue(new Integer(
        settings.vectorColorLevels));
  }

  /**
   * Set jpiv2.DisplayImgFrame related settings. Copies all
   * jpiv2.DisplayImgFrame related settings from a settings object into its
   * graphical components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setImgSettings(jpiv2.Settings settings) {
    jCheckBoxImgTwoFrames.setSelected(settings.imgTwoFrames);
    jTextFieldImgZoom.setText(String.valueOf(settings.imgZoom));
  }

  /**
   * Set jpiv2.pivEvaluation related settings. Copies all jpiv2.pivEvaluation
   * (general) related settings from a settings object into its graphical
   * components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setPivGeneralSettings(jpiv2.Settings settings) {
    switch (settings.pivSequence) {
    case 1: {
      jRadioButtonPivTwoImages.setSelected(true);
      break;
    }
    case 2: {
      jRadioButtonPivConsecutive.setSelected(true);
      break;
    }
    case 3: {
      jRadioButtonPivSkip.setSelected(true);
      break;
    }
    case 4: {
      jRadioButtonPivCascade.setSelected(true);
      break;
    }
    case 5: {
      jRadioButtonPivPairs.setSelected(true);
      break;
    }
    }
    jTextFieldPivSkip.setText(String.valueOf(settings.pivSkip));
    jCheckBoxPivSumOfCorr.setSelected(settings.pivSumOfCorr);
    jCheckBoxPivShearIntWindows.setSelected(settings.pivShearIntWindows);
  }

  /**
   * Set jpiv2.pivEvaluation related settings. Copies all jpiv2.pivEvaluation
   * (window) related settings from a settings object into its graphical
   * components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setPivWindowSettings(jpiv2.Settings settings) {
    jCheckBoxPivNormMedianTest.setSelected(settings.pivNormMedianTest);
    jCheckBoxPivReplace.setSelected(settings.pivReplace);
    jCheckBoxPivMedian.setSelected(settings.pivMedian);
    jCheckBoxPivSmoothing.setSelected(settings.pivSmoothing);
    jTextFieldPivHorPreShift.setText(String
        .valueOf(settings.pivHorPreShift));
    jTextFieldPivVerPreShift.setText(String
        .valueOf(settings.pivVerPreShift));
    jCheckBoxPivROI.setSelected(settings.pivROI);
    jTextFieldPivROIP1x.setText(String.valueOf(settings.pivROIP1x));
    jTextFieldPivROIP1y.setText(String.valueOf(settings.pivROIP1y));
    jTextFieldPivROIP2x.setText(String.valueOf(settings.pivROIP2x));
    jTextFieldPivROIP2y.setText(String.valueOf(settings.pivROIP2y));
    jCheckBoxPivShearIntWindows.setSelected(settings.pivShearIntWindows);
    jCheckBoxExpCorrFunc.setSelected(settings.exportCorrFunction);
    jTextFieldExpCorrFuncVec.setText(String
        .valueOf(settings.exportCorrFunctionNum));
    jTextFieldExpCorrFuncPass.setText(String
        .valueOf(settings.exportCorrFunctionPass));
    jCheckBoxExpCorrFuncSum
        .setSelected(settings.exportCorrFunctionOnlySumOfCorr);
    jSpinnerPivMultiPass.setValue(new Integer(settings.pivMultiPass));
    updateJTablePivWindow(settings);
  }

  /**
   * Set single pixel correlation related settings. Copies all single pixel
   * correlation related settings from a settings object into its graphical
   * components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setSinglePixelSettings(jpiv2.Settings settings) {
    if (settings.singlePixelTwoImg == true) {
      jRadioButtonSinglePixelTwoImages.setSelected(true);
      jRadioButtonSinglePixelSingleImages.setSelected(false);
    } else {
      jRadioButtonSinglePixelTwoImages.setSelected(false);
      jRadioButtonSinglePixelSingleImages.setSelected(true);
    }
    jCheckBoxSinglePixelROI.setSelected(settings.singlePixelROI);
    jTextFieldSinglePixelROIP1x.setText(String
        .valueOf(settings.singlePixelROIP1x));
    jTextFieldSinglePixelROIP1y.setText(String
        .valueOf(settings.singlePixelROIP1y));
    jTextFieldSinglePixelROIP2x.setText(String
        .valueOf(settings.singlePixelROIP2x));
    jTextFieldSinglePixelROIP2y.setText(String
        .valueOf(settings.singlePixelROIP2y));
    jTextFieldSinglePixelDomainWidth.setText(String
        .valueOf(settings.singlePixelDomainWidth));
    jTextFieldSinglePixelDomainHeight.setText(String
        .valueOf(settings.singlePixelDomainHeight));
    jTextFieldSinglePixelHorPreShift.setText(String
        .valueOf(settings.singlePixelHorPreShift));
    jTextFieldSinglePixelVerPreShift.setText(String
        .valueOf(settings.singlePixelVerPreShift));
    jCheckBoxSinglePixelCreatePreShiftVectorField
        .setSelected(settings.singlePixelCreatePreShiftVectorField);
    jCheckBoxSinglePixel3by3.setSelected(settings.singlePixel3by3);
    jCheckBoxSinglePixelSignalOnly
        .setSelected(settings.singlePixelSignalOnly);
  }

  /**
   * Set profile extraction related settings. Copies all profile extraction
   * settings from a settings object into its graphical components.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setProfilesSettings(jpiv2.Settings settings) {
    jCheckBoxProfilePrintStat.setSelected(settings.profilePrintStat);
    jCheckBoxProfilePrintData.setSelected(settings.profilePrintData);
    jCheckBoxProfileQuadInterp.setSelected(settings.profileQuadInterp);
    jCheckBoxProfileAverage.setSelected(settings.profileAverage);
    jSpinnerProfileNumberOf.setValue(new Integer(settings.profileNumberOf));
    jSpinnerProfileDistance.setValue(new Integer(settings.profileDistance));
    jCheckBoxProfileFixDataPoints
        .setSelected(settings.profileFixDataPoints);
    jTextFieldProfileFixDataPoints.setText(String
        .valueOf(settings.profileNumOfFixDataPoints));
  }

  /**
   * Sets the settings related to the normalized median test.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setNormMedianTestSettings(jpiv2.Settings settings) {
    jTextFieldNormMedianTestThreshold.setText(String
        .valueOf(settings.normMedianTestThreshold));
    jTextFieldNormMedianTestNoiseLevel.setText(String
        .valueOf(settings.normMedianTestNoiseLevel));
  }

  /**
   * Sets the settings relevant for removing isolated vectors.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setinvalidateIsolatedVectorsSettings(jpiv2.Settings settings) {
    jSpinnerInvalidateIsolatedVectorsNumOfNeighbours.setValue(new Integer(
        settings.invalidateIsolatedVectorsNumOfNeighbours));
  }

  /**
   * Sets the settings related to the reference displacement substraction.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setSubsRefDispSettings(jpiv2.Settings settings) {
    jTextFieldSubsRefDispDx.setText(String.valueOf(settings.subsRefDispDx));
    jTextFieldSubsRefDispDy.setText(String.valueOf(settings.subsRefDispDy));
  }

  /**
   * Sets the settings related to the third velocity component reconstruction.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void setThirdCompReconSettings(jpiv2.Settings settings) {
    jTextFieldThirdCompReconDz.setText(String
        .valueOf(settings.thirdCompReconDz));
  }

  /**
   * Fills the user-dialogs with values of a jpiv2.Settings object. Call this
   * method to initilize the dialogs.
   *
   * @param settings
   *            The jpiv2.Settings object that contains the values for
   *            initilization.
   */
  public void setAllSettings(jpiv2.Settings settings) {
    setLoadSaveSettings(settings);
    setCmdSettings(settings);
    setPaths(settings);
    setVectorSettings(settings);
    setImgSettings(settings);
    setPivGeneralSettings(settings);
    setPivWindowSettings(settings);
    setSinglePixelSettings(settings);
    setProfilesSettings(settings);
    setNormMedianTestSettings(settings);
    setinvalidateIsolatedVectorsSettings(settings);
    setSubsRefDispSettings(settings);
    setThirdCompReconSettings(settings);
  }

  /**
   * Get all settings related to file loading and saving. Copies all settings
   * related to file loading and saving from the user input components into a
   * jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getLoadSaveSettings(jpiv2.Settings settings) {
    settings.loadSaveTecplotHeader = jCheckBoxLoadSaveTecplotHeader
        .isSelected();
  }

  /**
   * Get jpiv2.CmdFrame related settings. Copies all jpiv2.CmdFrame related
   * settings from the graphical components into a jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getCmdSettings(jpiv2.Settings settings) {
    settings.cmdNumOfLines = Integer.parseInt(jTextFieldCmdNumOfLines
        .getText());
    settings.cmdLineWrap = jCheckBoxCmdLineWrap.isSelected();
  }

  /**
   * Get path information. Copies the path information from the graphical
   * components into a jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getPaths(jpiv2.Settings settings) {
    settings.jpivLibPath = jTextFieldJpivLibrary.getText();
  }

  /**
   * Get jpiv2.DisplayVecFrame related settings. Copies all
   * jpiv2.DisplayVecFrame related settings from the graphical components into
   * a jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getVectorSettings(jpiv2.Settings settings) {
    settings.vectorScale = Float
        .parseFloat(jTextFieldVectorScale.getText());
    settings.vectorHeadLength = Double
        .parseDouble(jTextFieldVectorHeadLength.getText());
    settings.vectorAngle = Integer
        .parseInt(jTextFieldVectorAngle.getText());
    settings.vectorZoom = Float.parseFloat(jTextFieldVectorZoom.getText());
    settings.vectorBackgroundImage = jCheckBoxVectorBackgroundImage
        .isSelected();
    settings.vectorBackgroundImagePath = jTextFieldBackgroundImage
        .getText();
    settings.vectorBackgroundColorCoding = jCheckBoxVectorBackgroundColorCoding
        .isSelected();
    settings.vectorBackgroundColorCodingColumn = Integer
        .parseInt(jTextFieldVectorBackgroundColorCodingColumn.getText());
    settings.vectorBackgroundColorCodingMin = Float
        .parseFloat(jTextFieldVectorBackgroundColorCodingMin.getText());
    settings.vectorBackgroundColorCodingMax = Float
        .parseFloat(jTextFieldVectorBackgroundColorCodingMax.getText());
    settings.vectorMultiColorTransparancy = Float
        .parseFloat(jTextFieldVectorMultiColorTransparancy.getText());
    settings.labelInvalidVectors = jCheckBoxLabelInvalidVectors
        .isSelected();
    settings.vectorMultiColor = jCheckBoxVectorColorCoding.isSelected();
    settings.vectorMultiColorMin = Float
        .parseFloat(jTextFieldVectorColorMin.getText());
    settings.vectorMultiColorMax = Float
        .parseFloat(jTextFieldVectorColorMax.getText());
    settings.vectorShowReference = jCheckBoxVectorShowReference
        .isSelected();
    settings.vectorReferenceUnitConversion = Float
        .parseFloat(jTextFieldVectorReferenceUnitConversion.getText());
    settings.vectorReferenceLength = Float
        .parseFloat(jTextFieldVectorReferenceLength.getText());
    settings.vectorReferenceLabel = jTextFieldVectorReferenceLabel
        .getText();
    settings.vectorShowColorBar = jCheckBoxVectorShowColorBar.isSelected();
    settings.vectorColorBarUnitConversion = Float
        .parseFloat(jTextFieldVectorColorBarUnitConversion.getText());
    settings.vectorColorBarLabel = jTextFieldVectorColorBarLabel.getText();
    settings.vectorColorBarFormatString = jTextFieldVectorColorBarFormatString
        .getText();
    settings.vectorTickSpacing = Float
        .parseFloat(jTextFieldVectorAxisTickSpacing.getText());
    settings.vectorAxisScaling = Float
        .parseFloat(jTextFieldVectorAxisScaling.getText());
    settings.vectorAxisLabel = jTextFieldVectorAxisLabel.getText();
    settings.vectorColorLevels = ((Integer) jSpinnerVectorColorLevels
        .getValue()).intValue();
  }

  /**
   * Get jpiv2.DisplayImgFrame related settings. Copies all
   * jpiv2.DisplayImgFrame related settings from the graphical components into
   * a jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getImgSettings(jpiv2.Settings settings) {
    settings.imgTwoFrames = jCheckBoxImgTwoFrames.isSelected();
    settings.imgZoom = Float.parseFloat(jTextFieldImgZoom.getText());
  }

  /**
   * Get jpiv2.pivEvaulation related settings. Copies all jpiv2.pivEvaluation
   * (general) related settings from the graphical components into a
   * jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getPivGeneralSettings(jpiv2.Settings settings) {
    if (jRadioButtonPivTwoImages.isSelected()) {
      settings.pivSequence = settings.PIV_TWO_IMG;
    } else if (jRadioButtonPivConsecutive.isSelected()) {
      settings.pivSequence = settings.PIV_CONSECUTIVE;
    } else if (jRadioButtonPivSkip.isSelected()) {
      settings.pivSequence = settings.PIV_SKIP;
    } else if (jRadioButtonPivCascade.isSelected()) {
      settings.pivSequence = settings.PIV_CASCADE;
    } else if (jRadioButtonPivPairs.isSelected()) {
      settings.pivSequence = settings.PIV_PAIRS;
    }
    settings.pivSkip = Integer.parseInt(jTextFieldPivSkip.getText());
    settings.pivSumOfCorr = jCheckBoxPivSumOfCorr.isSelected();
    settings.pivShearIntWindows = jCheckBoxPivShearIntWindows.isSelected();
  }

  /**
   * Get jpiv2.pivEvaluation related settings. Copies all jpiv2.pivEvaluation
   * (window) related settings from the graphical components into a
   * jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getPivWindowSettings(jpiv2.Settings settings) {
    settings.pivMultiPass = ((Integer) jSpinnerPivMultiPass.getValue())
        .intValue();
    int columns = settings.pivMultiPass;
    settings.pivWindow = new int[6][columns];
    for (int i = 0; i < 6; ++i) {
      for (int j = 0; j < columns; ++j) {
        try {
          settings.pivWindow[i][j] = Integer
              .parseInt((String) jTablePivWindow.getModel()
                  .getValueAt(i, j));
        } catch (NumberFormatException e) {
          System.err
              .println("Invalid input. Please enter a positive integer number.");
          jTablePivWindow.editCellAt(i, j);
        }
      }
    }
    settings.pivROI = jCheckBoxPivROI.isSelected();
    settings.pivROIP1x = Integer.parseInt(jTextFieldPivROIP1x.getText());
    settings.pivROIP1y = Integer.parseInt(jTextFieldPivROIP1y.getText());
    settings.pivROIP2x = Integer.parseInt(jTextFieldPivROIP2x.getText());
    settings.pivROIP2y = Integer.parseInt(jTextFieldPivROIP2y.getText());
    settings.pivHorPreShift = Integer.parseInt(jTextFieldPivHorPreShift
        .getText());
    settings.pivVerPreShift = Integer.parseInt(jTextFieldPivVerPreShift
        .getText());
    settings.pivNormMedianTest = jCheckBoxPivNormMedianTest.isSelected();
    settings.pivReplace = jCheckBoxPivReplace.isSelected();
    settings.pivMedian = jCheckBoxPivMedian.isSelected();
    settings.pivSmoothing = jCheckBoxPivSmoothing.isSelected();
    settings.pivShearIntWindows = jCheckBoxPivShearIntWindows.isSelected();
    settings.exportCorrFunction = jCheckBoxExpCorrFunc.isSelected();
    settings.exportCorrFunctionNum = Integer
        .parseInt(jTextFieldExpCorrFuncVec.getText());
    settings.exportCorrFunctionPass = Integer
        .parseInt(jTextFieldExpCorrFuncPass.getText());
    settings.exportCorrFunctionOnlySumOfCorr = jCheckBoxExpCorrFuncSum
        .isSelected();
  }

  /**
   * Get single pixel correlation related settings. Copies all single pixel
   * correlation related settings from the graphical components into a
   * jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getSinglePixelSettings(jpiv2.Settings settings) {
    settings.singlePixelTwoImg = jRadioButtonSinglePixelTwoImages
        .isSelected();
    settings.singlePixelROI = jCheckBoxSinglePixelROI.isSelected();
    settings.singlePixelROIP1x = Integer
        .parseInt(jTextFieldSinglePixelROIP1x.getText());
    settings.singlePixelROIP1y = Integer
        .parseInt(jTextFieldSinglePixelROIP1y.getText());
    settings.singlePixelROIP2x = Integer
        .parseInt(jTextFieldSinglePixelROIP2x.getText());
    settings.singlePixelROIP2y = Integer
        .parseInt(jTextFieldSinglePixelROIP2y.getText());
    settings.singlePixelDomainWidth = Integer
        .parseInt(jTextFieldSinglePixelDomainWidth.getText());
    // check if value is uneven
    if ((settings.singlePixelDomainWidth % 2) == 0) {
      settings.singlePixelDomainWidth += 1;
      setSinglePixelSettings(settings);
    }
    settings.singlePixelDomainHeight = Integer
        .parseInt(jTextFieldSinglePixelDomainHeight.getText());
    // check if value is uneven
    if ((settings.singlePixelDomainHeight % 2) == 0) {
      settings.singlePixelDomainHeight += 1;
      setSinglePixelSettings(settings);
    }
    settings.singlePixelHorPreShift = Integer
        .parseInt(jTextFieldSinglePixelHorPreShift.getText());
    settings.singlePixelVerPreShift = Integer
        .parseInt(jTextFieldSinglePixelVerPreShift.getText());
    settings.singlePixelCreatePreShiftVectorField = jCheckBoxSinglePixelCreatePreShiftVectorField
        .isSelected();
    settings.singlePixel3by3 = jCheckBoxSinglePixel3by3.isSelected();
    settings.singlePixelSignalOnly = jCheckBoxSinglePixelSignalOnly
        .isSelected();
  }

  /**
   * Get profile extraction related settings. Copies all profile extraction
   * related settings from the graphical components into a jpiv2.Settings
   * object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getProfilesSettings(jpiv2.Settings settings) {
    settings.profilePrintStat = jCheckBoxProfilePrintStat.isSelected();
    settings.profilePrintData = jCheckBoxProfilePrintData.isSelected();
    settings.profileQuadInterp = jCheckBoxProfileQuadInterp.isSelected();
    settings.profileAverage = jCheckBoxProfileAverage.isSelected();
    settings.profileNumberOf = ((Integer) jSpinnerProfileNumberOf
        .getValue()).intValue();
    settings.profileDistance = ((Integer) jSpinnerProfileDistance
        .getValue()).intValue();
    settings.profileFixDataPoints = jCheckBoxProfileFixDataPoints
        .isSelected();
    settings.profileNumOfFixDataPoints = Integer
        .parseInt(jTextFieldProfileFixDataPoints.getText());
  }

  /**
   * Retrieves the settings that are related to the normalized median test.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getNormMedianTestSettings(jpiv2.Settings settings) {
    settings.normMedianTestThreshold = Double
        .parseDouble(jTextFieldNormMedianTestThreshold.getText());
    settings.normMedianTestNoiseLevel = Double
        .parseDouble(jTextFieldNormMedianTestNoiseLevel.getText());
  }

  /**
   * Retrieves the settings that are relevant vor removing isolated vectors.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getinvalidateIsolatedVectorsSettings(jpiv2.Settings settings) {
    settings.invalidateIsolatedVectorsNumOfNeighbours = ((Integer) jSpinnerInvalidateIsolatedVectorsNumOfNeighbours
        .getValue()).intValue();
  }

  /**
   * Retrieves the settings that are related to the normalized median test.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getSubsRefDispSettings(jpiv2.Settings settings) {
    settings.subsRefDispDx = Double.parseDouble(jTextFieldSubsRefDispDx
        .getText());
    settings.subsRefDispDy = Double.parseDouble(jTextFieldSubsRefDispDy
        .getText());
  }

  /**
   * Retrieves the settings that are related to the normalized median test.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getThirdCompReconSettings(jpiv2.Settings settings) {
    settings.thirdCompReconDz = Double
        .parseDouble(jTextFieldThirdCompReconDz.getText());
  }

  /**
   * Get all settings. Copies all settings from the graphical components into
   * a jpiv2.Settings object.
   *
   * @param settings
   *            The jpiv2.Settings object.
   */
  public void getAllSettings(jpiv2.Settings settings) {
    getLoadSaveSettings(settings);
    getCmdSettings(settings);
    getPaths(settings);
    getVectorSettings(settings);
    getImgSettings(settings);
    getPivGeneralSettings(settings);
    getPivWindowSettings(settings);
    getSinglePixelSettings(settings);
    getProfilesSettings(settings);
    getNormMedianTestSettings(settings);
    getinvalidateIsolatedVectorsSettings(settings);
    getSubsRefDispSettings(settings);
    getThirdCompReconSettings(settings);
  }

  /**
   * Displays a jpiv2.FlexFileChooser. This dialog supports the user in
   * choosing a background image for vector images.
   */
  private void chooseBackgroundImage() {
    jpiv2.FlexFileChooser flexFileChooser = jpiv.getFlexFileChooser();
    flexFileChooser.setFiletype(flexFileChooser.IMG_READ, false);
    int approve = flexFileChooser.showOpenDialog(this);
    if (approve == javax.swing.JFileChooser.APPROVE_OPTION) {
      java.io.File file = flexFileChooser.getSelectedFile();
      jTextFieldBackgroundImage.setText(file.toString());
    }
  }

  /**
   * Displays a jpiv2.FlexFileChooser. This dialog supports the user in
   * choosing a library directory.
   */
  private void chooseLibraryPath() {
    jpiv2.FlexFileChooser flexFileChooser = jpiv.getFlexFileChooser();
    flexFileChooser.setFiletype(flexFileChooser.DIR, false);
    int approve = flexFileChooser.showOpenDialog(this);
    if (approve == javax.swing.JFileChooser.APPROVE_OPTION) {
      java.io.File file = flexFileChooser.getSelectedFile();
      jTextFieldJpivLibrary.setText(file.toString());
    }
  }

  /**
   * Displays the online documentation.
   */
  public void showDocumentation() {
    String docPath = jpiv.getSettings().jpivLibPath + jpiv.fileSeparator
        + "doc" + jpiv.fileSeparator + "index.html";
    File docFile = new java.io.File(docPath);
    try {
      URI docUri = docFile.toURI();
      URL docUrl = docUri.toURL();
      try {
        jEditorPaneBrowser.setPage(docUrl);
      } catch (java.io.IOException e1) {
        try {
          jEditorPaneBrowser.setPage(new URL(
              "http://www.jpiv.vennemann-online.de/index.html"));
        } catch (java.io.IOException e2) {
          jEditorPaneBrowser.setText("Can not find URL: \n" + docUrl);
        }
      }
    } catch (java.net.MalformedURLException e) {
      jEditorPaneBrowser.setText("Can not create an URL from: \n"
          + docPath);
    }
    jScrollPaneRight.setViewportView(jEditorPaneBrowser);
  }

  /**
   * Displays the url.
   *
   * @param urlString
   *            the url to display.
   */
  public void showURL(String urlString) {
    try {
      URL url = new URL(urlString);
      try {
        jEditorPaneBrowser.setPage(url);
      } catch (java.io.IOException e) {
        jEditorPaneBrowser.setText("Can not find URL: \n" + url);
      }
    } catch (java.net.MalformedURLException e) {
      jEditorPaneBrowser.setText("Can not create an URL from: \n"
          + urlString);
    }
    jScrollPaneRight.setViewportView(jEditorPaneBrowser);
  }

  /**
   * Updates the documentation pane.
   *
   * @param evt
   *            A hyperlink event.
   */
  private void hyperlinkUpdate(HyperlinkEvent evt) {
    if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
      JEditorPane pane = (JEditorPane) evt.getSource();
      if (evt instanceof HTMLFrameHyperlinkEvent) {
        HTMLFrameHyperlinkEvent e = (HTMLFrameHyperlinkEvent) evt;
        HTMLDocument doc = (HTMLDocument) pane.getDocument();
        doc.processHTMLFrameHyperlinkEvent(e);
      } else {
        try {
          pane.setPage(evt.getURL());
        } catch (Throwable t) {
          t.printStackTrace();
        }
      }
    }
  }

  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.ButtonGroup buttonGroupPivCorr;
  private javax.swing.ButtonGroup buttonGroupPivSequence;
  private javax.swing.ButtonGroup buttonGroupPivSubPixelInt;
  private javax.swing.ButtonGroup buttonGroupPivWeightKernel;
  private javax.swing.ButtonGroup buttonGroupSinglePixelSequence;
  private javax.swing.JButton jButtonChooseBackgroundImage;
  private javax.swing.JButton jButtonJpivLibrary;
  private javax.swing.JButton jButtonShapeColor;
  private javax.swing.JButton jButtonVectorBackground;
  private javax.swing.JButton jButtonVectorColor;
  private javax.swing.JButton jButtonVectorColorInvalid;
  private javax.swing.JCheckBox jCheckBoxCmdLineWrap;
  private javax.swing.JCheckBox jCheckBoxExpCorrFunc;
  private javax.swing.JCheckBox jCheckBoxExpCorrFuncSum;
  private javax.swing.JCheckBox jCheckBoxImgTwoFrames;
  private javax.swing.JCheckBox jCheckBoxLabelInvalidVectors;
  private javax.swing.JCheckBox jCheckBoxLoadSaveTecplotHeader;
  private javax.swing.JCheckBox jCheckBoxPivMedian;
  private javax.swing.JCheckBox jCheckBoxPivNormMedianTest;
  private javax.swing.JCheckBox jCheckBoxPivROI;
  private javax.swing.JCheckBox jCheckBoxPivReplace;
  private javax.swing.JCheckBox jCheckBoxPivShearIntWindows;
  private javax.swing.JCheckBox jCheckBoxPivSmoothing;
  private javax.swing.JCheckBox jCheckBoxPivSumOfCorr;
  private javax.swing.JCheckBox jCheckBoxProfileAverage;
  private javax.swing.JCheckBox jCheckBoxProfileFixDataPoints;
  private javax.swing.JCheckBox jCheckBoxProfilePrintData;
  private javax.swing.JCheckBox jCheckBoxProfilePrintStat;
  private javax.swing.JCheckBox jCheckBoxProfileQuadInterp;
  private javax.swing.JCheckBox jCheckBoxSinglePixel3by3;
  private javax.swing.JCheckBox jCheckBoxSinglePixelCreatePreShiftVectorField;
  private javax.swing.JCheckBox jCheckBoxSinglePixelROI;
  private javax.swing.JCheckBox jCheckBoxSinglePixelSignalOnly;
  private javax.swing.JCheckBox jCheckBoxVectorBackgroundColorCoding;
  private javax.swing.JCheckBox jCheckBoxVectorBackgroundImage;
  private javax.swing.JCheckBox jCheckBoxVectorColorCoding;
  private javax.swing.JCheckBox jCheckBoxVectorShowColorBar;
  private javax.swing.JCheckBox jCheckBoxVectorShowReference;
  private javax.swing.JEditorPane jEditorPaneBrowser;
  private javax.swing.JLabel jLabelCmdNumOfLines;
  private javax.swing.JLabel jLabelExpCorrFuncPass;
  private javax.swing.JLabel jLabelExpCorrFuncVec;
  private javax.swing.JLabel jLabelImgZoomFactor;
  private javax.swing.JLabel jLabelInvalidateIsolatedVectorsNumOfNeighbours;
  private javax.swing.JLabel jLabelInvalidateIsolatedVectorsNumOfNeighbours1;
  private javax.swing.JLabel jLabelJpivLibrary;
  private javax.swing.JLabel jLabelNormMedianNoiseLevel;
  private javax.swing.JLabel jLabelNormMedianTestThreshold;
  private javax.swing.JLabel jLabelPivBetweenPasses;
  private javax.swing.JLabel jLabelPivDomainHeight;
  private javax.swing.JLabel jLabelPivDomainWidth;
  private javax.swing.JLabel jLabelPivHorPreShift;
  private javax.swing.JLabel jLabelPivHorVecSpacing;
  private javax.swing.JLabel jLabelPivMultiPass;
  private javax.swing.JLabel jLabelPivROILeft;
  private javax.swing.JLabel jLabelPivROIRight;
  private javax.swing.JLabel jLabelPivROIX;
  private javax.swing.JLabel jLabelPivROIY1;
  private javax.swing.JLabel jLabelPivSkip;
  private javax.swing.JLabel jLabelPivVerPreShift;
  private javax.swing.JLabel jLabelPivVerVecSpacing;
  private javax.swing.JLabel jLabelPivWndHeight;
  private javax.swing.JLabel jLabelPivWndWidth;
  private javax.swing.JLabel jLabelProfileDistance;
  private javax.swing.JLabel jLabelProfileNumberOf;
  private javax.swing.JLabel jLabelShapeColor;
  private javax.swing.JLabel jLabelSinglePixelDomainHeight;
  private javax.swing.JLabel jLabelSinglePixelDomainWidth;
  private javax.swing.JLabel jLabelSinglePixelHorPreShift;
  private javax.swing.JLabel jLabelSinglePixelROIRight;
  private javax.swing.JLabel jLabelSinglePixelROIX;
  private javax.swing.JLabel jLabelSinglePixelROIY;
  private javax.swing.JLabel jLabelSinglePixelROLeft;
  private javax.swing.JLabel jLabelSinglePixelVerPreShift;
  private javax.swing.JLabel jLabelSubsRefDispDx;
  private javax.swing.JLabel jLabelSubsRefDispDy;
  private javax.swing.JLabel jLabelThirdCompReconDz;
  private javax.swing.JLabel jLabelVectorAngle;
  private javax.swing.JLabel jLabelVectorAxisLabel;
  private javax.swing.JLabel jLabelVectorAxisScalingFactor;
  private javax.swing.JLabel jLabelVectorAxisTickSpacing;
  private javax.swing.JLabel jLabelVectorBackground;
  private javax.swing.JLabel jLabelVectorBackgroundColorCodingColumn;
  private javax.swing.JLabel jLabelVectorBackgroundColorCodingMax;
  private javax.swing.JLabel jLabelVectorBackgroundColorCodingMin;
  private javax.swing.JLabel jLabelVectorColor;
  private javax.swing.JLabel jLabelVectorColorBarFormatString;
  private javax.swing.JLabel jLabelVectorColorBarLabel;
  private javax.swing.JLabel jLabelVectorColorBarUnitConversion;
  private javax.swing.JLabel jLabelVectorColorLevels;
  private javax.swing.JLabel jLabelVectorColorMax;
  private javax.swing.JLabel jLabelVectorColorMin;
  private javax.swing.JLabel jLabelVectorHeadLength;
  private javax.swing.JLabel jLabelVectorMultyColorTransparancy;
  private javax.swing.JLabel jLabelVectorReferenceLabel;
  private javax.swing.JLabel jLabelVectorReferenceLength;
  private javax.swing.JLabel jLabelVectorReferenceUnitConversion;
  private javax.swing.JLabel jLabelVectorScale;
  private javax.swing.JLabel jLabelVectorZoomFactor;
  private javax.swing.JPanel jPanelCmd;
  private javax.swing.JPanel jPanelImg;
  private javax.swing.JPanel jPanelInvalidateIsolatedVectors;
  private javax.swing.JPanel jPanelLoadSave;
  private javax.swing.JPanel jPanelNormMedianTest;
  private javax.swing.JPanel jPanelPaths;
  private javax.swing.JPanel jPanelPiv;
  private javax.swing.JPanel jPanelPivGeneral;
  private javax.swing.JPanel jPanelPivWindow;
  private javax.swing.JPanel jPanelPreferences;
  private javax.swing.JPanel jPanelProfiles;
  private javax.swing.JPanel jPanelSettings;
  private javax.swing.JPanel jPanelSinglePixel;
  private javax.swing.JPanel jPanelSubsRefDisp;
  private javax.swing.JPanel jPanelThirdCompRecon;
  private javax.swing.JPanel jPanelVector;
  private javax.swing.JPanel jPanelVectorProcessing;
  private javax.swing.JRadioButton jRadioButtonPivCascade;
  private javax.swing.JRadioButton jRadioButtonPivConsecutive;
  private javax.swing.JRadioButton jRadioButtonPivPairs;
  private javax.swing.JRadioButton jRadioButtonPivSkip;
  private javax.swing.JRadioButton jRadioButtonPivTwoImages;
  private javax.swing.JRadioButton jRadioButtonSinglePixelSingleImages;
  private javax.swing.JRadioButton jRadioButtonSinglePixelTwoImages;
  private javax.swing.JScrollPane jScrollPane1;
  private javax.swing.JScrollPane jScrollPaneLeft;
  private javax.swing.JScrollPane jScrollPaneRight;
  private javax.swing.JSeparator jSeparator1;
  private javax.swing.JSeparator jSeparator10;
  private javax.swing.JSeparator jSeparator11;
  private javax.swing.JSeparator jSeparator12;
  private javax.swing.JSeparator jSeparator13;
  private javax.swing.JSeparator jSeparator14;
  private javax.swing.JSeparator jSeparator15;
  private javax.swing.JSeparator jSeparator2;
  private javax.swing.JSeparator jSeparator3;
  private javax.swing.JSeparator jSeparator4;
  private javax.swing.JSeparator jSeparator5;
  private javax.swing.JSeparator jSeparator6;
  private javax.swing.JSeparator jSeparator7;
  private javax.swing.JSeparator jSeparator8;
  private javax.swing.JSeparator jSeparator9;
  private javax.swing.JSpinner jSpinnerInvalidateIsolatedVectorsNumOfNeighbours;
  private javax.swing.JSpinner jSpinnerPivMultiPass;
  private javax.swing.JSpinner jSpinnerProfileDistance;
  private javax.swing.JSpinner jSpinnerProfileNumberOf;
  private javax.swing.JSpinner jSpinnerVectorColorLevels;
  private javax.swing.JSplitPane jSplitPane;
  private javax.swing.JTable jTablePivWindow;
  private javax.swing.JTextField jTextFieldBackgroundImage;
  private javax.swing.JTextField jTextFieldCmdNumOfLines;
  private javax.swing.JTextField jTextFieldExpCorrFuncPass;
  private javax.swing.JTextField jTextFieldExpCorrFuncVec;
  private javax.swing.JTextField jTextFieldImgZoom;
  private javax.swing.JTextField jTextFieldJpivLibrary;
  private javax.swing.JTextField jTextFieldNormMedianTestNoiseLevel;
  private javax.swing.JTextField jTextFieldNormMedianTestThreshold;
  private javax.swing.JTextField jTextFieldPivHorPreShift;
  private javax.swing.JTextField jTextFieldPivROIP1x;
  private javax.swing.JTextField jTextFieldPivROIP1y;
  private javax.swing.JTextField jTextFieldPivROIP2x;
  private javax.swing.JTextField jTextFieldPivROIP2y;
  private javax.swing.JTextField jTextFieldPivSkip;
  private javax.swing.JTextField jTextFieldPivVerPreShift;
  private javax.swing.JTextField jTextFieldProfileFixDataPoints;
  private javax.swing.JTextField jTextFieldSinglePixelDomainHeight;
  private javax.swing.JTextField jTextFieldSinglePixelDomainWidth;
  private javax.swing.JTextField jTextFieldSinglePixelHorPreShift;
  private javax.swing.JTextField jTextFieldSinglePixelROIP1x;
  private javax.swing.JTextField jTextFieldSinglePixelROIP1y;
  private javax.swing.JTextField jTextFieldSinglePixelROIP2x;
  private javax.swing.JTextField jTextFieldSinglePixelROIP2y;
  private javax.swing.JTextField jTextFieldSinglePixelVerPreShift;
  private javax.swing.JTextField jTextFieldSubsRefDispDx;
  private javax.swing.JTextField jTextFieldSubsRefDispDy;
  private javax.swing.JTextField jTextFieldThirdCompReconDz;
  private javax.swing.JTextField jTextFieldVectorAngle;
  private javax.swing.JTextField jTextFieldVectorAxisLabel;
  private javax.swing.JTextField jTextFieldVectorAxisScaling;
  private javax.swing.JTextField jTextFieldVectorAxisTickSpacing;
  private javax.swing.JTextField jTextFieldVectorBackgroundColorCodingColumn;
  private javax.swing.JTextField jTextFieldVectorBackgroundColorCodingMax;
  private javax.swing.JTextField jTextFieldVectorBackgroundColorCodingMin;
  private javax.swing.JTextField jTextFieldVectorColorBarFormatString;
  private javax.swing.JTextField jTextFieldVectorColorBarLabel;
  private javax.swing.JTextField jTextFieldVectorColorBarUnitConversion;
  private javax.swing.JTextField jTextFieldVectorColorMax;
  private javax.swing.JTextField jTextFieldVectorColorMin;
  private javax.swing.JTextField jTextFieldVectorHeadLength;
  private javax.swing.JTextField jTextFieldVectorMultiColorTransparancy;
  private javax.swing.JTextField jTextFieldVectorReferenceLabel;
  private javax.swing.JTextField jTextFieldVectorReferenceLength;
  private javax.swing.JTextField jTextFieldVectorReferenceUnitConversion;
  private javax.swing.JTextField jTextFieldVectorScale;
  private javax.swing.JTextField jTextFieldVectorZoom;
  private javax.swing.JTree jTree;
  // End of variables declaration//GEN-END:variables

  private jpiv2.JPiv jpiv;
  private DefaultMutableTreeNode tnSettings, tnPreferences, tnLoadSave,
      tnCmd, tnPaths, tnVector, tnImg, tnPiv, tnPivGeneral, tnPivWindow,
      tnSinglePixel, tnVectorProcessing, tnProfiles, tnNormMedianTest,
      tninvalidateIsolatedVectors, tnSubsRefDisp, tnThirdCompRecon,
      tnBrowser;
  private String[] colHeads;
  private String[][] tableContent;
  private javax.swing.table.DefaultTableModel tableModel;

}
TOP

Related Classes of jpiv2.SettingsFrame

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.