|
|
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();
}
}
|