use of javax.swing.Box in project knime-core by knime.
the class ShortLinesPanel method getPanel.
private Container getPanel() {
m_allowShortLines = new JCheckBox("allow short lines");
Box result = Box.createHorizontalBox();
result.add(Box.createHorizontalGlue());
result.add(m_allowShortLines);
result.add(Box.createHorizontalStrut(5));
result.add(Box.createHorizontalGlue());
return result;
}
use of javax.swing.Box in project knime-core by knime.
the class FixedWidthFRNodeDialog method createFileNamePanel.
private JPanel createFileNamePanel() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Enter ASCII data file location: (press 'Enter' to update preview)"));
FlowVariableModel flowVarBrowseModel = createFlowVariableModel(FixedWidthFRSettings.CFGKEY_URL, Type.STRING);
m_url = new FilesHistoryPanel(flowVarBrowseModel, FILEREADER_HISTORY_ID, LocationValidation.FileInput, new String[] { ".txt", ".csv" });
m_url.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(final ChangeEvent e) {
if (!m_loadSettings) {
try {
URL newUrl = FileUtil.toURL(m_url.getSelectedFile());
m_nodeSettings.setFileLocation(newUrl);
} catch (IOException | InvalidPathException ioe) {
m_nodeSettings.setFileLocation(null);
}
if (!m_preserveSettings.isSelected() && !m_url.isVariableReplacementEnabled()) {
m_nodeSettings.reset();
}
m_hasColHeaders.setSelected(m_nodeSettings.getHasColHeaders());
m_hasRowHeaders.setSelected(m_nodeSettings.getHasRowHeader());
updateColPropTable();
updatePreview();
updateEnables();
}
}
});
// the checkbox for preserving the current settings on file change
Box preserveBox = Box.createHorizontalBox();
m_preserveSettings = new JCheckBox("Preserve user settings for new location");
m_preserveSettings.setToolTipText("if not checked, the settings you" + " have set are reset, if a new location is entered");
m_preserveSettings.setSelected(false);
m_preserveSettings.setEnabled(true);
preserveBox.add(Box.createHorizontalGlue());
preserveBox.add(m_preserveSettings);
preserveBox.add(Box.createHorizontalGlue());
panel.add(m_url);
panel.add(preserveBox);
panel.setMaximumSize(new Dimension(PANEL_WIDTH, 70));
panel.setMinimumSize(new Dimension(PANEL_WIDTH, 70));
return panel;
}
use of javax.swing.Box in project knime-core by knime.
the class FixedWidthFRNodeDialog method createPreviewPanel.
/**
* @return jpanel with all the preview components
*/
private JPanel createPreviewPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Preview"));
Box tableBox = Box.createHorizontalBox();
PreviewTableContentView ptcv = new PreviewTableContentView();
m_previewTableView = new TableView(ptcv);
tableBox.add(m_previewTableView);
panel.add(Box.createGlue());
panel.add(tableBox);
ptcv.addPropertyChangeListener(PreviewTableContentView.PROPERTY_SPEC_CHANGED, new PropertyChangeListener() {
@Override
public void propertyChange(final PropertyChangeEvent evt) {
m_colIdx = (int) evt.getNewValue();
m_colIdx = m_nodeSettings.getColIdxIncluded(m_colIdx);
if (m_colIdx < m_nodeSettings.getNumberOfColumns() - 1) {
// don't open edit dialog if clicked column equals
// remaining characters column
onEdit(m_colIdx);
}
}
});
return panel;
}
use of javax.swing.Box in project knime-core by knime.
the class DomainDialog method createValuesPanel.
/*
* create a panel to enter possible values. Depending on the stringValues
* parameter it will create one to enter integers or strings. The integer
* panel will also have an additional checkbox to decide whether the integer
* column has nominal values at all.
*
* @param stringValues the flag indicating that the panel should be for
* entering possible values of type string. Otherwise (if set false) it will
* allow only integer values to be entered.
*/
private JPanel createValuesPanel(final boolean stringValues) {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "poss. Values"));
if (!stringValues) {
// the checkbox to tell if this columns contains nominal values
m_containsVals = new JCheckBox("this integer column contains nominal values");
m_containsVals.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
containsValsChanged();
}
});
Box checkBox = Box.createHorizontalBox();
checkBox.add(m_containsVals);
checkBox.add(Box.createHorizontalGlue());
panel.add(checkBox);
panel.add(Box.createVerticalStrut(3));
}
// the box to manually add/remove possible values
m_editField = new JTextField(10);
m_editField.setMaximumSize(new Dimension(100, 25));
m_editField.setMinimumSize(new Dimension(100, 25));
m_editField.setPreferredSize(new Dimension(100, 25));
m_valueList = new JList<>();
m_valueList.setMinimumSize(new Dimension(100, 150));
m_valueList.setMaximumSize(new Dimension(100, 150));
m_valueList.setPreferredSize(new Dimension(100, 150));
m_errorLabel = new JLabel("");
m_addButton = new JButton("Add");
if (stringValues) {
m_addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
addStringPosValue();
}
});
} else {
m_addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
addIntPosValue();
}
});
}
m_remButton = new JButton("Remove");
m_remButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
remSelPosValues();
}
});
Box buttonBox = Box.createVerticalBox();
buttonBox.add(m_addButton);
buttonBox.add(Box.createVerticalStrut(3));
buttonBox.add(m_remButton);
buttonBox.add(Box.createVerticalGlue());
Box fieldBox = Box.createVerticalBox();
fieldBox.add(m_editField);
fieldBox.add(Box.createVerticalGlue());
Box editBox = Box.createHorizontalBox();
editBox.add(fieldBox);
editBox.add(Box.createHorizontalStrut(3));
editBox.add(buttonBox);
// now this contains the textfield and the buttons arranged nicely
// a box for the error label to ensure a certain height - even if empty
Box errBox = Box.createHorizontalBox();
errBox.add(Box.createVerticalStrut(25));
errBox.add(m_errorLabel);
errBox.add(Box.createHorizontalGlue());
Box leftBox = Box.createVerticalBox();
leftBox.add(editBox);
leftBox.add(Box.createVerticalStrut(6));
leftBox.add(errBox);
leftBox.add(Box.createVerticalGlue());
Box rightBox = Box.createHorizontalBox();
rightBox.add(new JScrollPane(m_valueList));
rightBox.add(Box.createVerticalStrut(150));
// the over all nominal values boss box
Box valsEditBox = Box.createHorizontalBox();
valsEditBox.add(leftBox);
valsEditBox.add(Box.createHorizontalStrut(3));
valsEditBox.add(rightBox);
valsEditBox.add(Box.createHorizontalGlue());
panel.add(valsEditBox);
return panel;
}
use of javax.swing.Box in project knime-core by knime.
the class FileReaderNodeDialog method createSettingsPanel.
private JPanel createSettingsPanel() {
JButton advanced = new JButton("Advanced...");
int buttonHeight = advanced.getPreferredSize().height;
m_hasRowHeaders = new JCheckBox("read row IDs");
m_hasRowHeaders.setToolTipText("Check if the file contains row IDs" + " in the first column");
m_hasColHeaders = new JCheckBox("read column headers");
m_hasColHeaders.setToolTipText("Check if the file contains column" + " headers in the first line");
JLabel deliLabel = new JLabel("Column delimiter:");
m_delimField = new JComboBox();
m_delimField.setMaximumSize(new Dimension(70, buttonHeight));
m_delimField.setMinimumSize(new Dimension(70, buttonHeight));
m_delimField.setPreferredSize(new Dimension(70, buttonHeight));
m_delimField.setEditable(true);
Delimiter[] selDelims = DEFAULT_DELIMS;
m_delimField.setModel(new DefaultComboBoxModel(selDelims));
deliLabel.setToolTipText("Specify the data delimiter character(s)");
m_delimField.setToolTipText("Specify the data delimiter character(s)");
m_cStyleComment = new JCheckBox("Java-style comments");
m_cStyleComment.setToolTipText("Check to add support for '//' and " + "\"'/*' and '*/'\" comment");
m_singleLineComment = new JTextField(2);
m_singleLineComment.setMaximumSize(new Dimension(55, buttonHeight));
m_singleLineComment.setMinimumSize(new Dimension(55, buttonHeight));
m_singleLineComment.setPreferredSize(new Dimension(55, buttonHeight));
JLabel commentLabel = new JLabel("Single line comment:");
m_ignoreWS = new JCheckBox("ignore spaces and tabs");
m_ignoreWS.setToolTipText("If checked, whitespaces (spaces and tabs)" + " will be discarded (if not quoted)");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 3));
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Basic Settings"));
// top row
Box rowBox = Box.createHorizontalBox();
rowBox.add(m_hasRowHeaders);
rowBox.add(Box.createGlue());
Box delimBox = Box.createHorizontalBox();
delimBox.add(Box.createHorizontalStrut(4));
delimBox.add(deliLabel);
delimBox.add(Box.createHorizontalStrut(3));
delimBox.add(m_delimField);
delimBox.add(Box.createGlue());
Box advBox = Box.createHorizontalBox();
advBox.add(Box.createGlue());
advBox.add(advanced);
advBox.add(Box.createGlue());
// middle row
Box colBox = Box.createHorizontalBox();
colBox.add(m_hasColHeaders);
colBox.add(Box.createGlue());
Box wsBox = Box.createHorizontalBox();
wsBox.add(m_ignoreWS);
wsBox.add(Box.createGlue());
// bottom row
Box pValBox = Box.createHorizontalBox();
// placeholder
pValBox.add(new JLabel(""));
pValBox.add(Box.createGlue());
Box cCmtBox = Box.createHorizontalBox();
cCmtBox.add(m_cStyleComment);
cCmtBox.add(Box.createGlue());
Box slcBox = Box.createHorizontalBox();
slcBox.add(commentLabel);
slcBox.add(Box.createHorizontalStrut(3));
slcBox.add(m_singleLineComment);
slcBox.add(Box.createGlue());
// now fill the grid: first row
panel.add(rowBox);
panel.add(delimBox);
panel.add(advBox);
// second row
panel.add(colBox);
panel.add(wsBox);
panel.add(new JLabel(""));
// third row
panel.add(pValBox);
panel.add(cCmtBox);
panel.add(slcBox);
int componentsHeight = (2 * COMP_HEIGHT) + 30 + buttonHeight;
panel.setMaximumSize(new Dimension(PANEL_WIDTH, componentsHeight));
advanced.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
advancedSettings();
}
});
m_hasRowHeaders.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
rowHeadersSettingsChanged();
}
});
m_hasColHeaders.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
colHeadersSettingsChanged();
}
});
m_cStyleComment.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
commentSettingsChanged();
}
});
m_delimField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
delimSettingsChanged();
}
});
m_ignoreWS.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(final ItemEvent e) {
ignoreWSChanged();
}
});
m_singleLineComment.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(final DocumentEvent e) {
commentSettingsChanged();
}
@Override
public void insertUpdate(final DocumentEvent e) {
commentSettingsChanged();
}
@Override
public void removeUpdate(final DocumentEvent e) {
commentSettingsChanged();
}
});
// add a panel for the errors:
m_errorLabel = new JLabel("");
m_errorLabel.setForeground(Color.red);
m_errorDetail = new JLabel("");
m_errorDetail.setForeground(Color.red);
JPanel errorBox = new JPanel();
errorBox.setLayout(new BoxLayout(errorBox, BoxLayout.X_AXIS));
errorBox.add(Box.createHorizontalGlue());
errorBox.add(m_errorLabel);
// reserve a certain height for the (in the beginning invisible) label
errorBox.add(Box.createVerticalStrut(17));
errorBox.add(Box.createHorizontalGlue());
JPanel detailBox = new JPanel();
detailBox.setLayout(new BoxLayout(detailBox, BoxLayout.X_AXIS));
detailBox.add(Box.createHorizontalGlue());
detailBox.add(m_errorDetail);
// reserve a certain height for the (in the beginning invisible) label
detailBox.add(Box.createVerticalStrut(17));
detailBox.add(Box.createHorizontalGlue());
JPanel result = new JPanel();
result.setLayout(new BoxLayout(result, BoxLayout.Y_AXIS));
result.add(panel);
result.add(errorBox);
result.add(detailBox);
return result;
}
Aggregations