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


                                             

                       
 
                     
                                             
 
                                   
                                 
                                                  
                                               
                                             
                                                    
                                                 
                                          
                                              
 
                                                 
 




                                                                           






                                                          
                                               
                                                         
                                                         
 

                                                       

                                         
 
                                                       

                                                                                                                      

                                                                
                                                               
 
                                                               

                                                                       
                                                                        


                                                                                                   
                                                                                                                             


                                                     
                                                                                                               

                                                                              
                                                                                                                             





                                                                               
                                                                                                                       


                                                     
                                                      


                                                                                               

                                                                                                                   

                                             

                                                  


                                                                                
                                                                                                                      



                                                     
                                                                                                                   


                                                             
                                                          








                                                                                                  
 
                                

                                                                                                         


                                             
                                                                                                                           













                                                                                           
                                         

                                                                                                                   



                                                     
                                                                                                                              


                                                             
                                                                 
                                                                                  
                                                      


                                                                               

















                                                                                                                                       
 










                                                                                                                 
                                                                                                



                                                                 
                                   


                                                                                    

                                  
 

                                                  

                                                                                                 


                                                                                       
                                          
                                         
                                                                         
 
                
         
 
 
package org.openslx.dozmod.gui.window.layout;

import java.awt.BorderLayout;
import java.awt.Insets;
import java.awt.Window;

import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;

import org.openslx.dozmod.Branding;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.Config.FileTransferMode;
import org.openslx.dozmod.gui.control.ComboBox;
import org.openslx.dozmod.gui.control.QLabel;
import org.openslx.dozmod.gui.control.WordWrapLabel;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.Language;

public class ConfigWindowLayout extends JDialog {

	/**
	 * Version for serialization.
	 */
	private static final long serialVersionUID = -9134937794208526938L;

	protected final JRadioButton btnProxyNone;
	protected final JRadioButton btnProxyAuto;
	protected final JRadioButton btnProxySocks = null;
	protected final JRadioButton btnProxyHttp = null;
	protected final JCheckBox chkSendMeMail;
	protected final QLabel lblYourAddress;
	protected final JSlider sldFontSize;
	protected final JSlider sldConnections;
	protected ButtonGroup btnGroupLookAndFeel = null;
	protected ButtonGroup btnGroupTransferEnc = null;

	protected final ComboBox<Language> cboLanguage;

	protected final JButton btnSave;
	protected final JButton btnClose;

