package com.universalbits.conorganizer.badger.ui;
import com.universalbits.conorganizer.badger.control.BadgePrinter;
import com.universalbits.conorganizer.badger.control.ServerBadgeLoader;
import com.universalbits.conorganizer.common.APIClient;
import com.universalbits.conorganizer.common.ISettings;
import com.universalbits.conorganizer.common.Settings;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.text.NumberFormat;
/**
* Created by rjenks on 9/1/2014.
*/
public class SettingsDialog extends JDialog {
private JFrame frame;
private BadgePrinterUI badgePrinterUI;
private ISettings settings;
private static final String WEST = SpringLayout.WEST;
private static final String EAST = SpringLayout.EAST;
private static final String NORTH = SpringLayout.NORTH;
private static final String SOUTH = SpringLayout.SOUTH;
private static final int GAP = 5;
private static final int COLS = 2;
public SettingsDialog(final BadgePrinterUI badgePrinterUI, final ISettings settings) {
super(badgePrinterUI.getJFrame(), "Settings", true);
this.frame = badgePrinterUI.getJFrame();
this.badgePrinterUI = badgePrinterUI;
this.settings = settings;
JPanel contentPane = (JPanel)this.getContentPane();
contentPane.setLayout(new BorderLayout());
int numFields = 0;
final JLabel clientNameLabel = new JLabel("Client Name:");
final JTextField clientNameField = new JTextField(settings.getProperty(APIClient.PROPERTY_NAME));
numFields++;
final JLabel hostLabel = new JLabel("Host URL:");
final JTextField hostField = new JTextField(settings.getProperty(APIClient.PROPERTY_URL_PREFIX));
numFields++;
final JLabel tokenLabel = new JLabel("Token:");
final JTextField tokenField = new JPasswordField(settings.getProperty(APIClient.PROPERTY_TOKEN));
numFields++;
final JLabel widthLabel = new JLabel("Page Width:");
final JFormattedTextField widthField = new JFormattedTextField(NumberFormat.getNumberInstance());
widthField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_PAGE_WIDTH, BadgePrinter.DEFAULT_PAGE_WIDTH));
numFields++;
final JLabel heightLabel = new JLabel("Page Height:");
final JFormattedTextField heightField = new JFormattedTextField(NumberFormat.getNumberInstance());
heightField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_PAGE_HEIGHT, BadgePrinter.DEFAULT_PAGE_HEIGHT));
numFields++;
final JLabel xScaleLabel = new JLabel("X Scale:");
final JFormattedTextField xScaleField = new JFormattedTextField(NumberFormat.getNumberInstance());
xScaleField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_X_SCALE, BadgePrinter.DEFAULT_X_SCALE));
numFields++;
final JLabel yScaleLabel = new JLabel("Y Scale:");
final JFormattedTextField yScaleField = new JFormattedTextField(NumberFormat.getNumberInstance());
yScaleField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_Y_SCALE, BadgePrinter.DEFAULT_Y_SCALE));
numFields++;
final JLabel xTranslateLabel = new JLabel("X Translate:");
final JFormattedTextField xTranslateField = new JFormattedTextField(NumberFormat.getNumberInstance());
xTranslateField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_X_TRANSLATE, BadgePrinter.DEFAULT_X_TRANSLATE));
numFields++;
final JLabel yTranslateLabel = new JLabel("Y Translate:");
final JFormattedTextField yTranslateField = new JFormattedTextField(NumberFormat.getNumberInstance());
yTranslateField.setValue(settings.getPropertyDouble(BadgePrinter.PROPERTY_Y_TRANSLATE, BadgePrinter.DEFAULT_Y_TRANSLATE));
numFields++;
final JLabel fieldsLabel = new JLabel("Fields");
final JTextField fieldsField = new JTextField(settings.getProperty(BadgePrinter.PROPERTY_FIELDS));
numFields++;
SpringLayout springLayout = new SpringLayout();
JPanel formPanel = new JPanel(springLayout);
formPanel.add(clientNameLabel);
formPanel.add(clientNameField);
formPanel.add(hostLabel);
formPanel.add(hostField);
formPanel.add(tokenLabel);
formPanel.add(tokenField);
formPanel.add(widthLabel);
formPanel.add(widthField);
formPanel.add(heightLabel);
formPanel.add(heightField);
formPanel.add(xScaleLabel);
formPanel.add(xScaleField);
formPanel.add(yScaleLabel);
formPanel.add(yScaleField);
formPanel.add(xTranslateLabel);
formPanel.add(xTranslateField);
formPanel.add(yTranslateLabel);
formPanel.add(yTranslateField);
formPanel.add(fieldsLabel);
formPanel.add(fieldsField);
SpringUtilities.makeCompactGrid(formPanel, numFields, COLS, GAP, GAP, GAP, GAP);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
JButton okButton = new JButton(new AbstractAction("OK") {
@Override
public void actionPerformed(ActionEvent e) {
settings.setProperty(APIClient.PROPERTY_NAME, clientNameField.getText());
settings.setProperty(APIClient.PROPERTY_URL_PREFIX, hostField.getText());
settings.setProperty(APIClient.PROPERTY_TOKEN, tokenField.getText());
settings.setProperty(BadgePrinter.PROPERTY_PAGE_WIDTH, widthField.getText());
settings.setProperty(BadgePrinter.PROPERTY_PAGE_HEIGHT, heightField.getText());
settings.setProperty(BadgePrinter.PROPERTY_X_SCALE, xScaleField.getText());
settings.setProperty(BadgePrinter.PROPERTY_Y_SCALE, yScaleField.getText());
settings.setProperty(BadgePrinter.PROPERTY_X_TRANSLATE, xTranslateField.getText());
settings.setProperty(BadgePrinter.PROPERTY_Y_TRANSLATE, yTranslateField.getText());
settings.setProperty(BadgePrinter.PROPERTY_FIELDS, fieldsField.getText());
setVisible(false);
dispose();
}
});
JButton cancelButton = new JButton(new AbstractAction("Cancel") {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
dispose();
}
});
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
contentPane.add(formPanel, BorderLayout.CENTER);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(frame);
setVisible(true);
}
}