blob: 66a1a32160b1e03565bbb2719edd22a26087f491 (
plain) (
tree)
|
|
package org.openslx.dozmod.gui.window;
import java.awt.Window;
import java.util.List;
import org.apache.log4j.Logger;
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.permissions.ImagePerms;
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(Window parent) {
super(parent);
// Close button closes window
btnClose.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
getShell().dispose();
}
});
}
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;
txtTitle.setText(SwtUtil.replaceMnemonics(image.getImageName()));
txtDescription.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());
String tagsString = "";
for (String tag : image.getTags()) {
tagsString = tagsString + ", " + tag;
}
txtTags.setText(tagsString);
btnIsTemplate.setSelection(image.isTemplate);
makeEditable(ImagePerms.canEdit(image));
getShell().layout(true, true);
MainWindow.centerShell(getShell());
}
// make text fields editable if allowed
private void makeEditable(boolean editable){
txtTitle.setEnabled(editable);
txtDescription.setEnabled(editable);
cboOperatingSystem.getCombo().setEnabled(editable);
txtTags.setEnabled(editable);
btnIsTemplate.setEnabled(editable);
}
}
|