package com.itemanalysis.jmetrik.stats.irt.estimation;
import com.itemanalysis.jmetrik.commandbuilder.Command;
import com.itemanalysis.jmetrik.commandbuilder.MegaOption;
import com.itemanalysis.jmetrik.model.SortedListModel;
import com.itemanalysis.jmetrik.model.VariableListFilter;
import com.itemanalysis.jmetrik.model.VariableListModel;
import com.itemanalysis.jmetrik.sql.DataTableName;
import com.itemanalysis.jmetrik.sql.DatabaseName;
import com.itemanalysis.jmetrik.workspace.VariableChangeEvent;
import com.itemanalysis.jmetrik.workspace.VariableChangeListener;
import com.itemanalysis.psychometrics.data.ItemType;
import com.itemanalysis.psychometrics.data.VariableAttributes;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.util.ArrayList;
public class IrtItemCalibrationDialog extends JDialog {
// Variables declaration - do not modify
private JLabel baseGroupLabel;
private JTextField baseGroupTextField;
private JRadioButton bfgsRadioButton;
private JPanel convergencePanel;
private JLabel countLabel;
private JLabel distributionOutputLabel;
private JTextField distributionOutputTextField;
private JButton fixedValuesButton;
private JLabel groupByLabel;
private JTextField groupByTextField;
private JRadioButton ignoreRadioButton;
private ButtonGroup itemFitButtonGroup;
private JPanel itemFitPanel;
private JPanel itemOptionPanel;
private JPanel itemPanel;
private JButton okButton;
private JButton cancelButton;
private JLabel jLabel1;
private JPanel buttonPanel;
private JPanel latentDistributionPanel;
private JLabel maxIterScoreLabel;
private JTextField maxIterScoreTextField;
private JLabel maxIterationLabel;
private JTextField maxIterationTextField;
private JLabel maxLabel;
private JLabel maxScoreLabel;
private JTextField maxScoreTextField;
private JTextField maxTextField;
private JLabel meanScoreLabel;
private JTextField meanTextField;
private JLabel minLabel;
private JLabel minScoreLabel;
private JTextField minScoreTextField;
private JTextField minTextField;
private JTextField mincountTextField;
private ButtonGroup missingDataButtonGroup;
private JPanel missingDataPanel;
private ButtonGroup optimizerButtonGroup;
private JPanel optimizerPanel;
private JPanel optionsPanel;
private JLabel outputLabel;
private JTextField outputTextField;
private JPanel personPanel;
private JPanel personScorePanel;
private JPanel personScoringTab;
private JTextField pointTextField;
private JLabel pointsLabel;
private JLabel pointsScoreLabel;
private JTextField pointsScoreTextField;
private JLabel residualLabel;
private JTextField residualTextField;
private JRadioButton scoreAsZeroRadioButton;
private JLabel scoreTypeLabel;
private JComboBox scoringcomboBox;
private JLabel sdScoreLabel;
private JTextField sdTextField;
private JButton selectGroupButton;
private JButton selectItemsButton;
private JTabbedPane tabbedPane;
private JLabel toeranceLabel;
private JLabel toleranceScoreLabel;
private JTextField toleranceScoreTextField;
private JTextField toleranceTextField;
private JComboBox typeComboBox;
private JLabel typeLabel;
private JRadioButton uncminRadioButton;
private JLabel variableNameScoreLabel;
private JTextField variableNameScoreTextField;
private JPanel fixedPanel;
private JLabel selectFixedLabel;
private JButton selectFixedButton;
private JTextField selectFixedTextField;
// End of variables declaration
private Connection conn = null;
private DatabaseName dbName = null;
private DataTableName tableName = null;
private SortedListModel<DataTableName> tableListModel = null;
private VariableListModel variableListModel = null;
private boolean canRun = false;
private IrtItemCalibrationCommand command = null;
private ItemGroupWizzard wizzard = null;
private String[] latentDistributionTypeString = { "Normal", "Gauss-Hermite", "Empirical Histogram"};
private String[] latentDistributionCode = {"normal", "GH", "EH"};
public IrtItemCalibrationDialog(JFrame parent, Connection conn, DatabaseName dbName, DataTableName tableName,
SortedListModel<DataTableName> tableListModel, ArrayList<VariableAttributes> variables){
super(parent, "IRT Item Calibration", true);
this.conn = conn;
this.dbName = dbName;
this.tableName = tableName;
this.tableListModel = tableListModel;
VariableListFilter listFilter = new VariableListFilter();
listFilter.addFilteredItemType(ItemType.NOT_ITEM);
variableListModel = new VariableListModel(listFilter);
for(VariableAttributes v : variables){
variableListModel.addElement(v);
}
initComponents();
setResizable(false);
setLocationRelativeTo(parent);
//prevent running an analysis when window close button is clicked
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
canRun = false;
}
});
}
private void initComponents() {
GridBagConstraints gridBagConstraints;
optimizerButtonGroup = new ButtonGroup();
missingDataButtonGroup = new ButtonGroup();
tabbedPane = new JTabbedPane();
itemPanel = new JPanel();
itemOptionPanel = new JPanel();
selectItemsButton = new JButton();
fixedValuesButton = new JButton();
outputLabel = new JLabel();
outputTextField = new JTextField();
selectFixedLabel = new JLabel();
selectFixedTextField = new JTextField();
itemFitPanel = new JPanel();
mincountTextField = new JTextField();
countLabel = new JLabel();
personPanel = new JPanel();
latentDistributionPanel = new JPanel();
typeLabel = new JLabel();
typeComboBox = new JComboBox();
pointsLabel = new JLabel();
pointTextField = new JTextField();
minLabel = new JLabel();
minTextField = new JTextField();
maxLabel = new JLabel();
maxTextField = new JTextField();
groupByLabel = new JLabel();
groupByTextField = new JTextField();
selectGroupButton = new JButton();
distributionOutputLabel = new JLabel();
distributionOutputTextField = new JTextField();
baseGroupLabel = new JLabel();
baseGroupTextField = new JTextField();
personScoringTab = new JPanel();
personScorePanel = new JPanel();
scoreTypeLabel = new JLabel();
scoringcomboBox = new JComboBox();
minScoreLabel = new JLabel();
minScoreTextField = new JTextField();
maxScoreLabel = new JLabel();
maxScoreTextField = new JTextField();
residualLabel = new JLabel();
residualTextField = new JTextField();
meanScoreLabel = new JLabel();
meanTextField = new JTextField();
sdScoreLabel = new JLabel();
sdTextField = new JTextField();
pointsScoreLabel = new JLabel();
pointsScoreTextField = new JTextField();
maxIterScoreLabel = new JLabel();
maxIterScoreTextField = new JTextField();
toleranceScoreLabel = new JLabel();
toleranceScoreTextField = new JTextField();
variableNameScoreLabel = new JLabel();
variableNameScoreTextField = new JTextField();
optionsPanel = new JPanel();
convergencePanel = new JPanel();
toeranceLabel = new JLabel();
toleranceTextField = new JTextField();
maxIterationLabel = new JLabel();
maxIterationTextField = new JTextField();
missingDataPanel = new JPanel();
ignoreRadioButton = new JRadioButton();
scoreAsZeroRadioButton = new JRadioButton();
optimizerPanel = new JPanel();
uncminRadioButton = new JRadioButton();
bfgsRadioButton = new JRadioButton();
buttonPanel = new JPanel();
okButton = new JButton();
cancelButton = new JButton();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
itemOptionPanel.setBorder(BorderFactory.createTitledBorder("Item Options"));
itemOptionPanel.setPreferredSize(new Dimension(456, 116));
selectItemsButton.setText("Select Items");
selectItemsButton.setMaximumSize(new Dimension(125, 28));
selectItemsButton.setMinimumSize(new Dimension(125, 28));
selectItemsButton.setPreferredSize(new Dimension(125, 28));
selectItemsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (wizzard == null) wizzard = new ItemGroupWizzard(IrtItemCalibrationDialog.this, variableListModel);
wizzard.setVisible(true);
}
});
fixedValuesButton.setText("Fixed Values");
fixedValuesButton.setEnabled(false);
fixedValuesButton.setMaximumSize(new Dimension(125, 28));
fixedValuesButton.setMinimumSize(new Dimension(125, 28));
fixedValuesButton.setPreferredSize(new Dimension(125, 28));
outputLabel.setText("Output table");
outputTextField.setMaximumSize(new Dimension(160, 28));
outputTextField.setMinimumSize(new Dimension(160, 28));
outputTextField.setPreferredSize(new Dimension(160, 28));
selectFixedLabel.setText("Fixed Table");
selectFixedTextField.setMinimumSize(new Dimension(125, 28));
selectFixedTextField.setPreferredSize(new Dimension(125, 28));
selectFixedTextField.setEnabled(false);
GroupLayout itemOptionPanelLayout = new GroupLayout(itemOptionPanel);
itemOptionPanel.setLayout(itemOptionPanelLayout);
itemOptionPanelLayout.setHorizontalGroup(
itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemOptionPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(selectItemsButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(fixedValuesButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(outputLabel)
.addComponent(selectFixedLabel))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(outputTextField, GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE)
.addComponent(selectFixedTextField, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(20, Short.MAX_VALUE))
);
itemOptionPanelLayout.setVerticalGroup(
itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemOptionPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(outputLabel)
.addComponent(outputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addComponent(selectItemsButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(fixedValuesButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(selectFixedLabel))
.addComponent(selectFixedTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(20, Short.MAX_VALUE))
);
itemFitPanel.setBorder(BorderFactory.createTitledBorder("Item FIt"));
mincountTextField.setText("1");
mincountTextField.setMaximumSize(new Dimension(50, 28));
mincountTextField.setMinimumSize(new Dimension(50, 28));
mincountTextField.setPreferredSize(new Dimension(50, 28));
countLabel.setText("Min average expected count");
GroupLayout itemFitPanelLayout = new GroupLayout(itemFitPanel);
itemFitPanel.setLayout(itemFitPanelLayout);
itemFitPanelLayout.setHorizontalGroup(
itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemFitPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(countLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(mincountTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
itemFitPanelLayout.setVerticalGroup(
itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemFitPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(mincountTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(countLabel))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
GroupLayout itemPanelLayout = new GroupLayout(itemPanel);
itemPanel.setLayout(itemPanelLayout);
itemPanelLayout.setHorizontalGroup(
itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(itemOptionPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(itemPanelLayout.createSequentialGroup()
.addComponent(itemFitPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
itemPanelLayout.setVerticalGroup(
itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(itemPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(itemOptionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(itemFitPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(16, Short.MAX_VALUE))
);
tabbedPane.addTab("Item Calibration", itemPanel);
latentDistributionPanel.setBorder(BorderFactory.createTitledBorder("Latent Distribution Options"));
typeLabel.setText("Type");
typeComboBox.setModel(new DefaultComboBoxModel(new String[] { "Normal", "Gauss-Hermite", "Empirical Histogram" }));
typeComboBox.setMaximumSize(new Dimension(125, 28));
typeComboBox.setMinimumSize(new Dimension(125, 28));
typeComboBox.setPreferredSize(new Dimension(125, 28));
typeComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = (String) typeComboBox.getSelectedItem();
if ("Gauss-Hermite".equals(s)) {
pointTextField.setEnabled(true);
minTextField.setEnabled(false);
maxTextField.setEnabled(false);
} else {
pointTextField.setEnabled(true);
minTextField.setEnabled(true);
maxTextField.setEnabled(true);
}
}
});
pointsLabel.setText("Points");
pointTextField.setText("49");
pointTextField.setMaximumSize(new Dimension(50, 28));
pointTextField.setMinimumSize(new Dimension(50, 28));
pointTextField.setPreferredSize(new Dimension(50, 28));
minLabel.setText("Min value");
minTextField.setText("-6.0");
minTextField.setMaximumSize(new Dimension(50, 28));
minTextField.setMinimumSize(new Dimension(50, 28));
minTextField.setPreferredSize(new Dimension(50, 28));
maxLabel.setText("Max value");
maxTextField.setText("6.0");
maxTextField.setMaximumSize(new Dimension(50, 28));
maxTextField.setMinimumSize(new Dimension(50, 28));
maxTextField.setPreferredSize(new Dimension(50, 28));
groupByLabel.setText("Group by");
groupByTextField.setEnabled(false);
groupByTextField.setMaximumSize(new Dimension(150, 28));
groupByTextField.setMinimumSize(new Dimension(150, 28));
groupByTextField.setPreferredSize(new Dimension(150, 28));
selectGroupButton.setText("Select");
selectGroupButton.setEnabled(false);
selectGroupButton.setMaximumSize(new Dimension(75, 28));
selectGroupButton.setMinimumSize(new Dimension(75, 28));
selectGroupButton.setPreferredSize(new Dimension(75, 28));
distributionOutputLabel.setText("Output table");
distributionOutputTextField.setMaximumSize(new Dimension(150, 28));
distributionOutputTextField.setMinimumSize(new Dimension(150, 28));
distributionOutputTextField.setPreferredSize(new Dimension(150, 28));
baseGroupLabel.setText("Base group");
baseGroupTextField.setEnabled(false);
baseGroupTextField.setMaximumSize(new Dimension(50, 28));
baseGroupTextField.setMinimumSize(new Dimension(50, 28));
baseGroupTextField.setPreferredSize(new Dimension(50, 28));
GroupLayout latentDistributionPanelLayout = new GroupLayout(latentDistributionPanel);
latentDistributionPanel.setLayout(latentDistributionPanelLayout);
latentDistributionPanelLayout.setHorizontalGroup(
latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
.addGroup(GroupLayout.Alignment.LEADING, latentDistributionPanelLayout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(typeLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(typeComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addComponent(minLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(maxLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(pointsLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pointTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(GroupLayout.Alignment.LEADING, latentDistributionPanelLayout.createSequentialGroup()
.addComponent(distributionOutputLabel)
.addGap(90, 90, 90)))
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addComponent(groupByLabel)
.addGap(21, 21, 21)
.addComponent(groupByTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(selectGroupButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(GroupLayout.Alignment.TRAILING, latentDistributionPanelLayout.createSequentialGroup()
.addGap(65, 65, 65)
.addComponent(distributionOutputTextField, GroupLayout.PREFERRED_SIZE, 231, GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(baseGroupLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(baseGroupTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(12, Short.MAX_VALUE))
);
latentDistributionPanelLayout.setVerticalGroup(
latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(latentDistributionPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(typeLabel)
.addComponent(typeComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(11, 11, 11)
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(pointsLabel)
.addComponent(pointTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(maxLabel)
.addComponent(maxTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(minLabel)
.addComponent(minTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(groupByLabel)
.addComponent(groupByTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(selectGroupButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(baseGroupLabel)
.addComponent(baseGroupTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(distributionOutputLabel)
.addComponent(distributionOutputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
GroupLayout personPanelLayout = new GroupLayout(personPanel);
personPanel.setLayout(personPanelLayout);
personPanelLayout.setHorizontalGroup(
personPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(latentDistributionPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
personPanelLayout.setVerticalGroup(
personPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(latentDistributionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(21, Short.MAX_VALUE))
);
tabbedPane.addTab("Latent Distribution", personPanel);
personScorePanel.setBorder(BorderFactory.createTitledBorder("Person Scoring Options"));
scoreTypeLabel.setText("Score type");
scoringcomboBox.setModel(new DefaultComboBoxModel(new String[] { "EAP", "MAP", "MLE" }));
scoringcomboBox.setMaximumSize(new Dimension(65, 28));
scoringcomboBox.setMinimumSize(new Dimension(65, 28));
scoringcomboBox.setPreferredSize(new Dimension(65, 28));
scoringcomboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = (String) scoringcomboBox.getSelectedItem();
if ("MLE".equals(s)) {
meanTextField.setEnabled(false);
sdTextField.setEnabled(false);
toleranceScoreTextField.setEnabled(true);
maxIterScoreTextField.setEnabled(true);
} else if ("MAP".equals(s)) {
meanTextField.setEnabled(true);
sdTextField.setEnabled(true);
toleranceScoreTextField.setEnabled(true);
maxIterScoreTextField.setEnabled(true);
} else {
meanTextField.setEnabled(true);
sdTextField.setEnabled(true);
toleranceScoreTextField.setEnabled(false);
maxIterScoreTextField.setEnabled(false);
}
}
});
minScoreLabel.setText("Min");
minScoreTextField.setText("-6.0");
minScoreTextField.setMaximumSize(new Dimension(50, 28));
minScoreTextField.setMinimumSize(new Dimension(50, 28));
minScoreTextField.setPreferredSize(new Dimension(50, 28));
maxScoreLabel.setText("Max");
maxScoreTextField.setText("6.0");
maxScoreTextField.setMaximumSize(new Dimension(50, 28));
maxScoreTextField.setMinimumSize(new Dimension(50, 28));
maxScoreTextField.setPreferredSize(new Dimension(50, 28));
residualLabel.setText("Residual table");
residualTextField.setMaximumSize(new Dimension(155, 28));
residualTextField.setMinimumSize(new Dimension(155, 28));
residualTextField.setPreferredSize(new Dimension(155, 28));
meanScoreLabel.setText("Mean");
meanTextField.setText("0");
meanTextField.setMaximumSize(new Dimension(50, 28));
meanTextField.setMinimumSize(new Dimension(50, 28));
meanTextField.setPreferredSize(new Dimension(50, 28));
sdScoreLabel.setText("SD");
sdTextField.setText("1");
sdTextField.setMaximumSize(new Dimension(50, 28));
sdTextField.setMinimumSize(new Dimension(50, 28));
sdTextField.setPreferredSize(new Dimension(50, 28));
pointsScoreLabel.setText("Points");
pointsScoreTextField.setText("60");
pointsScoreTextField.setMaximumSize(new Dimension(50, 28));
pointsScoreTextField.setMinimumSize(new Dimension(50, 28));
pointsScoreTextField.setPreferredSize(new Dimension(50, 28));
maxIterScoreLabel.setText("Max iterations");
maxIterScoreTextField.setText("100");
maxIterScoreTextField.setEnabled(false);
maxIterScoreTextField.setMaximumSize(new Dimension(60, 28));
maxIterScoreTextField.setMinimumSize(new Dimension(60, 28));
maxIterScoreTextField.setPreferredSize(new Dimension(60, 28));
toleranceScoreLabel.setText("Tolerance");
toleranceScoreTextField.setText("1e-10");
toleranceScoreTextField.setEnabled(false);
toleranceScoreTextField.setMaximumSize(new Dimension(60, 28));
toleranceScoreTextField.setMinimumSize(new Dimension(60, 28));
toleranceScoreTextField.setPreferredSize(new Dimension(60, 28));
variableNameScoreLabel.setText("Variable name");
variableNameScoreTextField.setMaximumSize(new Dimension(155, 28));
variableNameScoreTextField.setMinimumSize(new Dimension(155, 28));
variableNameScoreTextField.setPreferredSize(new Dimension(155, 28));
GroupLayout personScorePanelLayout = new GroupLayout(personScorePanel);
personScorePanel.setLayout(personScorePanelLayout);
personScorePanelLayout.setHorizontalGroup(
personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personScorePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personScorePanelLayout.createSequentialGroup()
.addComponent(variableNameScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(variableNameScoreTextField, GroupLayout.PREFERRED_SIZE, 186, GroupLayout.PREFERRED_SIZE))
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
.addGroup(GroupLayout.Alignment.LEADING, personScorePanelLayout.createSequentialGroup()
.addGap(25, 25, 25)
.addComponent(scoreTypeLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scoringcomboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(maxIterScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxIterScoreTextField, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(toleranceScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(toleranceScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(GroupLayout.Alignment.LEADING, personScorePanelLayout.createSequentialGroup()
.addComponent(meanScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(meanTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(sdScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sdTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(minScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(maxScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(pointsScoreLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pointsScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addGroup(personScorePanelLayout.createSequentialGroup()
.addComponent(residualLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(residualTextField, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(20, Short.MAX_VALUE))
);
personScorePanelLayout.setVerticalGroup(
personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personScorePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(variableNameScoreLabel)
.addComponent(variableNameScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(scoreTypeLabel)
.addComponent(scoringcomboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(maxIterScoreLabel)
.addComponent(maxIterScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(toleranceScoreLabel)
.addComponent(toleranceScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(meanScoreLabel)
.addComponent(meanTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(sdScoreLabel)
.addComponent(sdTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(minScoreLabel)
.addComponent(minScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(maxScoreLabel)
.addComponent(maxScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(pointsScoreLabel)
.addComponent(pointsScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(residualLabel)
.addComponent(residualTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
GroupLayout personScoringTabLayout = new GroupLayout(personScoringTab);
personScoringTab.setLayout(personScoringTabLayout);
personScoringTabLayout.setHorizontalGroup(
personScoringTabLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personScoringTabLayout.createSequentialGroup()
.addContainerGap()
.addComponent(personScorePanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
personScoringTabLayout.setVerticalGroup(
personScoringTabLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(personScoringTabLayout.createSequentialGroup()
.addContainerGap()
.addComponent(personScorePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(14, Short.MAX_VALUE))
);
tabbedPane.addTab("Person Scoring", personScoringTab);
convergencePanel.setBorder(BorderFactory.createTitledBorder("Convergence Criteria"));
toeranceLabel.setText("Tolerance");
toleranceTextField.setText("0.001");
toleranceTextField.setMaximumSize(new Dimension(75, 28));
toleranceTextField.setMinimumSize(new Dimension(75, 28));
toleranceTextField.setPreferredSize(new Dimension(75, 28));
maxIterationLabel.setText("Max iterations");
maxIterationTextField.setText("250");
maxIterationTextField.setMaximumSize(new Dimension(75, 28));
maxIterationTextField.setMinimumSize(new Dimension(75, 28));
maxIterationTextField.setPreferredSize(new Dimension(75, 28));
GroupLayout convergencePanelLayout = new GroupLayout(convergencePanel);
convergencePanel.setLayout(convergencePanelLayout);
convergencePanelLayout.setHorizontalGroup(
convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(convergencePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addGroup(convergencePanelLayout.createSequentialGroup()
.addComponent(toeranceLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(toleranceTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(convergencePanelLayout.createSequentialGroup()
.addComponent(maxIterationLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxIterationTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
convergencePanelLayout.setVerticalGroup(
convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(convergencePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(toeranceLabel)
.addComponent(toleranceTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(maxIterationLabel)
.addComponent(maxIterationTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
missingDataPanel.setBorder(BorderFactory.createTitledBorder("Missing Data"));
missingDataButtonGroup.add(ignoreRadioButton);
ignoreRadioButton.setSelected(true);
ignoreRadioButton.setText("Ignore");
ignoreRadioButton.setActionCommand("ignore");
missingDataButtonGroup.add(scoreAsZeroRadioButton);
scoreAsZeroRadioButton.setText("Score as zero");
scoreAsZeroRadioButton.setActionCommand("zero");
GroupLayout missingDataPanelLayout = new GroupLayout(missingDataPanel);
missingDataPanel.setLayout(missingDataPanelLayout);
missingDataPanelLayout.setHorizontalGroup(
missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(missingDataPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(ignoreRadioButton)
.addComponent(scoreAsZeroRadioButton))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
missingDataPanelLayout.setVerticalGroup(
missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(missingDataPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ignoreRadioButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(scoreAsZeroRadioButton)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
optimizerPanel.setBorder(BorderFactory.createTitledBorder("Optimizer"));
optimizerButtonGroup.add(uncminRadioButton);
uncminRadioButton.setSelected(true);
uncminRadioButton.setText("UNCMIN");
uncminRadioButton.setActionCommand("uncmin");
optimizerButtonGroup.add(bfgsRadioButton);
bfgsRadioButton.setText("BFGS");
bfgsRadioButton.setActionCommand("bfgs");
GroupLayout optimizerPanelLayout = new GroupLayout(optimizerPanel);
optimizerPanel.setLayout(optimizerPanelLayout);
optimizerPanelLayout.setHorizontalGroup(
optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(optimizerPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(uncminRadioButton)
.addComponent(bfgsRadioButton))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
optimizerPanelLayout.setVerticalGroup(
optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(optimizerPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(uncminRadioButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(bfgsRadioButton)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
GroupLayout optionsPanelLayout = new GroupLayout(optionsPanel);
optionsPanel.setLayout(optionsPanelLayout);
optionsPanelLayout.setHorizontalGroup(
optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(convergencePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(missingDataPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(optimizerPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(71, Short.MAX_VALUE))
);
optionsPanelLayout.setVerticalGroup(
optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
.addComponent(optimizerPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(missingDataPanel, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(convergencePanel, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(104, Short.MAX_VALUE))
);
tabbedPane.addTab("Options", optionsPanel);
buttonPanel.setMinimumSize(new Dimension(471, 40));
buttonPanel.setPreferredSize(new Dimension(471, 40));
buttonPanel.setLayout(new GridBagLayout());
okButton.setText("OK");
okButton.setMaximumSize(new Dimension(72, 28));
okButton.setMinimumSize(new Dimension(72, 28));
okButton.setPreferredSize(new Dimension(72, 28));
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setCommand();
// System.out.println(command.paste());
setVisible(false);
}
});
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx = 1;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 0.4;
gridBagConstraints.insets = new Insets(11, 204, 11, 0);
buttonPanel.add(okButton, gridBagConstraints);
cancelButton.setText("Cancel");
cancelButton.setMaximumSize(new Dimension(72, 28));
cancelButton.setMinimumSize(new Dimension(72, 28));
cancelButton.setPreferredSize(new Dimension(72, 28));
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canRun = false;
setVisible(false);
}
});
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new Insets(11, 6, 11, 118);
buttonPanel.add(cancelButton, gridBagConstraints);
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(buttonPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(20, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
// private void initComponents() {
// GridBagConstraints gridBagConstraints;
//
// optimizerButtonGroup = new ButtonGroup();
// missingDataButtonGroup = new ButtonGroup();
// itemFitButtonGroup = new ButtonGroup();
// tabbedPane = new JTabbedPane();
// itemPanel = new JPanel();
// itemOptionPanel = new JPanel();
// selectItemsButton = new JButton();
// fixedValuesButton = new JButton();
// outputLabel = new JLabel();
// outputTextField = new JTextField();
// itemFitPanel = new JPanel();
// mincountTextField = new JTextField();
// countLabel = new JLabel();
// fitPlotCheckBox = new JCheckBox();
// jLabel1 = new JLabel();
// saveFitButton = new JButton();
// saveFitPlotTextField = new JTextField();
// personPanel = new JPanel();
// latentDistributionPanel = new JPanel();
// typeLabel = new JLabel();
// typeComboBox = new JComboBox();
// pointsLabel = new JLabel();
// pointTextField = new JTextField();
// minLabel = new JLabel();
// minTextField = new JTextField();
// maxLabel = new JLabel();
// maxTextField = new JTextField();
// groupByLabel = new JLabel();
// groupByTextField = new JTextField();
// selectGroupButton = new JButton();
// distributionOutputLabel = new JLabel();
// distributionOutputTextField = new JTextField();
// baseGroupLabel = new JLabel();
// baseGroupTextField = new JTextField();
// personScoringTab = new JPanel();
// personScorePanel = new JPanel();
// scoreTypeLabel = new JLabel();
// scoringcomboBox = new JComboBox();
// minScoreLabel = new JLabel();
// minScoreTextField = new JTextField();
// maxScoreLabel = new JLabel();
// maxScoreTextField = new JTextField();
// residualLabel = new JLabel();
// residualTextField = new JTextField();
// meanScoreLabel = new JLabel();
// meanTextField = new JTextField();
// sdScoreLabel = new JLabel();
// sdTextField = new JTextField();
// pointsScoreLabel = new JLabel();
// pointsScoreTextField = new JTextField();
// maxIterScoreLabel = new JLabel();
// maxIterScoreTextField = new JTextField();
// toleranceScoreLabel = new JLabel();
// toleranceScoreTextField = new JTextField();
// variableNameScoreLabel = new JLabel();
// variableNameScoreTextField = new JTextField();
// optionsPanel = new JPanel();
// convergencePanel = new JPanel();
// toeranceLabel = new JLabel();
// toleranceTextField = new JTextField();
// maxIterationLabel = new JLabel();
// maxIterationTextField = new JTextField();
// missingDataPanel = new JPanel();
// ignoreRadioButton = new JRadioButton();
// scoreAsZeroRadioButton = new JRadioButton();
// optimizerPanel = new JPanel();
// uncminRadioButton = new JRadioButton();
// bfgsRadioButton = new JRadioButton();
// buttonPanel = new JPanel();
// okButton = new JButton();
// cancelButton = new JButton();
//
// setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//
// itemOptionPanel.setBorder(BorderFactory.createTitledBorder("Item Options"));
//
// selectItemsButton.setText("Select Items");
// selectItemsButton.setMaximumSize(new Dimension(125, 28));
// selectItemsButton.setMinimumSize(new Dimension(125, 28));
// selectItemsButton.setPreferredSize(new Dimension(125, 28));
// selectItemsButton.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// if (wizzard == null) wizzard = new ItemGroupWizzard(IrtItemCalibrationDialog.this, variableListModel);
// wizzard.setVisible(true);
// }
// });
//
// fixedValuesButton.setText("Fixed Values");
// fixedValuesButton.setEnabled(false);
// fixedValuesButton.setMaximumSize(new Dimension(125, 28));
// fixedValuesButton.setMinimumSize(new Dimension(125, 28));
// fixedValuesButton.setPreferredSize(new Dimension(125, 28));
//
// outputLabel.setText("Output table");
//
// outputTextField.setMaximumSize(new Dimension(160, 28));
// outputTextField.setMinimumSize(new Dimension(160, 28));
// outputTextField.setPreferredSize(new Dimension(160, 28));
//
// GroupLayout itemOptionPanelLayout = new GroupLayout(itemOptionPanel);
// itemOptionPanel.setLayout(itemOptionPanelLayout);
// itemOptionPanelLayout.setHorizontalGroup(
// itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemOptionPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemOptionPanelLayout.createSequentialGroup()
// .addComponent(selectItemsButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addGap(18, 18, 18)
// .addComponent(outputLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(outputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addComponent(fixedValuesButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// itemOptionPanelLayout.setVerticalGroup(
// itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemOptionPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(selectItemsButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addGroup(itemOptionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(outputLabel)
// .addComponent(outputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(fixedValuesButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// itemFitPanel.setBorder(BorderFactory.createTitledBorder("Item FIt"));
//
// mincountTextField.setText("1");
// mincountTextField.setMaximumSize(new Dimension(50, 28));
// mincountTextField.setMinimumSize(new Dimension(50, 28));
// mincountTextField.setPreferredSize(new Dimension(50, 28));
//
// countLabel.setText("Min expected count");
//
// fitPlotCheckBox.setText("Show fit plots");
// fitPlotCheckBox.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// if (fitPlotCheckBox.isSelected()) {
// showFitPlots = true;
// saveFitButton.setEnabled(true);
// saveFitPlotTextField.setEnabled(true);
// } else {
// showFitPlots = false;
// saveFitButton.setEnabled(false);
// saveFitPlotTextField.setEnabled(false);
// }
// }
// });
//
// jLabel1.setText("Save");
//
// saveFitButton.setText("Browse");
// saveFitButton.setMaximumSize(new Dimension(70, 28));
// saveFitButton.setMinimumSize(new Dimension(70, 28));
// saveFitButton.setPreferredSize(new Dimension(70, 28));
// saveFitButton.setEnabled(false);
// saveFitButton.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// JFileChooser fileChooser = new JFileChooser();
// fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
// fileChooser.setDialogTitle("Choose fit plot location");
// if (fileChooser.showOpenDialog(IrtItemCalibrationDialog.this) == JFileChooser.APPROVE_OPTION) {
// saveFitPlotTextField.setText(fileChooser.getSelectedFile().getAbsolutePath());
// }
// }
// });
//
// saveFitPlotTextField.setMaximumSize(new Dimension(225, 28));
// saveFitPlotTextField.setMinimumSize(new Dimension(225, 28));
// saveFitPlotTextField.setPreferredSize(new Dimension(225, 28));
// saveFitPlotTextField.setEnabled(false);
//
// GroupLayout itemFitPanelLayout = new GroupLayout(itemFitPanel);
// itemFitPanel.setLayout(itemFitPanelLayout);
// itemFitPanelLayout.setHorizontalGroup(
// itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemFitPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemFitPanelLayout.createSequentialGroup()
// .addComponent(countLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(mincountTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(itemFitPanelLayout.createSequentialGroup()
// .addComponent(fitPlotCheckBox)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(jLabel1)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(saveFitPlotTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(saveFitButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// itemFitPanelLayout.setVerticalGroup(
// itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemFitPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(mincountTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(countLabel))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addGroup(itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(fitPlotCheckBox)
// .addGroup(itemFitPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(jLabel1)
// .addComponent(saveFitButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(saveFitPlotTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// GroupLayout itemPanelLayout = new GroupLayout(itemPanel);
// itemPanel.setLayout(itemPanelLayout);
// itemPanelLayout.setHorizontalGroup(
// itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
// .addComponent(itemOptionPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addComponent(itemFitPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// itemPanelLayout.setVerticalGroup(
// itemPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(itemPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(itemOptionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(itemFitPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// tabbedPane.addTab("Item Calibration", itemPanel);
//
// latentDistributionPanel.setBorder(BorderFactory.createTitledBorder("Latent Distribution Options"));
//
// typeLabel.setText("Type");
//
// typeComboBox.setModel(new DefaultComboBoxModel(new String[]{"Normal", "Gauss-Hermite", "Estimate Nonparametric"}));
// typeComboBox.setMaximumSize(new Dimension(125, 28));
// typeComboBox.setMinimumSize(new Dimension(125, 28));
// typeComboBox.setPreferredSize(new Dimension(125, 28));
// typeComboBox.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// String s = (String) typeComboBox.getSelectedItem();
// if ("Gauss-Hermite".equals(s)) {
// pointTextField.setEnabled(true);
// minTextField.setEnabled(false);
// maxTextField.setEnabled(false);
// } else {
// pointTextField.setEnabled(true);
// minTextField.setEnabled(true);
// maxTextField.setEnabled(true);
// }
// }
// });
//
// pointsLabel.setText("Points");
//
// pointTextField.setText("40");
// pointTextField.setMaximumSize(new Dimension(50, 28));
// pointTextField.setMinimumSize(new Dimension(50, 28));
// pointTextField.setPreferredSize(new Dimension(50, 28));
//
// minLabel.setText("Min value");
//
// minTextField.setText("-4.0");
// minTextField.setMaximumSize(new Dimension(50, 28));
// minTextField.setMinimumSize(new Dimension(50, 28));
// minTextField.setPreferredSize(new Dimension(50, 28));
//
// maxLabel.setText("Max value");
//
// maxTextField.setText("4.0");
// maxTextField.setMaximumSize(new Dimension(50, 28));
// maxTextField.setMinimumSize(new Dimension(50, 28));
// maxTextField.setPreferredSize(new Dimension(50, 28));
//
// groupByLabel.setText("Group by");
//
// groupByTextField.setEnabled(false);
// groupByTextField.setMaximumSize(new Dimension(150, 28));
// groupByTextField.setMinimumSize(new Dimension(150, 28));
// groupByTextField.setPreferredSize(new Dimension(150, 28));
//
// selectGroupButton.setText("Select");
// selectGroupButton.setEnabled(false);
// selectGroupButton.setMaximumSize(new Dimension(75, 28));
// selectGroupButton.setMinimumSize(new Dimension(75, 28));
// selectGroupButton.setPreferredSize(new Dimension(75, 28));
//
// distributionOutputLabel.setText("Output table");
//
// distributionOutputTextField.setMaximumSize(new Dimension(150, 28));
// distributionOutputTextField.setMinimumSize(new Dimension(150, 28));
// distributionOutputTextField.setPreferredSize(new Dimension(150, 28));
//
// baseGroupLabel.setText("Base group");
//
// baseGroupTextField.setEnabled(false);
// baseGroupTextField.setMaximumSize(new Dimension(50, 28));
// baseGroupTextField.setMinimumSize(new Dimension(50, 28));
// baseGroupTextField.setPreferredSize(new Dimension(50, 28));
//
// GroupLayout latentDistributionPanelLayout = new GroupLayout(latentDistributionPanel);
// latentDistributionPanel.setLayout(latentDistributionPanelLayout);
// latentDistributionPanelLayout.setHorizontalGroup(
// latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(latentDistributionPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
// .addGroup(latentDistributionPanelLayout.createSequentialGroup()
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
// .addGroup(GroupLayout.Alignment.LEADING, latentDistributionPanelLayout.createSequentialGroup()
// .addGap(22, 22, 22)
// .addComponent(typeLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(typeComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// .addGroup(latentDistributionPanelLayout.createSequentialGroup()
// .addComponent(minLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(minTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(maxLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(maxTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(pointsLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(pointTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(GroupLayout.Alignment.LEADING, latentDistributionPanelLayout.createSequentialGroup()
// .addComponent(distributionOutputLabel)
// .addGap(90, 90, 90)))
// .addGroup(latentDistributionPanelLayout.createSequentialGroup()
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
// .addComponent(distributionOutputTextField, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)
// .addGroup(GroupLayout.Alignment.LEADING, latentDistributionPanelLayout.createSequentialGroup()
// .addComponent(groupByLabel)
// .addGap(21, 21, 21)
// .addComponent(groupByTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(selectGroupButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addGap(18, 18, 18)
// .addComponent(baseGroupLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(baseGroupTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addContainerGap(14, Short.MAX_VALUE))
// );
// latentDistributionPanelLayout.setVerticalGroup(
// latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(latentDistributionPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(typeLabel)
// .addComponent(typeComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGap(11, 11, 11)
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(pointsLabel)
// .addComponent(pointTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(maxLabel)
// .addComponent(maxTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(minLabel)
// .addComponent(minTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(groupByLabel)
// .addComponent(groupByTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(selectGroupButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(baseGroupLabel)
// .addComponent(baseGroupTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addGroup(latentDistributionPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(distributionOutputLabel)
// .addComponent(distributionOutputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// GroupLayout personPanelLayout = new GroupLayout(personPanel);
// personPanel.setLayout(personPanelLayout);
// personPanelLayout.setHorizontalGroup(
// personPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(latentDistributionPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addContainerGap())
// );
// personPanelLayout.setVerticalGroup(
// personPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(latentDistributionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addContainerGap(51, Short.MAX_VALUE))
// );
//
// tabbedPane.addTab("Latent Distribution", personPanel);
//
// personScorePanel.setBorder(BorderFactory.createTitledBorder("Person Scoring Options"));
//
// scoreTypeLabel.setText("Score type");
//
// scoringcomboBox.setModel(new DefaultComboBoxModel(new String[]{"EAP", "MAP", "MLE"}));
// scoringcomboBox.setMaximumSize(new Dimension(65, 28));
// scoringcomboBox.setMinimumSize(new Dimension(65, 28));
// scoringcomboBox.setPreferredSize(new Dimension(65, 28));
// scoringcomboBox.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// String s = (String) scoringcomboBox.getSelectedItem();
// if ("MLE".equals(s)) {
// meanTextField.setEnabled(false);
// sdTextField.setEnabled(false);
// toleranceScoreTextField.setEnabled(true);
// maxIterScoreTextField.setEnabled(true);
// } else if ("MAP".equals(s)) {
// meanTextField.setEnabled(true);
// sdTextField.setEnabled(true);
// toleranceScoreTextField.setEnabled(true);
// maxIterScoreTextField.setEnabled(true);
// } else {
// meanTextField.setEnabled(true);
// sdTextField.setEnabled(true);
// toleranceScoreTextField.setEnabled(false);
// maxIterScoreTextField.setEnabled(false);
// }
// }
// });
//
// minScoreLabel.setText("Min");
//
// minScoreTextField.setText("-6.0");
// minScoreTextField.setMaximumSize(new Dimension(50, 28));
// minScoreTextField.setMinimumSize(new Dimension(50, 28));
// minScoreTextField.setPreferredSize(new Dimension(50, 28));
//
// maxScoreLabel.setText("Max");
//
// maxScoreTextField.setText("6.0");
// maxScoreTextField.setMaximumSize(new Dimension(50, 28));
// maxScoreTextField.setMinimumSize(new Dimension(50, 28));
// maxScoreTextField.setPreferredSize(new Dimension(50, 28));
//
// residualLabel.setText("Residual table");
//
// residualTextField.setMaximumSize(new Dimension(155, 28));
// residualTextField.setMinimumSize(new Dimension(155, 28));
// residualTextField.setPreferredSize(new Dimension(155, 28));
// residualTextField.setEnabled(false);
//
// meanScoreLabel.setText("Mean");
//
// meanTextField.setText("0");
// meanTextField.setMaximumSize(new Dimension(50, 28));
// meanTextField.setMinimumSize(new Dimension(50, 28));
// meanTextField.setPreferredSize(new Dimension(50, 28));
//
// sdScoreLabel.setText("SD");
//
// sdTextField.setText("1");
// sdTextField.setMaximumSize(new Dimension(50, 28));
// sdTextField.setMinimumSize(new Dimension(50, 28));
// sdTextField.setPreferredSize(new Dimension(50, 28));
//
// pointsScoreLabel.setText("Points");
//
// pointsScoreTextField.setText("60");
// pointsScoreTextField.setMaximumSize(new Dimension(50, 28));
// pointsScoreTextField.setMinimumSize(new Dimension(50, 28));
// pointsScoreTextField.setPreferredSize(new Dimension(50, 28));
//
// maxIterScoreLabel.setText("Max iterations");
//
// maxIterScoreTextField.setText("100");
// maxIterScoreTextField.setEnabled(false);
// maxIterScoreTextField.setMaximumSize(new Dimension(60, 28));
// maxIterScoreTextField.setMinimumSize(new Dimension(60, 28));
// maxIterScoreTextField.setPreferredSize(new Dimension(60, 28));
//
// toleranceScoreLabel.setText("Tolerance");
//
// toleranceScoreTextField.setText("0.00005");
// toleranceScoreTextField.setEnabled(false);
// toleranceScoreTextField.setMaximumSize(new Dimension(60, 28));
// toleranceScoreTextField.setMinimumSize(new Dimension(60, 28));
// toleranceScoreTextField.setPreferredSize(new Dimension(60, 28));
//
// variableNameScoreLabel.setText("Variable name");
//
// variableNameScoreTextField.setMaximumSize(new Dimension(155, 28));
// variableNameScoreTextField.setMinimumSize(new Dimension(155, 28));
// variableNameScoreTextField.setPreferredSize(new Dimension(155, 28));
// variableNameScoreTextField.getDocument().addDocumentListener(new DocumentListener() {
// @Override
// public void insertUpdate(DocumentEvent e) {
// if(variableNameScoreTextField.getText().trim().length()>0){
// residualTextField.setEnabled(true);
// }else{
// residualTextField.setEnabled(false);
// }
// }
//
// @Override
// public void removeUpdate(DocumentEvent e) {
// if(variableNameScoreTextField.getText().trim().length()>0){
// residualTextField.setEnabled(true);
// }else{
// residualTextField.setEnabled(false);
// }
// }
//
// @Override
// public void changedUpdate(DocumentEvent e) {
// if(variableNameScoreTextField.getText().trim().length()>0){
// residualTextField.setEnabled(true);
// }else{
// residualTextField.setEnabled(false);
// }
// }
// });
//
// GroupLayout personScorePanelLayout = new GroupLayout(personScorePanel);
// personScorePanel.setLayout(personScorePanelLayout);
// personScorePanelLayout.setHorizontalGroup(
// personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personScorePanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personScorePanelLayout.createSequentialGroup()
// .addComponent(residualLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(residualTextField, GroupLayout.PREFERRED_SIZE, 185, GroupLayout.PREFERRED_SIZE))
// .addGroup(personScorePanelLayout.createSequentialGroup()
// .addComponent(variableNameScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(variableNameScoreTextField, GroupLayout.PREFERRED_SIZE, 186, GroupLayout.PREFERRED_SIZE))
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
// .addGroup(GroupLayout.Alignment.LEADING, personScorePanelLayout.createSequentialGroup()
// .addGap(25, 25, 25)
// .addComponent(scoreTypeLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(scoringcomboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addComponent(maxIterScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(maxIterScoreTextField, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(toleranceScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(toleranceScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(GroupLayout.Alignment.LEADING, personScorePanelLayout.createSequentialGroup()
// .addComponent(meanScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(meanTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(sdScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(sdTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(minScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(minScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(maxScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(maxScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(pointsScoreLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(pointsScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))))
// .addContainerGap(22, Short.MAX_VALUE))
// );
// personScorePanelLayout.setVerticalGroup(
// personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personScorePanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(variableNameScoreLabel)
// .addComponent(variableNameScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(scoreTypeLabel)
// .addComponent(scoringcomboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(maxIterScoreLabel)
// .addComponent(maxIterScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(toleranceScoreLabel)
// .addComponent(toleranceScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(meanScoreLabel)
// .addComponent(meanTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(sdScoreLabel)
// .addComponent(sdTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(minScoreLabel)
// .addComponent(minScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(maxScoreLabel)
// .addComponent(maxScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addComponent(pointsScoreLabel)
// .addComponent(pointsScoreTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGap(18, 18, 18)
// .addGroup(personScorePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(residualLabel)
// .addComponent(residualTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// GroupLayout personScoringTabLayout = new GroupLayout(personScoringTab);
// personScoringTab.setLayout(personScoringTabLayout);
// personScoringTabLayout.setHorizontalGroup(
// personScoringTabLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personScoringTabLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(personScorePanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addContainerGap())
// );
// personScoringTabLayout.setVerticalGroup(
// personScoringTabLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(personScoringTabLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(personScorePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addContainerGap(44, Short.MAX_VALUE))
// );
//
// tabbedPane.addTab("Person Scoring", personScoringTab);
//
// convergencePanel.setBorder(BorderFactory.createTitledBorder("Convergence Criteria"));
//
// toeranceLabel.setText("Tolerance");
//
// toleranceTextField.setText("0.001");
// toleranceTextField.setMaximumSize(new Dimension(75, 28));
// toleranceTextField.setMinimumSize(new Dimension(75, 28));
// toleranceTextField.setPreferredSize(new Dimension(75, 28));
//
// maxIterationLabel.setText("Max iterations");
//
// maxIterationTextField.setText("250");
// maxIterationTextField.setMaximumSize(new Dimension(75, 28));
// maxIterationTextField.setMinimumSize(new Dimension(75, 28));
// maxIterationTextField.setPreferredSize(new Dimension(75, 28));
//
// GroupLayout convergencePanelLayout = new GroupLayout(convergencePanel);
// convergencePanel.setLayout(convergencePanelLayout);
// convergencePanelLayout.setHorizontalGroup(
// convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(convergencePanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
// .addGroup(convergencePanelLayout.createSequentialGroup()
// .addComponent(toeranceLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(toleranceTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addGroup(convergencePanelLayout.createSequentialGroup()
// .addComponent(maxIterationLabel)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(maxIterationTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// convergencePanelLayout.setVerticalGroup(
// convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(convergencePanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(toeranceLabel)
// .addComponent(toleranceTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addGroup(convergencePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
// .addComponent(maxIterationLabel)
// .addComponent(maxIterationTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// missingDataPanel.setBorder(BorderFactory.createTitledBorder("Missing Data"));
//
// missingDataButtonGroup.add(ignoreRadioButton);
// ignoreRadioButton.setSelected(true);
// ignoreRadioButton.setText("Ignore");
// ignoreRadioButton.setActionCommand("ignore");
//
// missingDataButtonGroup.add(scoreAsZeroRadioButton);
// scoreAsZeroRadioButton.setText("Score as zero");
// scoreAsZeroRadioButton.setActionCommand("zero");
//
// GroupLayout missingDataPanelLayout = new GroupLayout(missingDataPanel);
// missingDataPanel.setLayout(missingDataPanelLayout);
// missingDataPanelLayout.setHorizontalGroup(
// missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(missingDataPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addComponent(ignoreRadioButton)
// .addComponent(scoreAsZeroRadioButton))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// missingDataPanelLayout.setVerticalGroup(
// missingDataPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(missingDataPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(ignoreRadioButton)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(scoreAsZeroRadioButton)
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// optimizerPanel.setBorder(BorderFactory.createTitledBorder("Optimizer"));
//
// optimizerButtonGroup.add(uncminRadioButton);
// uncminRadioButton.setSelected(true);
// uncminRadioButton.setText("UNCMIN");
// uncminRadioButton.setActionCommand("uncmin");
//
// optimizerButtonGroup.add(bfgsRadioButton);
// bfgsRadioButton.setText("BFGS");
// bfgsRadioButton.setActionCommand("bfgs");
//
// GroupLayout optimizerPanelLayout = new GroupLayout(optimizerPanel);
// optimizerPanel.setLayout(optimizerPanelLayout);
// optimizerPanelLayout.setHorizontalGroup(
// optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(optimizerPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addComponent(uncminRadioButton)
// .addComponent(bfgsRadioButton))
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
// optimizerPanelLayout.setVerticalGroup(
// optimizerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(optimizerPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(uncminRadioButton)
// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
// .addComponent(bfgsRadioButton)
// .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
// );
//
// GroupLayout optionsPanelLayout = new GroupLayout(optionsPanel);
// optionsPanel.setLayout(optionsPanelLayout);
// optionsPanelLayout.setHorizontalGroup(
// optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(optionsPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addComponent(convergencePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(missingDataPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(optimizerPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addContainerGap(73, Short.MAX_VALUE))
// );
// optionsPanelLayout.setVerticalGroup(
// optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(optionsPanelLayout.createSequentialGroup()
// .addContainerGap()
// .addGroup(optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
// .addComponent(optimizerPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addGroup(optionsPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
// .addComponent(missingDataPanel, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addComponent(convergencePanel, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
// .addContainerGap(134, Short.MAX_VALUE))
// );
//
// tabbedPane.addTab("Options", optionsPanel);
//
// buttonPanel.setMinimumSize(new Dimension(471, 40));
// buttonPanel.setPreferredSize(new Dimension(471, 40));
// buttonPanel.setLayout(new GridBagLayout());
//
// okButton.setText("OK");
// okButton.setMaximumSize(new Dimension(72, 28));
// okButton.setMinimumSize(new Dimension(72, 28));
// okButton.setPreferredSize(new Dimension(72, 28));
// okButton.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// setCommand();
//// System.out.println(command.paste());
// setVisible(false);
// }
// });
//
// gridBagConstraints = new GridBagConstraints();
// gridBagConstraints.gridx = 0;
// gridBagConstraints.gridy = 0;
// gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
// gridBagConstraints.weightx = 0.5;
// gridBagConstraints.insets = new Insets(11, 192, 11, 0);
// buttonPanel.add(okButton, gridBagConstraints);
//
// cancelButton.setText("Cancel");
// cancelButton.setMaximumSize(new Dimension(72, 28));
// cancelButton.setMinimumSize(new Dimension(72, 28));
// cancelButton.setPreferredSize(new Dimension(72, 28));
// cancelButton.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// canRun = false;
// setVisible(false);
// }
// });
//
// gridBagConstraints = new GridBagConstraints();
// gridBagConstraints.gridx = 1;
// gridBagConstraints.gridy = 0;
// gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
// gridBagConstraints.insets = new Insets(11, 6, 11, 134);
// buttonPanel.add(cancelButton, gridBagConstraints);
//
// GroupLayout layout = new GroupLayout(getContentPane());
// getContentPane().setLayout(layout);
// layout.setHorizontalGroup(
// layout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(layout.createSequentialGroup()
// .addContainerGap()
// .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addComponent(tabbedPane)
// .addGroup(layout.createSequentialGroup()
// .addComponent(buttonPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
// .addGap(0, 0, Short.MAX_VALUE)))
// .addContainerGap())
// );
// layout.setVerticalGroup(
// layout.createParallelGroup(GroupLayout.Alignment.LEADING)
// .addGroup(layout.createSequentialGroup()
// .addContainerGap()
// .addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, 280, GroupLayout.PREFERRED_SIZE)
// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
// .addComponent(buttonPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
// .addContainerGap())
// );
//
// pack();
// }
public boolean canRun(){
return canRun;
}
private void setCommand(){
command = new IrtItemCalibrationCommand();
wizzard.updateCommand(command);
MegaOption option = null;
//Data information
option = command.getOption("data");
option.addValueAt("db", dbName.toString());
option.addValueAt("table", tableName.toString());
//Convergence information
option = command.getOption("converge");
double tol = 0.001;
try{
tol = Double.parseDouble(toleranceTextField.getText().trim());
}catch(NumberFormatException ex){
tol = 0.001;
}
option.addValueAt("tol", Double.valueOf(tol).toString());
int maxIter = 250;
try{
maxIter = Integer.parseInt(maxIterationTextField.getText().trim());
}catch(NumberFormatException ex){
maxIter = 250;
}
option.addValueAt("maxiter", Integer.valueOf(maxIter).toString());
//Optimizer
option = command.getOption("optim");
option.addValue(optimizerButtonGroup.getSelection().getActionCommand());
//Missing data
option = command.getOption("missing");
option.addValue(missingDataButtonGroup.getSelection().getActionCommand());
//Item fit
option = command.getOption("itemfit");
String t = mincountTextField.getText().trim();
if("".equals(t)) {
option.addValueAt("mincell", "1");
}else{
option.addValueAt("mincell", t);
}
//Save output
int outputCount = 0;
DataTableName distribution = null;
String temp = distributionOutputTextField.getText().trim();
if(!"".equals(temp)){
distribution = new DataTableName(temp);
outputCount++;
}
DataTableName itemOutput = null;
temp = outputTextField.getText().trim();
if(!"".equals(temp)){
itemOutput = new DataTableName(temp);
outputCount++;
}
DataTableName residualOutput = null;
temp = residualTextField.getText().trim();
if(!"".equals(temp)){
residualOutput = new DataTableName(temp);
outputCount++;
}
if(outputCount>0){
option = command.getOption("output");
option.addValueAt("db", dbName.toString());
if(itemOutput!=null) option.addValueAt("item", itemOutput.toString());
if(distribution!=null) option.addValueAt("latent", distribution.toString());
if(residualOutput!=null) option.addValueAt("residual", residualOutput.toString());
}
//Latent distribution
option = command.getOption("latent");
option.addValueAt("name", latentDistributionCode[typeComboBox.getSelectedIndex()]);
double min = -4.0;
try{
min = Double.parseDouble(minTextField.getText().trim());
}catch(NumberFormatException ex){
min = -4.0;
}
option.addValueAt("min", Double.valueOf(min).toString());
double max = 4.0;
try{
max = Double.parseDouble(maxTextField.getText().trim());
}catch(NumberFormatException ex){
max = 4.0;
}
option.addValueAt("max", Double.valueOf(max).toString());
int points = 40;
try{
points = Integer.parseInt(pointTextField.getText().trim());
}catch(NumberFormatException ex){
points = 40;
}
option.addValueAt("points", Integer.valueOf(points).toString());
//Number of item groups
option = command.getOption("groups");
option.addValue(Integer.valueOf(wizzard.getNumberOfGroups()).toString());
//Person scoring
temp = variableNameScoreTextField.getText().trim();
String scoreType = "";
if(!"".equals(temp)){
option = command.getOption("scoring");
option.addValueAt("name", temp);
scoreType = (String)scoringcomboBox.getSelectedItem();
option.addValueAt("type", scoreType);
if("MLE".equals(scoreType)){
option.addValueAt("min", minScoreTextField.getText().trim());
option.addValueAt("max", maxScoreTextField.getText().trim());
option.addValueAt("tol", toleranceScoreTextField.getText().trim());
option.addValueAt("maxiter", maxIterScoreTextField.getText().trim());
}else if("MAP".equals(scoreType)){
option.addValueAt("mean", meanTextField.getText().trim());
option.addValueAt("sd", sdTextField.getText().trim());
option.addValueAt("min", minScoreTextField.getText().trim());
option.addValueAt("max", maxScoreTextField.getText().trim());
option.addValueAt("tol", toleranceScoreTextField.getText().trim());
option.addValueAt("maxiter", maxIterScoreTextField.getText().trim());
}else{
//MAP
option.addValueAt("mean", meanTextField.getText().trim());
option.addValueAt("sd", sdTextField.getText().trim());
option.addValueAt("min", minScoreTextField.getText().trim());
option.addValueAt("max", maxScoreTextField.getText().trim());
option.addValueAt("points", pointsScoreTextField.getText().trim());
}
}
//For debugging
// System.out.println(command.paste());
//Fixed values
//TODO add fixed values from database informaiton
canRun = true;//TODO check for required arguments
}
public Command getCommand(){
return command;
}
public VariableChangeListener getVariableChangedListener(){
return new VariableChangeListener() {
@Override
public void variableChanged(VariableChangeEvent evt) {
//TODO modify itemList
}
};
}
}