summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureImageListPage.java
blob: 1c35df7ba9ba110ac46550263411f1bd4545a936 (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.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.control.table.ImageTable;
import org.openslx.dozmod.gui.helper.I18n;
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.dozmod.util.ContainerUtils;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;

/**
 * Page for choosing the linked image for the lecture to be created
 */
public class LectureImageListPage extends LectureImageListPageLayout {

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

	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 (ContainerUtils.isContainerImageLinked(selected)) {
			setErrorMessage(I18n.PAGE.getString("LectureImageList.WizardPage.errorMessage.containerLinkedWithLecture"));
			return false;
		}
		else if (selected != null && selected.isValid && ImagePerms.canLink(selected)) {
			state.image = selected;
			state.imageVersionId = selected.getLatestVersionId();
			setDescription(I18n.PAGE.getString("LectureImageList.WizardPage.description"));
			return true;
		}
		if (selected != null && ImagePerms.canLink(selected)) {
			setErrorMessage(I18n.PAGE.getString("LectureImageList.WizardPage.errorMessage.noPerms"));
		} else {
			setErrorMessage(I18n.PAGE.getString("LectureImageList.WizardPage.errorMessage.invalidVM"));
		}
		return false;
	}

}