summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java
blob: ca73bc29a67d3d5e8b26a18791ffb61e491a6b21 (plain) (tree)
1
2
3
4
5
                                             

 

                                  






















                                                           


                                                 
 
                                                               















                                                                  
        







                                              

                                                



                                                                                                        
                                                                 

                                           
                                                                   
                                                         
                                                                                 
 
                                                 
                                                                          



                                                                                      

                                                                  
                                                  

                                                                     
                               



                                                                                                       
                               







                                                                    
                                                                                       




                                                                               



                                                                                      



                                               
                                                       


                                                                                   
                                                              
                                                                                



                                                                                                
                                                           













                                                                       
                                                                              

                                                                


                                                                                       







                                                                              


                                                                                       




















                                                                                                                  


                                                                                       














                                                                                                                  




                                                                            


                                                                                       



















                                                                                                                  


                                                                                       























                                                                                                                  


                                                                                       

























                                                                                                                  


                                                                                       





















                                                                                                                  


                                                                                       





































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


import java.text.SimpleDateFormat;
import java.util.Date;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.helper.GuiManager;
import org.openslx.dozmod.gui.helper.TableHelper;
import org.openslx.dozmod.gui.wizard.ImageWizard;

public abstract class ImageListWindowLayout extends Composite {

	protected String infoTitleString = "Imageauswahl";
	protected String newButtonLabel = "Neu";
	protected String editButtonLabel = "Bearbeiten";
	protected String deleteButtonLabel = "Löschen";
	protected String downloadButtonLabel = "Download";
	protected String tableGroupLabel = "Images";
	protected String vmInfoGroupLabel = "Detailinformationen";
	
	
	// buttons
	protected Button newButton;
	protected Button deleteButton;
	protected Button editButton;
	protected Button downloadButton;
	
	
	// imageDetail texts
	protected Text imageSelectedNameLabel;
	protected Text idInfo;
	protected Text versionInfo;
	protected Text lastUpdateInfo;
	protected Text permissionInfo;
	protected Text ownerInfo;
	protected Text templateInfo;
	
	protected final TableViewer tableViewer;


	protected String infoTextString = "Hier können Sie images erstellen, bearbeiten und löschen.";

