package ro.nextreports.designer.i18n.action;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
import ro.nextreports.designer.util.I18NSupport;
import ro.nextreports.designer.util.NextReportsUtil;
public class KeySelectionPanel extends JPanel {
private JComboBox keysCombo;
private JTextField valueField;
private boolean showValueField;
private JCheckBox allCheck;
private Dimension dim = new Dimension(200, 22);
public KeySelectionPanel(boolean showValueField) {
this.showValueField = showValueField;
keysCombo = new JComboBox();
keysCombo.setEditable(true);
AutoCompleteDecorator.decorate(keysCombo);
keysCombo.setMinimumSize(dim);
keysCombo.setPreferredSize(dim);
if (showValueField) {
keysCombo.setEnabled(false);
}
List<String> keys = NextReportsUtil.getReportKeys();
for (String key : keys) {
keysCombo.addItem(key);
}
valueField = new JTextField();
valueField.setMinimumSize(dim);
valueField.setPreferredSize(dim);
allCheck = new JCheckBox(I18NSupport.getString("languages.keys.selection.key.all"));
setLayout(new GridBagLayout());
add(new JLabel(I18NSupport.getString("languages.keys.selection.key")),
new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST,
GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
add(keysCombo,
new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST,
GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 5), 0, 0));
if (showValueField) {
add(new JLabel(I18NSupport.getString("languages.keys.selection.value")),
new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST,
GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
add(valueField,
new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST,
GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 5), 0, 0));
} else {
add(allCheck,
new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.WEST,
GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
}
}
public String getKey() {
return (String)keysCombo.getSelectedItem();
}
public List<String> getKeys() {
List<String> result = new ArrayList<String>();
if (allCheck.isSelected()) {
for (int i=0, size=keysCombo.getItemCount(); i<size; i++) {
result.add((String)keysCombo.getItemAt(i));
}
} else {
result.add(getKey());
}
return result;
}
public String getValue() {
return valueField.getText();
}
public boolean showValueField() {
return showValueField;
}
public void setKey(String key) {
keysCombo.setSelectedItem(key);
}
public void setValue(String value) {
valueField.setText(value);
}
public boolean isAll() {
return allCheck.isSelected();
}
}