package dr.app.tracer.traces;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Walter Xie
*/
public class FilterDiscretePanel extends FilterAbstractPanel {
JList allValues;
JList selectedValues;
// JButton selectButton;
FilterDiscretePanel(String[] allValuesArray, String[] selectedValuesArray) {
setLayout(new FlowLayout(FlowLayout.CENTER, 20, 50));
allValues = new JList(allValuesArray);
allValues.setVisibleRowCount(6);
allValues.setFixedCellWidth(100);
allValues.setFixedCellHeight(15);
allValues.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
add(new JScrollPane(allValues));
if (selectedValuesArray != null) {
int[] indices = new int[selectedValuesArray.length];
for (int i = 0; i < indices.length; i++) {
for (int j = 0; j < allValuesArray.length; j++) {
if (selectedValuesArray[i].equals(allValuesArray[j])) {
indices[i] = j;
break;
}
}
}
allValues.setSelectedIndices(indices);
}
JButton selectButton = new JButton("Select >>>");
selectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
selectedValues.setListData(allValues.getSelectedValues());
}
});
add(selectButton);
if (selectedValuesArray == null) {
selectedValues = new JList();
} else {
selectedValues = new JList(selectedValuesArray);
}
selectedValues.setVisibleRowCount(6);
selectedValues.setFixedCellWidth(100);
selectedValues.setFixedCellHeight(15);
selectedValues.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
add(new JScrollPane(selectedValues));
add(new JLabel("Hold Shift or Ctrl key for multi-selection"));
}
public Object[] getSelectedValues() {
int size = selectedValues.getModel().getSize();
if (size < 0) return null;
Object[] sel = new Object[size];
for (int i=0; i < size; i++) {
sel[i] = selectedValues.getModel().getElementAt(i);
}
return sel;
}
}