	public ImageListWindowLayout(final Composite mainShell) {
		super(mainShell, SWT.NONE);

		// the layout and layoutData of the ImageListWindow
		this.setLayout(new GridLayout(2, false));
		this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

		// info group with title and text
		Composite infoComposite = new Composite(this, SWT.BORDER);
		GridData infoGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		infoGridData.horizontalSpan = 2;
		infoComposite.setLayoutData(infoGridData);
		// layout for the items of the group
		infoComposite.setLayout(new GridLayout(1, false));

		// title of the info group in bold
		Label infoTitle = new Label(infoComposite, SWT.NONE);
		infoTitle.setText(infoTitleString);
		// set the fond
		FontData fontData = infoTitle.getFont().getFontData()[0];
		Font font = new Font(GuiManager.getDisplay(), new FontData(fontData.getName(), fontData
				.getHeight(), SWT.BOLD));
		infoTitle.setFont(font);
		// the infotext
		Label infoText = new Label(infoComposite, SWT.NONE);
		infoText.setText(infoTextString);



		// group for the table
		Group tableGroup = new Group(this, SWT.BORDER);
		tableGroup.setText(tableGroupLabel);
		tableGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
		tableGroup.setLayout(new GridLayout(3, true));

		// jface tableviewer on swt table
		Table vmTable = new Table(tableGroup, SWT.BORDER | SWT.V_SCROLL
				| SWT.H_SCROLL);
		GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
		tableGridData.horizontalSpan = 3;
		tableGridData.minimumWidth = 200;
		vmTable.setLayoutData(tableGridData);
		vmTable.setHeaderVisible(true);
		vmTable.setLinesVisible(true); 

		// TableViewer on the table
		tableViewer = new TableViewer(vmTable);
		tableViewer.setContentProvider(ArrayContentProvider.getInstance());


		// create, modify, download and delete buttons
		Composite buttonComposite = new Composite(tableGroup, SWT.NONE);
		GridData buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.horizontalSpan = 4;
		buttonComositeGridData.minimumWidth = 200;
		buttonComposite.setLayoutData(buttonComositeGridData);
		buttonComposite.setLayout(new RowLayout());
		
		newButton = new Button(buttonComposite, SWT.PUSH);
		newButton.setText(newButtonLabel);

		editButton = new Button(buttonComposite, SWT.PUSH);
		editButton.setText(editButtonLabel);

		deleteButton = new Button(buttonComposite, SWT.PUSH);
		deleteButton.setText(deleteButtonLabel);

		downloadButton = new Button(buttonComposite, SWT.PUSH);
		downloadButton.setText(downloadButtonLabel);


		// group for the info of the selected image in the tableViewer
		Group vmInfoGroup = new Group(this, SWT.BORDER);
		vmInfoGroup.setText(vmInfoGroupLabel);
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 300;
		vmInfoGroup.setLayoutData(buttonComositeGridData);
		vmInfoGroup.setLayout(new GridLayout(2, false));


		// image name info
		Label imageNameCaption = new Label(vmInfoGroup, SWT.NONE);
		imageSelectedNameLabel = new Text(vmInfoGroup, SWT.READ_ONLY);

		imageNameCaption.setText("Image Name:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		imageSelectedNameLabel.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				String s = selectedElement.getImageName();
				if (s == null) {
					imageSelectedNameLabel.setText("Unknown");
				} else {
					imageSelectedNameLabel.setText(s);
				}
			}
		});


		// id info
		Label idInfoCaption = new Label(vmInfoGroup, SWT.NONE);
		idInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		idInfoCaption.setText("ID:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		idInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				String s = selectedElement.getImageBaseId();
				if (s == null) {
					idInfo.setText("Unknown");
				} else {
					idInfo.setText(s);
				}
			}
		});
		
		
		Label versionInfoCaption = new Label(vmInfoGroup, SWT.NONE);
		versionInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		versionInfoCaption.setText("Version:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		versionInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				String s = selectedElement.getCurrentVersionId();
				if (s == null) {
					versionInfo.setText("Unknown");
				} else {
					versionInfo.setText(s);
				}
			}
		});


		Label lastUpdateInfoCaption = new Label(vmInfoGroup, SWT.NONE);
		lastUpdateInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		lastUpdateInfoCaption.setText("Letztes Update:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		lastUpdateInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				long unixTimestamp = selectedElement.getUpdateTime();


				if (unixTimestamp == 0) {
					lastUpdateInfo.setText("Unknown");
				} else {
					Date date = new Date(unixTimestamp*1000L);
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
					String formattedDate = sdf.format(date);
					lastUpdateInfo.setText(formattedDate);
				}
			}
		});

		Label permissionInfoCaption = new Label(vmInfoGroup, SWT.NONE);
		permissionInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		permissionInfoCaption.setText("Berechtigungen:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		permissionInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				ImagePermissions p =selectedElement.getUserPermissions();
				if (p != null){
					String s = p.toString();
					if (s == null) {
						permissionInfo.setText("Unknown");
					} else {
						permissionInfo.setText(s);
					}
				} else {
					permissionInfo.setText("Unknown");
				}

			}
		});


		Label ownerInfoCaption = new Label(vmInfoGroup, SWT.NONE);
		ownerInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		ownerInfoCaption.setText("Besitzer ID:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		ownerInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();

				String s = selectedElement.getOwnerId();

				if (s != null) {
					ownerInfo.setText(s);
				} else {
					ownerInfo.setText("Unknown");
				}

			}
		});

		Label templateCaption = new Label(vmInfoGroup, SWT.NONE);
		templateInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
		templateCaption.setText("Vorlage:");
		buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
		buttonComositeGridData.minimumWidth = 100;
		templateInfo.setLayoutData(buttonComositeGridData);

		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection)
						tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();

				if (selectedElement.isTemplate) {
					templateInfo.setText("ja");
				} else {
					templateInfo.setText("Nein");
				}
			}
		});


		newButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				ImageWizard wizard = new ImageWizard(false);
				WizardDialog wd = new WizardDialog(getShell(), wizard);
				wd.open();
			}
		});

		editButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				ImageWizard wizard = new ImageWizard(true);
				WizardDialog wd = new WizardDialog(getShell(), wizard);
				wd.open();
			}
		});


	}
}