diff options
author | Simon Rettberg | 2015-07-17 17:20:38 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-07-17 17:20:38 +0200 |
commit | 7844be5e4d74612e9aff44c5aab09d4f6e5d2631 (patch) | |
tree | 2605abdf19b146b22feda18a3256e3e031c677eb /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | |
parent | [client] first steps in ImagePermissions page (diff) | |
download | tutor-module-7844be5e4d74612e9aff44c5aab09d4f6e5d2631.tar.gz tutor-module-7844be5e4d74612e9aff44c5aab09d4f6e5d2631.tar.xz tutor-module-7844be5e4d74612e9aff44c5aab09d4f6e5d2631.zip |
[client] Add image details window
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java new file mode 100644 index 00000000..22f3297c --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -0,0 +1,107 @@ +package org.openslx.dozmod.gui.window; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Shell; +import org.openslx.bwlp.thrift.iface.ImageDetailsRead; +import org.openslx.bwlp.thrift.iface.OperatingSystem; +import org.openslx.bwlp.thrift.iface.Virtualizer; +import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.MainWindow; +import org.openslx.dozmod.gui.helper.MessageType; +import org.openslx.dozmod.gui.helper.SwtUtil; +import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout; +import org.openslx.dozmod.thrift.MetaDataCache; +import org.openslx.dozmod.thrift.Session; +import org.openslx.dozmod.thrift.UserCache; +import org.openslx.dozmod.util.FormatHelper; +import org.openslx.thrifthelper.ThriftManager; +import org.openslx.util.QuickTimer; +import org.openslx.util.QuickTimer.Task; + +public class ImageDetailsWindow extends ImageDetailsWindowLayout { + + private static final Logger LOGGER = Logger.getLogger(ImageDetailsWindow.class); + + private final ImageDetailsWindow me = this; + + private ImageDetailsRead image = null; + + public ImageDetailsWindow(Shell parent) { + super(parent); + + // Close button closes window + btnClose.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + getShell().dispose(); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + } + }); + } + + public void setImage(final String imageBaseId) { + QuickTimer.scheduleOnce(new Task() { + @Override + public void fire() { + Exception error = null; + try { + synchronized (me) { + if (image != null) + return; + image = ThriftManager.getSatClient().getImageDetails(Session.getSatelliteToken(), + imageBaseId); + } + } catch (Exception e) { + error = e; + } + // Just prime the cache... + MetaDataCache.getOperatingSystems(); + MetaDataCache.getVirtualizers(); + final Exception e = error; + Gui.asyncExec(new Runnable() { + @Override + public void run() { + if (e != null || image == null) { + MainWindow.showMessageBox("Konnte Daten des Images nicht abrufen", + MessageType.ERROR, LOGGER, e); + getShell().dispose(); + } else { + fill(); + } + } + }); + } + }); + } + + private void fill() { + if (isDisposed() || image == null) + return; + lblTitle.setText(SwtUtil.replaceMnemonics(image.getImageName())); + lblDescription.setText(SwtUtil.replaceMnemonics(image.getDescription())); + lblOwner.setUser(UserCache.find(image.getOwnerId())); + lblUpdater.setUser(UserCache.find(image.getUpdaterId())); + lblCreateTime.setText(FormatHelper.longDate(image.getCreateTime())); + lblUpdateTime.setText(FormatHelper.longDate(image.getUpdateTime())); + List<OperatingSystem> osList = MetaDataCache.getOperatingSystems(); + cboOperatingSystem.setInput(osList); + OperatingSystem os = MetaDataCache.getOsById(image.getOsId()); + if (os != null) { + cboOperatingSystem.setSelection(new StructuredSelection(os), true); + } + Virtualizer virt = MetaDataCache.getVirtualizerById(image.getVirtId()); + if (virt != null) + lblVirtualizer.setText(virt.getVirtName()); + getShell().pack(); + MainWindow.centerShell(getShell()); + } + +} |