summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
blob: 9c9ec2e78184f3106e51edeb74335f5ff352b45c (plain) (tree)
1
2
3
4
5
6
7
8





                                                     
                                               
                                             




























                                                                                        
                                                                      



                                                                      























































                                                                                                                                 
                                              



                                                   
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.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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 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;
		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().layout(true, true);
		MainWindow.centerShell(getShell());
	}

}