summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureImageListPage.java
blob: f19ab593c2ebd5ee089c42b1efdc9fc59493402a (plain) (tree)
1
2
3
4
5
6
7
8
9

                                           



                                   


                                               




                                                                       
                                                 
                                                   


                                                  
 


                                                                   




                                                                                          
                                                


                                                      
                                                                           



                                                           
                                                                                    

                                   
                                       


                                                                            





                                                                                                     






                                                     







                                                                                                    



                                      
                                                   
         
 

                                                                             

                                                                                





                                            
 

                                              
                                          
         
 

                                                                         
                                                                                           
                                               

                                                                             

                                    




                                                                                                      



                             
package org.openslx.dozmod.gui.wizard.page;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.control.table.ImageTable;
import org.openslx.dozmod.gui.wizard.Wizard;
import org.openslx.dozmod.gui.wizard.layout.LectureImageListPageLayout;
import org.openslx.dozmod.permissions.ImagePerms;
import org.openslx.dozmod.state.LectureWizardState;
import org.openslx.dozmod.thrift.cache.ImageCache;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;

/**
 * Page for choosing the linked image for the lecture to be created
 */
@SuppressWarnings("serial")
public class LectureImageListPage extends LectureImageListPageLayout {

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

	private LectureWizardState state = null;
	/**
	 * The image table held by the ImageListViewer
	 */
	private final ImageTable imageTable = ctlImageList.getImageTable();

	/**
	 * Page for setting custom permissions of a lecture
	 */
	public LectureImageListPage(final Wizard wizard, LectureWizardState state) {
		super(wizard);
		this.state = state;
		setPageComplete(false);
		imageTable.setColumnVisible(ImageTable.COL_OS, false);
		imageTable.setColumnVisible(ImageTable.COL_TEMPLATE, false);
		imageTable.setColumnVisible(ImageTable.COL_SIZE, false);
		imageTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
			@Override
			public void valueChanged(ListSelectionEvent e) {
				reactToUserInput();
			}
		});
		QuickTimer.scheduleOnce(new Task() {

			@Override
			public void fire() {
				ImageCache.get(true);
			}
		});
		imageTable.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) {
					wizard.doNext();
				}
			}
		});
	}

	@Override
	protected void onPageEnter() {
		ctlImageList.refreshList(false, 1);
	}

	/**
	 * Called by event listeners. This will set guidance message or error
	 * message and call setPageComplete(bool) accordingly. The state will be
	 * updated if the fields are valid.
	 */
	private boolean reactToUserInput() {
		boolean b = isPageValid();
		setPageComplete(b);
		return b;
	}

	@Override
	protected boolean wantNextOrFinish() {
		return reactToUserInput();
	}

	private boolean isPageValid() {
		ImageSummaryRead selected = imageTable.getSelectedItem();
		if (selected != null && selected.isValid && ImagePerms.canLink(selected)) {
			state.image = selected;
			state.imageVersionId = selected.getLatestVersionId();
			setDescription("Klicken Sie auf 'Weiter'");
			return true;
		}
		if (selected != null && ImagePerms.canLink(selected)) {
			setErrorMessage("Unzureichende Berechtigungen um auf diese VM zu verlinken.");
		} else {
			setErrorMessage("Ungültige VM ausgewählt");
		}
		return false;
	}

}