	public ConfigWindowLayout(Window modalParent) {
		super(modalParent, I18n.WINDOW_LAYOUT.getString("Config.Dialog.title", Branding.getApplicationName()),
				modalParent != null ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS);

		// regular layout as a helper for the whole page
		getContentPane().setLayout(new BorderLayout());

		Insets headingInset = new Insets(16, 12, 3, 3);
		// Panel to add everything into, needed for the border.
		JPanel contentPanel = new JPanel();
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		GridManager grid = new GridManager(contentPanel, 1, false, new Insets(4, 3, 1, 3));

		// mail config
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.mailNotifications.text"), true, false))
				.insets(headingInset)
				.expand(true, false)
				.fill(true, false);
		chkSendMeMail = new JCheckBox(I18n.WINDOW_LAYOUT.getString("Config.CheckBox.sendMeMail.text"));
		grid.add(chkSendMeMail).fill(true, false).expand(true, false);
		grid.add(
				new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.sendMeMail.text"), false, true))
				.expand(true, false)
				.fill(true, false);
		lblYourAddress = new QLabel();
		grid.add(lblYourAddress).fill(true, false).expand(true, false);

		// proxy config
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.proxyConfig.text"), true, false))
				.insets(headingInset)
				.fill(true, false)
				.expand(true, false);
		JPanel radioGroupPanel = new JPanel();
		radioGroupPanel.setLayout(new BoxLayout(radioGroupPanel, BoxLayout.LINE_AXIS));
		// radio buttons
		ButtonGroup radioGroup = new ButtonGroup();
		btnProxyNone = new JRadioButton(I18n.WINDOW_LAYOUT.getString("Config.RadioButton.proxyNone.text"));
		btnProxyAuto = new JRadioButton(I18n.WINDOW_LAYOUT.getString("Config.RadioButton.proxyAuto.text"));
		radioGroup.add(btnProxyNone);
		radioGroup.add(btnProxyAuto);
		radioGroupPanel.add(btnProxyNone);
		radioGroupPanel.add(btnProxyAuto);
		grid.add(radioGroupPanel).expand(true, false).fill(true, false);

		// font config
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.fontConfig.text"), true, false))
				.insets(headingInset)
				.fill(true, false)
				.expand(true, false);
		grid.add(
				new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.fontConfigInfo.text"),
						false, true))
				.expand(true, false)
				.fill(true, false);
		UIManager.put("Slider.paintValue", false);
		sldFontSize = new JSlider(JSlider.HORIZONTAL);
		sldFontSize.setModel(new DefaultBoundedRangeModel(100, 0, Config.FONT_SCALING_MIN,
				Config.FONT_SCALING_MAX));
		sldFontSize.setMinorTickSpacing(5);
		sldFontSize.setMajorTickSpacing(25);
		sldFontSize.setSnapToTicks(true);
		sldFontSize.setPaintTicks(true);
		sldFontSize.setPaintLabels(true);
		grid.add(sldFontSize).fill(true, false).expand(true, false);

		// look and feel
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.lookAndFeel.text"),
					true, false))
			.insets(headingInset)
			.fill(true, false)
			.expand(true, false);
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.lookAndFeelInfo.text"), false, true))
			.fill(true, false)
			.expand(true, false);
		JPanel lafGroupPanel = new JPanel();
		lafGroupPanel.setLayout(new BoxLayout(lafGroupPanel, BoxLayout.LINE_AXIS));
		btnGroupLookAndFeel = new ButtonGroup();

		for (LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
			JRadioButton btn = new JRadioButton(laf.getName());
			btn.setToolTipText(laf.getClassName());
			btnGroupLookAndFeel.add(btn);
			lafGroupPanel.add(btn);
		}
		grid.add(lafGroupPanel).expand(true, false).fill(true, false);

		// Concurrent Connections
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.concurrentConnections.text"),
						true, false))
				.insets(headingInset)
				.fill(true, false)
				.expand(true, false);
		grid.add(
				new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.concurrentConnectionsInfo.text"),
						false, true))
				.fill(true, false)
				.expand(true, false);
		sldConnections = new JSlider(JSlider.HORIZONTAL);
		sldConnections.setModel(new DefaultBoundedRangeModel(1, 0, 1, 4));
		sldConnections.setMajorTickSpacing(1);
		sldConnections.setPaintTicks(true);
		sldConnections.setPaintLabels(true);
		grid.add(sldConnections).expand(true, false).fill(true, false);
		
		// Transfer SSL or plain
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.transferEncryption.text"),
				true, false))
		.insets(headingInset)
		.fill(true, false)
		.expand(true, false);
		JPanel encGroupPanel = new JPanel();
		encGroupPanel.setLayout(new BoxLayout(encGroupPanel, BoxLayout.LINE_AXIS));
		btnGroupTransferEnc = new ButtonGroup();

		for (FileTransferMode mode : Config.FileTransferMode.values()) {
			JRadioButton btn = new JRadioButton(I18n.WINDOW_LAYOUT.getString("Config.Button.transfermode." + mode.name()));
			btn.setToolTipText(mode.name());
			btnGroupTransferEnc.add(btn);
			encGroupPanel.add(btn);
		}
		grid.add(encGroupPanel).expand(true, false).fill(true, false);

		// Language
		grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.language.text"),
				true, false))
				.insets(headingInset)
				.fill(true, false)
				.expand(true, false);
		grid.add(
				new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.languageInfo.text"),
						false, true))
				.fill(true, false)
				.expand(true, false);
		cboLanguage = new ComboBox<Language>(new ComboBox.ComboBoxRenderer<Language>() {
			@Override
			public String renderItem(Language item) {
				return item.displayName;
			}
		}, Language.class);
		cboLanguage.setModel(new DefaultComboBoxModel<>(Language.values()));
		grid.add(cboLanguage).fill(true, false).expand(true, false);

		// Finish
		grid.finish(true);

		// bottom button panel
		JPanel buttonPanel = new JPanel();
		btnClose = new JButton(I18n.WINDOW_LAYOUT.getString("Config.Button.close.text"));
		btnSave = new JButton(I18n.WINDOW_LAYOUT.getString("Config.Button.save.text"));
		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);
		getContentPane().add(buttonPanel, BorderLayout.PAGE_END);

		
	}

}