blob: b00bfbd7d686fe6ec7d945a7ba75e9127a260923 (
plain) (
tree)
|
|
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 (ContainerUtils.isDataContainer(selected)) {
setErrorMessage(I18n.PAGE.getString("LectureImageList.WizardPage.errorMessage.imageIsDataContainer"));
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;
}
}
|