summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java
blob: fdcc69d1787043f5809a61b59d2d21c5ac162018 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11



                                             
                     





                                 
                                            


                             



                                
                                 
                                  
                                             
                                                 
                                         


                                                 
 







                                                                         
                                               



                                   

                                         
                                                      

                                                                                              


                                                                
                                                                 
 

                                                                       
                                                                        

                                                         

                                                
                                                                                   
                                                                                                  
                                                                                                                        
                                             
                                                      
                                               
                                                                                                             
                                          
                                                                                             

                                                                             
 

                                                 
                                                                                
                                                                       
                                                                        



                                                      
                                               

                                                                                 







                                                  
 
                                    
                                                
                                                                                            
                                                                     
                                                                                                                    


                                                                             
                                                              

                                                                                                
                                                                          




                                                                                
                                   
                                       
 









                                                                                                                        

                                                  
                                                     
                                                   


                                                                                       
                                          
                                         
                

                                                                    
                                                                           


                                                                    
                                                                            




                                                                           



                                                                                
                                   
 
                                                                         
                       

         
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();
	}
}