use of javax.swing.JSpinner.NumberEditor in project knime-core by knime.
the class DBSorterNodeDialogPanel method update.
/**
* Updates this panel based on the DataTableSpec, the list of columns to include and the corresponding sorting
* order.
*
* @param spec the DataTableSpec
* @param incl the list to include
* @param sortOrder the sorting order
* @param nrsortitems the inital number of sortitems to be shown
*/
void update(final DataTableSpec spec, final List<String> incl, final boolean[] sortOrder, final int nrsortitems) {
m_spec = spec;
super.removeAll();
m_components.removeAllElements();
int interncounter = 0;
if (spec != null) {
Vector<DataColumnSpec> values = new Vector<DataColumnSpec>();
values.add(NOSORT);
for (int j = 0; j < spec.getNumColumns(); j++) {
values.add(spec.getColumnSpec(j));
}
if ((incl == null) || (sortOrder == null)) {
for (int i = 0; i < nrsortitems && i < spec.getNumColumns(); i++) {
DataColumnSpec selected = (i == 0) ? values.get(i + 1) : values.get(0);
DBSortItem temp = new DBSortItem(i, values, selected, true);
super.add(temp);
m_components.add(temp);
}
} else {
for (int i = 0; i < incl.size(); i++) {
String includeString = incl.get(i);
int columnIndex = spec.findColumnIndex(includeString);
if (columnIndex != -1) {
DataColumnSpec colspec = spec.getColumnSpec(columnIndex);
DBSortItem temp = new DBSortItem(interncounter, values, colspec, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
} else if (includeString.equals(NOSORT.getName())) {
DBSortItem temp = new DBSortItem(interncounter, values, NOSORT, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
} else if (columnIndex == -1) {
DBSortItem temp = new DBSortItem(interncounter, values, includeString, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
}
}
}
Box buttonbox = Box.createHorizontalBox();
Border addColumnBorder = BorderFactory.createTitledBorder("Add columns");
buttonbox.setBorder(addColumnBorder);
int maxCols = m_spec.getNumColumns() - m_components.size();
JButton addSortItemButton = new JButton("new columns");
final JSpinner spinner = new JSpinner();
SpinnerNumberModel snm;
if (maxCols == 0) {
snm = new SpinnerNumberModel(0, 0, maxCols, 1);
spinner.setEnabled(false);
addSortItemButton.setEnabled(false);
} else {
snm = new SpinnerNumberModel(1, 1, maxCols, 1);
}
spinner.setModel(snm);
spinner.setMaximumSize(new Dimension(50, 25));
spinner.setPreferredSize(new Dimension(50, 25));
NumberEditor ne = (NumberEditor) spinner.getEditor();
final JFormattedTextField spinnertextfield = ne.getTextField();
// workaround to ensure same background color
Color backColor = spinnertextfield.getBackground();
// when spinner's text field is editable false
spinnertextfield.setEditable(false);
spinnertextfield.setBackground(backColor);
addSortItemButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent ae) {
ArrayList<String> newlist = new ArrayList<String>();
for (int i = 0; i < m_components.size(); i++) {
DBSortItem temp = m_components.get(i);
newlist.add(temp.getColumnText());
}
int oldsize = m_components.size();
String temp = spinner.getValue().toString();
int newsize = Integer.parseInt(temp);
for (int n = oldsize; n < oldsize + newsize; n++) {
newlist.add(NOSORT.getName());
}
boolean[] oldbool = new boolean[oldsize];
boolean[] newbool = new boolean[oldsize + newsize];
// copy old values
for (int i = 0; i < m_components.size(); i++) {
DBSortItem temp2 = m_components.get(i);
newbool[i] = temp2.getSortOrder();
}
// create new values
for (int i = oldbool.length; i < newbool.length; i++) {
newbool[i] = true;
}
update(m_spec, newlist, newbool, (oldsize + newsize));
}
});
buttonbox.add(spinner);
buttonbox.add(Box.createHorizontalStrut(10));
buttonbox.add(addSortItemButton);
super.add(buttonbox);
revalidate();
}
}
use of javax.swing.JSpinner.NumberEditor in project knime-core by knime.
the class SorterNodeDialogPanel2 method update.
/**
* Updates this panel based on the DataTableSpec, the list of columns to
* include and the corresponding sorting order.
*
* @param spec the DataTableSpec
* @param incl the list to include
* @param sortOrder the sorting order
* @param nrsortitems the inital number of sortitems to be shown
* @param sortInMemory whether to perform the sorting in memory or not
* @param missingToEnd Whether to move missings to the end
*/
void update(final DataTableSpec spec, final List<String> incl, final boolean[] sortOrder, final int nrsortitems, final boolean sortInMemory, final boolean missingToEnd) {
m_spec = spec;
m_memory = sortInMemory;
super.removeAll();
m_components.removeAllElements();
int interncounter = 0;
if (spec != null) {
Vector<DataColumnSpec> values = new Vector<DataColumnSpec>();
values.add(NOSORT);
values.add(ROWKEY);
for (int j = 0; j < spec.getNumColumns(); j++) {
values.add(spec.getColumnSpec(j));
}
if ((incl == null) || (sortOrder == null)) {
for (int i = 0; i < nrsortitems && i < spec.getNumColumns(); i++) {
DataColumnSpec selected = (i == 0) ? values.get(i + 1) : values.get(0);
SortItem temp = new SortItem(i, values, selected, true);
super.add(temp);
m_components.add(temp);
}
} else {
for (int i = 0; i < incl.size(); i++) {
String includeString = incl.get(i);
int columnIndex = spec.findColumnIndex(includeString);
if (columnIndex != -1) {
DataColumnSpec colspec = spec.getColumnSpec(columnIndex);
SortItem temp = new SortItem(interncounter, values, colspec, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
} else if (includeString.equals(NOSORT.getName())) {
SortItem temp = new SortItem(interncounter, values, NOSORT, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
} else if (includeString.equals(ROWKEY.getName())) {
SortItem temp = new SortItem(interncounter, values, ROWKEY, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
} else if (columnIndex == -1) {
SortItem temp = new SortItem(interncounter, values, includeString, sortOrder[interncounter]);
super.add(temp);
m_components.add(temp);
interncounter++;
}
}
}
Box buttonbox = Box.createHorizontalBox();
Border addColumnBorder = BorderFactory.createTitledBorder("Add columns");
buttonbox.setBorder(addColumnBorder);
int maxCols = m_spec.getNumColumns() - m_components.size() + 1;
JButton addSortItemButton = new JButton("new columns");
final JSpinner spinner = new JSpinner();
SpinnerNumberModel snm;
if (maxCols == 0) {
snm = new SpinnerNumberModel(0, 0, maxCols, 1);
spinner.setEnabled(false);
addSortItemButton.setEnabled(false);
} else {
snm = new SpinnerNumberModel(1, 1, maxCols, 1);
}
spinner.setModel(snm);
spinner.setMaximumSize(new Dimension(50, 25));
spinner.setPreferredSize(new Dimension(50, 25));
NumberEditor ne = (NumberEditor) spinner.getEditor();
final JFormattedTextField spinnertextfield = ne.getTextField();
// workaround to ensure same background color
Color backColor = spinnertextfield.getBackground();
// when spinner's text field is editable false
spinnertextfield.setEditable(false);
spinnertextfield.setBackground(backColor);
addSortItemButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent ae) {
ArrayList<String> newlist = new ArrayList<String>();
for (int i = 0; i < m_components.size(); i++) {
SortItem temp = m_components.get(i);
newlist.add(temp.getColumnText());
}
int oldsize = m_components.size();
String temp = spinner.getValue().toString();
int newsize = Integer.parseInt(temp);
for (int n = oldsize; n < oldsize + newsize; n++) {
newlist.add(NOSORT.getName());
}
boolean[] oldbool = new boolean[oldsize];
boolean[] newbool = new boolean[oldsize + newsize];
// copy old values
for (int i = 0; i < m_components.size(); i++) {
SortItem temp2 = m_components.get(i);
newbool[i] = temp2.getSortOrder();
}
// create new values
for (int i = oldbool.length; i < newbool.length; i++) {
newbool[i] = true;
}
boolean misToEnd = m_sortMissingToEndChecker.isSelected();
update(m_spec, newlist, newbool, (oldsize + newsize), m_memory, misToEnd);
}
});
buttonbox.add(spinner);
buttonbox.add(Box.createHorizontalStrut(10));
buttonbox.add(addSortItemButton);
super.add(buttonbox);
Box memorybox = Box.createHorizontalBox();
m_memorycheckb = new JCheckBox("Sort in memory", m_memory);
m_memorycheckb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent ae) {
if (m_memorycheckb.isSelected()) {
m_memory = true;
} else {
m_memory = false;
}
}
});
memorybox.add(m_memorycheckb);
super.add(memorybox);
Box missingToEndBox = Box.createHorizontalBox();
m_sortMissingToEndChecker.setSelected(missingToEnd);
missingToEndBox.add(m_sortMissingToEndChecker);
super.add(missingToEndBox);
revalidate();
}
}
Aggregations