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

                                      

                                  

                      
                               



                                                           

                                         

                                               
                                     
                                                      
                                                      
                                         
                                         

                                                         
                                                 
                                                 
                                                                  
                                                 
                                            



                                              


                                                            



                                                                                     


                                                       


















                                                                                     



                                                                                         
                                                                                                                   
                                                                                                                  
                                                                    



























                                                                                                
                                                                                    
                                                                                                  




                                                                                

                                                                                          


























                                                                                  
















                                                                                       




                                                                            









                                                                                                                     

                                                                    

                                                            
                                                                   

                                                                                                        
                                                                                                                                  
                                                                       
                                                              
                                                 
                                                                       


                                                                                      
                                                                                          





                                                         
         
 
                                       
                                                                         
 




                                                









                               


                                                                                                                                
                        


                                                                                                                
        



                                                                                                   
 
package org.openslx.dozmod.gui.window;

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

import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Shell;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.Gui;
import org.openslx.dozmod.gui.helper.ImageListComparator;
import org.openslx.dozmod.gui.helper.ImageListFilter;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.TableHelper;
import org.openslx.dozmod.gui.window.layout.ImageListWindowLayout;
import org.openslx.dozmod.gui.wizard.ImageWizard;
import org.openslx.dozmod.thrift.ImageCache;
import org.openslx.dozmod.thrift.Session;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;

public class ImageListWindow extends ImageListWindowLayout {

	private final static Logger LOGGER = Logger.getLogger(ImageListWindow.class);

	public final ImageListWindow me = this;

	public ImageListWindow(final Shell mainShell) {
		super(mainShell);

		// Comparator for column sorting
		ImageListComparator comparator = new ImageListComparator();
		tableViewer.setComparator(comparator);
		// creating the columns with sorting functionality through comparator
		TableHelper.createImageTableColumns(tableViewer);

		// filter the objects in the table depending on the search field
		searchTextField.addKeyListener(new KeyAdapter() {
			public void keyReleased(KeyEvent ke) {
				filter.setSearchText(searchTextField.getText());
				tableViewer.refresh();
			}

		});

		// apply object filtering
		filter = new ImageListFilter();
		tableViewer.addFilter(filter);

		// the listeners to set the detailed info of the selected image
		tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
				ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
				if (selectedElement == null) return;
				String imageName = selectedElement.getImageName();
				if (imageName == null) {
					imageSelectedNameLabel.setText("Unknown");
				} else {
					imageSelectedNameLabel.setText(imageName);
				}

				// set the image
				String imageBaseId = selectedElement.getImageBaseId();
				if (imageBaseId == null) {
					idInfo.setText("Unknown");
				} else {
					idInfo.setText(imageBaseId);
				}

				// set the current version of the image
				String currentVersionId = selectedElement.getCurrentVersionId();
				if (currentVersionId == null) {
					versionInfo.setText("Unknown");
				} else {
					versionInfo.setText(currentVersionId);
				}

				// set the time, the image has last been updated
				long unixTimestamp = selectedElement.getUpdateTime();
				if (unixTimestamp == 0) {
					lastUpdateInfo.setText("Unknown");
				} else {
					Date date = new Date(unixTimestamp * 1000L);
					SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
					String formattedDate = sdf.format(date);
					lastUpdateInfo.setText(formattedDate);
				}

				// info about the image permissions
				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");
				}

				// the owner id of the selected image
				String ownerId = selectedElement.getOwnerId();
				if (ownerId != null) {
					ownerInfo.setText(ownerId);
				} else {
					ownerInfo.setText("Unknown");
				}

				// set the template info
				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();
			}
		});
		//deleteImageVersion
		deleteButton.setData(getCurrentImageSummaryRead());
		deleteButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(final SelectionEvent e) {
				IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
				if (selection == null) {
					MainWindow.showMessageBox("SELECIT ONULL!", MessageType.ERROR, LOGGER, null);
					return;
				}
				final ImageSummaryRead image = (ImageSummaryRead) selection.getFirstElement();
				if (image == null) {
					MainWindow.showMessageBox("IMAGE ONULL!", MessageType.ERROR, LOGGER, null);
					return;
				}
				// TODO FIX THIS PIECE OF SHIT
				QuickTimer.scheduleOnce(new Task() {
					@Override
					public void fire() {
						Throwable t = null;
						try {
							ThriftManager.getSatClient().deleteImageVersion(
									Session.getSatelliteToken(), image.getCurrentVersionId());
						} catch (Exception e) {
							t = e;
						}
						final Throwable t2 = t;
						Gui.display.asyncExec(new Runnable() {
							@Override
							public void run() {
								deleteCallback(image, t2);
							}
						});
					}
				});
			}
		});
	}

	private boolean refreshList() {
		List<ImageSummaryRead> imageList = ImageCache.get(false);

		tableViewer.setInput(imageList);
		tableViewer.refresh();
		return true;
	}

	@Override
	public boolean hide() {
		return true;
	}

	@Override
	public void show() {
		refreshList();
	}

	public void deleteCallback(ImageSummaryRead image, Throwable t) {
		if (t == null) {
			Gui.showMessageBox(getShell(), "Deleted image with UUID '" + image + "'.", MessageType.INFO, LOGGER, t);
		} else {
			Gui.showMessageBox(getShell(), "Failed to delete image!", MessageType.ERROR, LOGGER, t);
		}
	}
	
	public ImageSummaryRead getCurrentImageSummaryRead() {
		IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
		return (ImageSummaryRead) selection.getFirstElement();
	}
}