// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.tracer2.preferences;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import org.openstreetmap.josm.Main;
public class ServerParamPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = -6174275926314685531L;
ServerParamList m_listParam;
public ServerParamPanel(ServerParamList listParam) {
super(new GridBagLayout());
m_listParam = listParam;
}
public void refresh() {
removeAll();
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(2, 5, 2, 5);
for (final ServerParam param : m_listParam.getParamList()) {
gbc.gridx = 0;
gbc.weightx = 1.0;
gbc.anchor = GridBagConstraints.WEST;
final JCheckBox cbParam = new JCheckBox(param.getName());
cbParam.setSelected(param.isEnabled());
cbParam.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
param.setEnabled(cbParam.isSelected());
}
});
add(cbParam, gbc);
gbc.gridx = 1;
gbc.weightx = 0;
gbc.anchor = GridBagConstraints.EAST;
final JButton bEdit = new JButton(tr("Edit"));
bEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JDialog dlg = new ServerParamDialog(param);
dlg.setVisible(true);
dlg.dispose();
refresh();
}
});
add(bEdit, gbc);
gbc.gridx = 2;
final JButton bDel = new JButton(tr("Delete"));
bDel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (JOptionPane.showConfirmDialog(Main.parent,
tr("Delete parameter \"{0}\"?", param.getName()),
tr("Are you sure?"),
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
m_listParam.removeParam(param);
refresh();
}
}
});
add(bDel, gbc);
gbc.gridy++;
}
gbc.gridx = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.WEST;
JPanel p = new JPanel(new GridBagLayout());
final JButton bNew = new JButton(tr("Add new"));
bNew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JDialog dlg = new ServerParamDialog(null);
dlg.setVisible(true);
dlg.dispose();
ServerParam param = ((ServerParamDialog) dlg).getServerParam();
if (param != null && param.getName() != null && (!"".equals(param.getName()))) {
m_listParam.addParam(param);
param.setEnabled(true);
}
refresh();
}
});
p.add(bNew);
final JButton bPredefined = new JButton(tr("Add predefined"));
bPredefined.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
ServerParamList myParamList;
myParamList = new ServerParamList(null);
ServerParamSelectDialog dialog = new ServerParamSelectDialog(myParamList.getParamList(), null);
if (dialog.getShow()) {
JOptionPane pane = new JOptionPane(dialog, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dlg = pane.createDialog(Main.parent, tr("Tracer2") + " - " + tr("Select predefined parameter"));
dlg.setVisible(true);
Object obj = pane.getValue();
dlg.dispose();
if (obj != null && ((Integer) obj) == JOptionPane.OK_OPTION) {
ServerParam param = dialog.getSelectedParam();
dlg = new ServerParamDialog(param);
dlg.setVisible(true);
dlg.dispose();
param = ((ServerParamDialog) dlg).getServerParam();
if (param != null && param.getName() != null && (!"".equals(param.getName()))) {
m_listParam.addParam(param);
param.setEnabled(true);
}
}
}
refresh();
}
});
p.add(bPredefined);
add(p, gbc);
gbc.gridy++;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.BOTH;
add(new JPanel(), gbc);
revalidate();
repaint();
}
}