package org.openslx.dozmod.gui.window.layout;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.helper.GuiManager;
import org.openslx.dozmod.gui.helper.TableHelper;
import org.openslx.dozmod.gui.wizard.ImageWizard;
public abstract class ImageListWindowLayout extends Composite {
protected String infoTitleString = "Imageauswahl";
protected String newButtonLabel = "Neu";
protected String editButtonLabel = "Bearbeiten";
protected String deleteButtonLabel = "Löschen";
protected String downloadButtonLabel = "Download";
protected String tableGroupLabel = "Images";
protected String vmInfoGroupLabel = "Detailinformationen";
// buttons
protected Button newButton;
protected Button deleteButton;
protected Button editButton;
protected Button downloadButton;
// imageDetail texts
protected Text imageSelectedNameLabel;
protected Text idInfo;
protected Text versionInfo;
protected Text lastUpdateInfo;
protected Text permissionInfo;
protected Text ownerInfo;
protected Text templateInfo;
protected final TableViewer tableViewer;
protected String infoTextString = "Hier können Sie images erstellen, bearbeiten und löschen.";
public ImageListWindowLayout(final Composite mainShell) {
super(mainShell, SWT.NONE);
// the layout and layoutData of the ImageListWindow
this.setLayout(new GridLayout(2, false));
this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// info group with title and text
Composite infoComposite = new Composite(this, SWT.BORDER);
GridData infoGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
infoGridData.horizontalSpan = 2;
infoComposite.setLayoutData(infoGridData);
// layout for the items of the group
infoComposite.setLayout(new GridLayout(1, false));
// title of the info group in bold
Label infoTitle = new Label(infoComposite, SWT.NONE);
infoTitle.setText(infoTitleString);
// set the fond
FontData fontData = infoTitle.getFont().getFontData()[0];
Font font = new Font(GuiManager.getDisplay(), new FontData(fontData.getName(), fontData
.getHeight(), SWT.BOLD));
infoTitle.setFont(font);
// the infotext
Label infoText = new Label(infoComposite, SWT.NONE);
infoText.setText(infoTextString);
// group for the table
Group tableGroup = new Group(this, SWT.BORDER);
tableGroup.setText(tableGroupLabel);
tableGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
tableGroup.setLayout(new GridLayout(3, true));
// jface tableviewer on swt table
Table vmTable = new Table(tableGroup, SWT.BORDER | SWT.V_SCROLL
| SWT.H_SCROLL);
GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
tableGridData.horizontalSpan = 3;
tableGridData.minimumWidth = 200;
vmTable.setLayoutData(tableGridData);
vmTable.setHeaderVisible(true);
vmTable.setLinesVisible(true);
// TableViewer on the table
tableViewer = new TableViewer(vmTable);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
// create, modify, download and delete buttons
Composite buttonComposite = new Composite(tableGroup, SWT.NONE);
GridData buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.horizontalSpan = 4;
buttonComositeGridData.minimumWidth = 200;
buttonComposite.setLayoutData(buttonComositeGridData);
buttonComposite.setLayout(new RowLayout());
newButton = new Button(buttonComposite, SWT.PUSH);
newButton.setText(newButtonLabel);
editButton = new Button(buttonComposite, SWT.PUSH);
editButton.setText(editButtonLabel);
deleteButton = new Button(buttonComposite, SWT.PUSH);
deleteButton.setText(deleteButtonLabel);
downloadButton = new Button(buttonComposite, SWT.PUSH);
downloadButton.setText(downloadButtonLabel);
// group for the info of the selected image in the tableViewer
Group vmInfoGroup = new Group(this, SWT.BORDER);
vmInfoGroup.setText(vmInfoGroupLabel);
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 300;
vmInfoGroup.setLayoutData(buttonComositeGridData);
vmInfoGroup.setLayout(new GridLayout(2, false));
// image name info
Label imageNameCaption = new Label(vmInfoGroup, SWT.NONE);
imageSelectedNameLabel = new Text(vmInfoGroup, SWT.READ_ONLY);
imageNameCaption.setText("Image Name:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
imageSelectedNameLabel.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
String s = selectedElement.getImageName();
if (s == null) {
imageSelectedNameLabel.setText("Unknown");
} else {
imageSelectedNameLabel.setText(s);
}
}
});
// id info
Label idInfoCaption = new Label(vmInfoGroup, SWT.NONE);
idInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
idInfoCaption.setText("ID:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
idInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
String s = selectedElement.getImageBaseId();
if (s == null) {
idInfo.setText("Unknown");
} else {
idInfo.setText(s);
}
}
});
Label versionInfoCaption = new Label(vmInfoGroup, SWT.NONE);
versionInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
versionInfoCaption.setText("Version:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
versionInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
String s = selectedElement.getCurrentVersionId();
if (s == null) {
versionInfo.setText("Unknown");
} else {
versionInfo.setText(s);
}
}
});
Label lastUpdateInfoCaption = new Label(vmInfoGroup, SWT.NONE);
lastUpdateInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
lastUpdateInfoCaption.setText("Letztes Update:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
lastUpdateInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
long unixTimestamp = selectedElement.getUpdateTime();
if (unixTimestamp == 0) {
lastUpdateInfo.setText("Unknown");
} else {
Date date = new Date(unixTimestamp*1000L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(date);
lastUpdateInfo.setText(formattedDate);
}
}
});
Label permissionInfoCaption = new Label(vmInfoGroup, SWT.NONE);
permissionInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
permissionInfoCaption.setText("Berechtigungen:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
permissionInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
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");
}
}
});
Label ownerInfoCaption = new Label(vmInfoGroup, SWT.NONE);
ownerInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
ownerInfoCaption.setText("Besitzer ID:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
ownerInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
String s = selectedElement.getOwnerId();
if (s != null) {
ownerInfo.setText(s);
} else {
ownerInfo.setText("Unknown");
}
}
});
Label templateCaption = new Label(vmInfoGroup, SWT.NONE);
templateInfo = new Text(vmInfoGroup, SWT.READ_ONLY);
templateCaption.setText("Vorlage:");
buttonComositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
buttonComositeGridData.minimumWidth = 100;
templateInfo.setLayoutData(buttonComositeGridData);
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)
tableViewer.getSelection();
ImageSummaryRead selectedElement = (ImageSummaryRead) selection.getFirstElement();
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();
}
});
}
}