package org.openslx.dozmod.gui.window.layout;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultBoundedRangeModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.control.QLabel;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.thrift.Session;
@SuppressWarnings("serial")
public class ConfigWindowLayout extends JDialog {
private static String title = "bwLehrpool Suite - Konfiguration";
protected JRadioButton btnProxyNone;
protected JRadioButton btnProxyAuto;
protected JRadioButton btnProxySocks;
protected JRadioButton btnProxyHttp;
protected JCheckBox btnSendMeMail;
protected JSlider btnFontSize;
protected final JSlider sldConnections;
protected JButton btnSave;
protected JButton btnClose;
protected ButtonGroup radioGroup;
public ConfigWindowLayout(Frame modalParent) {
super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL
: ModalityType.MODELESS);
// regular layout as a helper for the whole page
setLayout(new BorderLayout());
setMinimumSize(Gui.getScaledDimension(500, 300));
// Panel to add everything into, needed for the border.
JPanel contentPanel = new JPanel();
getContentPane().add(contentPanel, BorderLayout.CENTER);
// -- one panel per option for borders --
// mail config panel
JPanel mailPanel = new JPanel();
mailPanel.setLayout(new BoxLayout(mailPanel, BoxLayout.PAGE_AXIS));
mailPanel.setBorder(BorderFactory.createTitledBorder("eMail-Benachrichtigungen"));
btnSendMeMail = new JCheckBox("Über Image- und Veranstaltungsänderungen per eMail informiert werden");
mailPanel.add(btnSendMeMail);
// TODO center the label horizontally
QLabel mailNotice = new QLabel(
"Für diese Option muss der Server für den Mailversand konfiguriert sein.");
mailPanel.add(mailNotice);
QLabel mailNote = new QLabel("Ihre eMail-Adresse ist " + Session.getEMail());
mailNote.setFont(mailNote.getFont().deriveFont(Font.ITALIC));
mailPanel.add(mailNote);
// proxy config panel
JPanel proxyPanel = new JPanel();
proxyPanel.setBorder(BorderFactory.createTitledBorder("Proxy"));
GridManager proxyGrid = new GridManager(proxyPanel, 2);
proxyGrid.skip(2).fill(true, false).expand(true, false);
proxyGrid.nextRow();
// radio button for proxy mode
JPanel radioGroupPanel = new JPanel();
radioGroup = new ButtonGroup();
btnProxyNone = new JRadioButton("Keinen Proxy verwenden");
btnProxyAuto = new JRadioButton("Automatisch nach Proxy suchen");
radioGroup.add(btnProxyNone);
radioGroup.add(btnProxyAuto);
radioGroupPanel.add(btnProxyNone);
radioGroupPanel.add(btnProxyAuto);
proxyGrid.add(radioGroupPanel, 2);
proxyGrid.nextRow();
proxyGrid.finish(false);
// font config panel
JPanel fontPanel = new JPanel();
fontPanel.setBorder(BorderFactory.createTitledBorder("Schriftgröße (%)"));
GridManager fontGrid = new GridManager(fontPanel, 1);
QLabel fontNote = new QLabel("Diese Funktion ist experimentell. Es kann zu Anzeigefehlern kommen.");
fontNote.setFont(fontNote.getFont().deriveFont(Font.ITALIC));
fontGrid.add(fontNote);
fontGrid.nextRow();
btnFontSize = new JSlider(JSlider.HORIZONTAL);
btnFontSize.setModel(new DefaultBoundedRangeModel(100, Config.FONT_SCALING_STEP,
Config.FONT_SCALING_MIN, Config.FONT_SCALING_MAX));
btnFontSize.setMinorTickSpacing(Config.FONT_SCALING_STEP);
btnFontSize.setMajorTickSpacing(25);
btnFontSize.setSnapToTicks(true);
btnFontSize.setPaintTicks(true);
btnFontSize.setPaintLabels(true);
fontGrid.add(btnFontSize).fill(true, false).expand(true, false);
fontGrid.nextRow();
fontGrid.finish(false);
// Concurrent Connections
sldConnections = new JSlider(JSlider.HORIZONTAL);
sldConnections.setModel(new DefaultBoundedRangeModel(1, 1, 1, 4));
sldConnections.setSnapToTicks(true);
JPanel pnlConnections = new JPanel();
pnlConnections.setLayout(new BoxLayout(pnlConnections, BoxLayout.PAGE_AXIS));
pnlConnections.setBorder(BorderFactory.createTitledBorder("Verbindungen pro Transfer (DEBUG/TESTING)"));
pnlConnections.add(new QLabel("Anzahl Verbindungen pro Up/Download. Empfohlene Einstellung: 1"));
pnlConnections.add(sldConnections);
// bottom button panel
JPanel buttonPanel = new JPanel();
btnClose = new JButton("Schließen");
btnSave = new JButton("Speichern");
buttonPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
buttonPanel.add(Box.createGlue());
buttonPanel.add(btnClose);
buttonPanel.add(btnSave);
// Start the grid stuff
GridManager grid = new GridManager(contentPanel, 1);
grid.add(mailPanel).fill(true, false).expand(false, false);
grid.nextRow();
grid.add(Box.createRigidArea(new Dimension(0, 10)));
grid.nextRow();
grid.add(proxyPanel).fill(true, false).expand(false, false);
grid.nextRow();
grid.add(Box.createRigidArea(new Dimension(0, 10)));
grid.nextRow();
grid.add(fontPanel).fill(true, false).expand(false, false);
grid.nextRow();
grid.add(Box.createRigidArea(new Dimension(0, 10)));
grid.nextRow();
grid.add(pnlConnections).fill(true, false).expand(false, false);
grid.nextRow();
grid.finish(false);
getContentPane().add(buttonPanel, BorderLayout.PAGE_END);
pack();
}
}