summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
blob: 2792e9fdeddc164987dd08c76d9c2c9521db01b7 (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.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.bwlp.thrift.iface.ShareMode;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.configurator.ImagePermissionConfigurator;
import org.openslx.dozmod.gui.control.ComboBox;
import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer;
import org.openslx.dozmod.gui.control.PersonLabel;
import org.openslx.dozmod.gui.control.QLabel;
import org.openslx.dozmod.gui.control.table.ImageVersionTable;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.thrifthelper.Comparators;

@SuppressWarnings("serial")
public abstract class ImageDetailsWindowLayout extends JDialog {

	private static final int ICON_SIZE_Y = 24;

	protected final JTextField txtTitle;
	protected final JTextArea txtDescription;

	protected QLabel lblError;
	protected final PersonLabel lblOwner;
	protected final JButton btnChangeOwner;
	protected final QLabel lblCreateTime;
	protected final PersonLabel lblUpdater;
	protected final QLabel lblUpdateTime;

	protected final ComboBox<OperatingSystem> cboOperatingSystem;
	protected final QLabel lblVirtualizer;
	protected final JTextField txtTags;
	protected final JCheckBox chkIsTemplate;
	protected final ComboBox<ShareMode> cboShareMode;

	protected final JTextField txtId;
	protected final JTextField txtVersion;

	protected final JButton btnSaveChanges;
	protected final JButton btnUpdateImage;
	protected final JButton btnUploadToMaster;
	protected final JButton btnClose;

	protected final JCheckBox chkDefaultPermAdmin;
	protected final JCheckBox chkDefaultPermEdit;
	protected final JCheckBox chkDefaultPermDownload;
	protected final JCheckBox chkDefaultPermLink;

	protected final JButton btnShowLinkingLectures;
	protected final QLabel lblLinkedLectureCount;

	protected final ImageVersionTable tblVersions;
	protected final QScrollPane scpVersions;

	protected JTabbedPane pnlTabs;

	protected ImagePermissionConfigurator ctlImagePermissionConfigurator;

	private static String infoTextDefPerms = "<html><body style='width:100%'>"
			+ "Hier können Sie Rechte für nicht in der Liste angegebene Nutzer festlegen:" + "</body></html>";

	public ImageDetailsWindowLayout(Frame modalParent) {
		super(modalParent, "<init>", ModalityType.APPLICATION_MODAL);
		setResizable(true);
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		setPreferredSize(Gui.getScaledDimension(630, 680));
		((JPanel) getContentPane()).setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

		/* *******************************************************************************
		 *
		 *                             Tab: Overview
		 *
		 ********************************************************************************/
		JPanel pnlTabOverview = new JPanel();
		GridManager grid = new GridManager(pnlTabOverview, 3, true, new Insets(2, 2, 2, 2));
		// name
		txtTitle = new JTextField();
		txtTitle.setFont(txtTitle.getFont().deriveFont(Font.BOLD, txtTitle.getFont().getSize2D() * 1.4f));
		//txtTitle.setMinimumSize(Gui.getScaledDimension(0, 24));
		grid.add(txtTitle, 3).expand(true, false).fill(true, false);
		grid.nextRow();

		// description
		txtDescription = new JTextArea();
		txtDescription.setLineWrap(true);
		txtDescription.setWrapStyleWord(true);
		grid.add(new QLabel("Beschreibung")).anchor = GridBagConstraints.FIRST_LINE_START;
		JScrollPane jsp = new JScrollPane(txtDescription, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		jsp.setMinimumSize(Gui.getScaledDimension(0, 110));
		jsp.setPreferredSize(Gui.getScaledDimension(0, 110));
		grid.add(jsp, 2).expand(true, true).fill(true, true);
		grid.nextRow();

		// owner
		lblOwner = new PersonLabel();
		btnChangeOwner = new JButton("Ändern");
		grid.add(new QLabel("Besitzer"));
		grid.add(lblOwner).expand(true, false);
		grid.add(btnChangeOwner).fill(true, false);
		grid.nextRow();

		// creation time
		lblCreateTime = new QLabel();
		grid.add(new QLabel("Erstellt am"));
		grid.add(lblCreateTime, 2);
		grid.nextRow();

		// last updater
		lblUpdater = new PersonLabel();
		grid.add(new QLabel("Geändert durch"));
		grid.add(lblUpdater, 2);
		grid.nextRow();

		// last updated
		lblUpdateTime = new QLabel();
		grid.add(new QLabel("Geändert am"));
		grid.add(lblUpdateTime, 2);
		grid.nextRow();

		cboOperatingSystem = new ComboBox<OperatingSystem>(Comparators.operatingSystem,
				new ComboBoxRenderer<OperatingSystem>() {
					@Override
					public String renderItem(OperatingSystem item) {
						if (item == null)
							return null;
						return item.getOsName();
					}
				});
		cboOperatingSystem.setEditable(false);

		grid.add(new QLabel("Betriebssystem"));
		grid.add(cboOperatingSystem, 2).expand(true, false).fill(true, false);
		grid.nextRow();

		// tags
		txtTags = new JTextField();

		// share mode
		cboShareMode = new ComboBox<ShareMode>(new ComboBoxRenderer<ShareMode>() {
			@Override
			public String renderItem(ShareMode item) {
				if (item == null)
					return "null";
				return item.name();
			}
		});
		grid.add(new QLabel("Freigabemodus"));
		grid.add(cboShareMode, 2).expand(true, false).fill(true, false);
		grid.nextRow();

		// template
		chkIsTemplate = new JCheckBox("Vorlage");
		grid.add(Box.createGlue());
		grid.add(chkIsTemplate, 2);
		grid.nextRow();

		// version
		txtVersion = new JTextField();
		grid.add(new QLabel("Versions-ID"));
		grid.add(txtVersion, 2).expand(true, false).fill(true, false);
		grid.nextRow();

		// id
		txtId = new JTextField();
		txtId.setEditable(false);
		grid.add(new QLabel("VM-ID"));
		grid.add(txtId, 2).expand(true, false).fill(true, false);
		grid.nextRow();

		// virtualizer
		lblVirtualizer = new QLabel();
		grid.add(new QLabel("Virtualisierer"));
		grid.add(lblVirtualizer, 2).expand(true, false).fill(true, false);
		grid.nextRow();

		grid.add(new QLabel("Veranstaltungen"));
		lblLinkedLectureCount = new QLabel();
		grid.add(lblLinkedLectureCount).expand(true, false);
		btnShowLinkingLectures = new JButton("Anzeigen");
		grid.add(btnShowLinkingLectures).fill(true, false);
		grid.nextRow();
		grid.add(Box.createVerticalGlue(), 3).expand(true, true).fill(true, true);
		grid.nextRow();

		JPanel buttonBar = new JPanel();
		BoxLayout buttons = new BoxLayout(buttonBar, BoxLayout.LINE_AXIS);
		buttonBar.setLayout(buttons);
		btnUpdateImage = new JButton("Neue VM-Version hochladen",
				Gui.getScaledIconResource("/img/upload-icon.png", "New VM", ICON_SIZE_Y, buttonBar));
		buttonBar.add(btnUpdateImage);
		btnUploadToMaster = new JButton("Landesweit veröffentlichen",
				Gui.getScaledIconResource("/img/publish-icon.png", "Publish VM", ICON_SIZE_Y, buttonBar));
		buttonBar.add(btnUploadToMaster);
		grid.add(buttonBar, 3).fill(true, false).expand(true, false);
		grid.nextRow();
		
		grid.finish(false);

		/* *******************************************************************************
		 *
		 *                             Tab: VM versions
		 *
		 ********************************************************************************/
		JPanel pnlTabVersions = new JPanel();
		tblVersions = new ImageVersionTable();
		scpVersions = new QScrollPane(tblVersions);
		GridManager grdVersions = new GridManager(pnlTabVersions, 1, false, new Insets(8, 2, 8, 2));
		grdVersions.add(scpVersions).fill(true, true).expand(true, true);
		grdVersions.finish(false);

		/* *******************************************************************************
		 *
		 *                             Tab: Permissions
		 *
		 ********************************************************************************/
		JPanel pnlTabPermissions = new JPanel();
		ctlImagePermissionConfigurator = new ImagePermissionConfigurator();
		GridManager grdImagePermissionConfigurator = new GridManager(pnlTabPermissions, 1, false, new Insets(8, 2, 8, 2));
		grdImagePermissionConfigurator.add(ctlImagePermissionConfigurator).fill(true, true).expand(true, true);
		// Panel with the permissions for other users
		JPanel defaultPermissionPane = new JPanel();
		defaultPermissionPane.setBorder(BorderFactory.createTitledBorder("Andere Nutzer"));
		defaultPermissionPane.setLayout(new BoxLayout(defaultPermissionPane, BoxLayout.PAGE_AXIS));
		JLabel txtDefaultPerms = new JLabel(infoTextDefPerms);

		JPanel txtDefaultPermsPanel = new JPanel();
		// Panel + BoxLayout + Label = wordwrap
		txtDefaultPermsPanel.setLayout(new BoxLayout(txtDefaultPermsPanel, BoxLayout.LINE_AXIS));
		txtDefaultPermsPanel.add(txtDefaultPerms);
		JPanel defaultPermsSubPanel = new JPanel();
		defaultPermsSubPanel.setLayout(new BoxLayout(defaultPermsSubPanel, BoxLayout.LINE_AXIS));
		chkDefaultPermAdmin = new JCheckBox("Admin");
		chkDefaultPermDownload = new JCheckBox("Download");
		chkDefaultPermEdit = new JCheckBox("Bearbeiten");
		chkDefaultPermLink = new JCheckBox("Verlinken");

		defaultPermsSubPanel.add(chkDefaultPermLink);
		defaultPermsSubPanel.add(chkDefaultPermDownload);
		defaultPermsSubPanel.add(chkDefaultPermEdit);
		defaultPermsSubPanel.add(chkDefaultPermAdmin);

		defaultPermissionPane.add(txtDefaultPermsPanel);
		defaultPermissionPane.add(Box.createVerticalStrut(10));
		defaultPermissionPane.add(defaultPermsSubPanel);
		grdImagePermissionConfigurator.add(defaultPermissionPane).fill(true, false).expand(false, false);
		grdImagePermissionConfigurator.finish(false);

		/* *******************************************************************************
		 *
		 *                        Bottom panel for buttons
		 *
		 ********************************************************************************/
		JPanel pnlButtons = new JPanel();
		pnlButtons.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
		pnlButtons.setLayout(new BoxLayout(pnlButtons, BoxLayout.LINE_AXIS));
		btnSaveChanges = new JButton("Speichern");
		btnClose = new JButton("Schließen");
		// user feedback slot
		lblError = new QLabel("");
		lblError.setForeground(Color.RED);
		pnlButtons.add(lblError);
		pnlButtons.add(Box.createGlue());
		pnlButtons.add(btnClose);
		pnlButtons.add(btnSaveChanges);

		/* *******************************************************************************
		 *
		 *                        Main panel containing the tabs
		 *
		 ********************************************************************************/
		pnlTabs = new JTabbedPane();
		pnlTabs.addTab("Übersicht", pnlTabOverview);
		pnlTabs.addTab("VM-Versionen", pnlTabVersions);
		pnlTabs.addTab("Berechtigungen", pnlTabPermissions);
		
		add(pnlTabs, BorderLayout.CENTER);
		add(pnlButtons, BorderLayout.PAGE_END);
	}
}