summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java
diff options
context:
space:
mode:
authorJonathan Bauer2015-07-29 16:30:06 +0200
committerJonathan Bauer2015-07-29 16:30:06 +0200
commit0fd45fd49c96307923b3f5e373bd39a6f46c16a8 (patch)
tree816d3394252058f837707a5eba3910d5cbdd45eb /dozentenmodul/src/main/java
parent[client] moved TableRenderer (to remove the dotted border around selected cel... (diff)
downloadtutor-module-0fd45fd49c96307923b3f5e373bd39a6f46c16a8.tar.gz
tutor-module-0fd45fd49c96307923b3f5e373bd39a6f46c16a8.tar.xz
tutor-module-0fd45fd49c96307923b3f5e373bd39a6f46c16a8.zip
[client] ImageListLayout using ImageTable (no functions yet!)
Diffstat (limited to 'dozentenmodul/src/main/java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java27
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java293
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java297
3 files changed, 284 insertions, 333 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java
new file mode 100644
index 00000000..adf548f1
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java
@@ -0,0 +1,27 @@
+package org.openslx.dozmod.gui.control.table;
+
+import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
+import org.openslx.bwlp.thrift.iface.LectureSummary;
+import org.openslx.dozmod.thrift.UserCache;
+import org.openslx.dozmod.util.FormatHelper;
+
+@SuppressWarnings("serial")
+public class ImageTable extends ListTable<ImageSummaryRead> {
+
+ private static String[] columnNames = { "Name", "Verantwortlicher" };
+
+ public ImageTable() {
+ super(columnNames);
+ }
+
+ @Override
+ protected Object getValueAtInternal(int rowIndex, int columnIndex) {
+ ImageSummaryRead row = get(rowIndex);
+ if (columnIndex == 0)
+ return row.getImageName();
+ if (columnIndex == 1)
+ return FormatHelper.userName(UserCache.find(row.getOwnerId()));
+ throw new IndexOutOfBoundsException();
+ }
+
+}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
index 5756b367..0e3aa56c 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
@@ -4,7 +4,6 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
-import javax.swing.RowFilter;
import javax.swing.RowSorter;
import javax.swing.RowSorter.SortKey;
import javax.swing.SortOrder;
@@ -14,27 +13,12 @@ import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableRowSorter;
import org.apache.log4j.Logger;
-import org.eclipse.jface.window.Window;
-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.eclipse.swt.widgets.Text;
-import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
-import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.dozmod.gui.Gui;
-import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.ImageTableModel;
-import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.TableColumnAdjuster;
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.UserCache;
-import org.openslx.dozmod.util.FormatHelper;
public class ImageListWindow extends ImageListWindowLayout {
@@ -44,121 +28,118 @@ public class ImageListWindow extends ImageListWindowLayout {
public ImageListWindow() {
super();
-
- ImageTableModel itm = new ImageTableModel();
- sorter.setSortsOnUpdates(true);
- sorter.setModel(itm);
- ArrayList<SortKey> list = new ArrayList<SortKey>();
- list.add( new RowSorter.SortKey(0, SortOrder.ASCENDING) );
- sorter.setSortKeys(list);
- jtable.setRowSorter(sorter);
- jtable.setModel(itm);
- // SWING TABLE STUFF
- jtable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- int rowIndex = jtable.getSelectedRow();
- if (rowIndex == -1)
- return;
- ImageTableModel model = (ImageTableModel) jtable.getModel();
- final ImageSummaryRead image = model.get(jtable.convertRowIndexToModel(rowIndex));
- LOGGER.debug(image);
- if (image == null)
- return;
- Gui.asyncExec(new Runnable() {
- public void run() {
- updateDetailPane(image);
- }
- });
- }
- });
- jtable.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent me) {
- if (me.getClickCount() == 2) {
- int rowIndex = jtable.getSelectedRow();
- if (rowIndex == -1)
- return;
- ImageTableModel model = (ImageTableModel) jtable.getModel();
- final ImageSummaryRead image = model.get(jtable.convertRowIndexToModel(rowIndex));
- LOGGER.debug(image);
- if (image == null)
- return;
- Gui.asyncExec(new Runnable() {
- public void run() {
- ImageDetailsWindow popup = MainWindow.openPopup(ImageDetailsWindow.class, true, false);
- if (popup != null)
- popup.setImage(image.getImageBaseId());
- }
- });
- }
- }
- });
- // filter the objects in the table depending on the search field
- searchTextField.addKeyListener(new KeyAdapter() {
+ ImageTableModel itm = new ImageTableModel();
+ sorter.setSortsOnUpdates(true);
+ sorter.setModel(itm);
+ ArrayList<SortKey> list = new ArrayList<SortKey>();
+ list.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
+ sorter.setSortKeys(list);
+ imageTable.setRowSorter(sorter);
+ imageTable.setModel(itm);
+ // SWING TABLE STUFF
+ imageTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
- public void keyReleased(KeyEvent ke) {
- final String term = searchTextField.getText();
- SwingUtilities.invokeLater(new Runnable() {
- @Override
+ public void valueChanged(ListSelectionEvent e) {
+ int rowIndex = imageTable.getSelectedRow();
+ if (rowIndex == -1)
+ return;
+ ImageTableModel model = (ImageTableModel) imageTable.getModel();
+ final ImageSummaryRead image = model.get(imageTable.convertRowIndexToModel(rowIndex));
+ LOGGER.debug(image);
+ if (image == null)
+ return;
+ Gui.asyncExec(new Runnable() {
public void run() {
- RowFilter<ImageTableModel, Object> filter = null;
- try {
- filter = RowFilter.regexFilter(".*" + term + ".*");
- } catch (java.util.regex.PatternSyntaxException e) {
- return;
- }
- sorter.setRowFilter(filter);
- }});
+ // updateDetailPane(image);
+ }
+ });
}
});
-
- newButton.addSelectionListener(new SelectionAdapter() {
+ imageTable.addMouseListener(new MouseAdapter() {
@Override
- public void widgetSelected(SelectionEvent e) {
- ImageWizard wizard = new ImageWizard(false);
- WizardDialog wd = new WizardDialog(getShell(), wizard);
- refreshList(wd.open() == Window.OK);
+ public void mouseClicked(MouseEvent me) {
+ if (me.getClickCount() == 2) {
+ int rowIndex = imageTable.getSelectedRow();
+ if (rowIndex == -1)
+ return;
+ ImageTableModel model = (ImageTableModel) imageTable.getModel();
+ final ImageSummaryRead image = model.get(imageTable.convertRowIndexToModel(rowIndex));
+ LOGGER.debug(image);
+ if (image == null)
+ return;
+ // Gui.asyncExec(new Runnable() {
+ // public void run() {
+ // ImageDetailsWindow popup =
+ // MainWindow.showPage(ImageDetailsWindow.class);
+ // if (popup != null)
+ // popup.setImage(image.getImageBaseId());
+ // }
+ // });
+ }
}
});
-// editButton.addSelectionListener(new SelectionAdapter() {
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// ImageWizard wizard = new ImageWizard(true);
-// WizardDialog wd = new WizardDialog(getShell(), wizard);
-// refreshList(wd.open() == Window.OK);
-// }
-// });
-
-
- // return to mainMenu
- backButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
-// MainWindow.showPage(MainMenuWindow.class);
- refreshList(true);
- }
- });
-
-
+ // // filter the objects in the table depending on the search field
+ // searchTextField.addKeyListener(new KeyAdapter() {
+ // @Override
+ // public void keyReleased(KeyEvent ke) {
+ // final String term = searchTextField.getText();
+ // SwingUtilities.invokeLater(new Runnable() {
+ // @Override
+ // public void run() {
+ // RowFilter<ImageTableModel, Object> filter = null;
+ // try {
+ // filter = RowFilter.regexFilter(".*" + term + ".*");
+ // } catch (java.util.regex.PatternSyntaxException e) {
+ // return;
+ // }
+ // sorter.setRowFilter(filter);
+ // }});
+ // }
+ // });
+ //
+ // newButton.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // ImageWizard wizard = new ImageWizard(false);
+ // WizardDialog wd = new WizardDialog(getShell(), wizard);
+ // refreshList(wd.open() == Window.OK);
+ // }
+ // });
+ //
+ //// editButton.addSelectionListener(new SelectionAdapter() {
+ //// @Override
+ //// public void widgetSelected(SelectionEvent e) {
+ //// ImageWizard wizard = new ImageWizard(true);
+ //// WizardDialog wd = new WizardDialog(getShell(), wizard);
+ //// refreshList(wd.open() == Window.OK);
+ //// }
+ //// });
+ //
+ //
+ // // return to mainMenu
+ // backButton.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ //// MainWindow.showPage(MainMenuWindow.class);
+ // refreshList(true);
+ // }
+ // });
}
private void refreshList(final boolean forceRefresh) {
- if (isDisposed())
- return;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- ImageTableModel itm = (ImageTableModel) jtable.getModel();
+ ImageTableModel itm = (ImageTableModel) imageTable.getModel();
itm.setItems(ImageCache.get(forceRefresh));
itm.fireTableDataChanged();
-
+
if (sorter.getSortKeys().isEmpty()) {
ArrayList<SortKey> list = new ArrayList<SortKey>();
- list.add( new RowSorter.SortKey(0, SortOrder.ASCENDING) );
+ list.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sorter.setSortKeys(list);
LOGGER.debug("Sortkeys: " + sorter.getSortKeys().get(0).getColumn());
} else {
@@ -166,7 +147,7 @@ public class ImageListWindow extends ImageListWindowLayout {
}
sorter.sort();
- TableColumnAdjuster tca = new TableColumnAdjuster(jtable);
+ TableColumnAdjuster tca = new TableColumnAdjuster(imageTable);
tca.adjustColumns();
}
@@ -183,47 +164,49 @@ public class ImageListWindow extends ImageListWindowLayout {
refreshList(false);
}
- private void deleteCallback(ImageSummaryRead image, Throwable t) {
- if (t == null) {
- Gui.showMessageBox("Deleted image with UUID '" + image + "'.", MessageType.INFO,
- LOGGER, t);
- } else {
- Gui.showMessageBox("Failed to delete image!", MessageType.ERROR, LOGGER, t);
- }
- }
-
- private void updateDetailPane(ImageSummaryRead image) {
- // -- Set details --
- // set the image name
- setFieldText(imageSelectedNameLabel, image.getImageName());
- // set the image
- setFieldText(idInfo, image.getImageBaseId());
- // set the current version of the image
- setFieldText(versionInfo, image.getCurrentVersionId());
- // set the time, the image has last been updated
- lastUpdateInfo.setText(FormatHelper.shortDate(image.getUpdateTime()));
- // info about the image permissions
- ImagePermissions perms = image.getUserPermissions();
- if (perms == null)
- perms = image.getDefaultPermissions();
- if (perms != null)
- setFieldText(permissionInfo, perms.toString());
- // the owner id of the selected image
- UserInfo user = UserCache.find(image.getOwnerId());
- setFieldText(ownerInfo, FormatHelper.userName(user));
- // set the template info
- if (image.isTemplate) {
- templateInfo.setText("ja");
- } else {
- templateInfo.setText("Nein");
- }
- }
-
- private void setFieldText(Text control, String content) {
- if (content == null) {
- control.setText("<null>");
- } else {
- control.setText(content);
- }
- }
+ // private void deleteCallback(ImageSummaryRead image, Throwable t) {
+ // if (t == null) {
+ // Gui.showMessageBox("Deleted image with UUID '" + image + "'.",
+ // MessageType.INFO,
+ // LOGGER, t);
+ // } else {
+ // Gui.showMessageBox("Failed to delete image!", MessageType.ERROR, LOGGER,
+ // t);
+ // }
+ // }
+ //
+ // private void updateDetailPane(ImageSummaryRead image) {
+ // // -- Set details --
+ // // set the image name
+ // setFieldText(imageSelectedNameLabel, image.getImageName());
+ // // set the image
+ // setFieldText(idInfo, image.getImageBaseId());
+ // // set the current version of the image
+ // setFieldText(versionInfo, image.getCurrentVersionId());
+ // // set the time, the image has last been updated
+ // lastUpdateInfo.setText(FormatHelper.shortDate(image.getUpdateTime()));
+ // // info about the image permissions
+ // ImagePermissions perms = image.getUserPermissions();
+ // if (perms == null)
+ // perms = image.getDefaultPermissions();
+ // if (perms != null)
+ // setFieldText(permissionInfo, perms.toString());
+ // // the owner id of the selected image
+ // UserInfo user = UserCache.find(image.getOwnerId());
+ // setFieldText(ownerInfo, FormatHelper.userName(user));
+ // // set the template info
+ // if (image.isTemplate) {
+ // templateInfo.setText("ja");
+ // } else {
+ // templateInfo.setText("Nein");
+ // }
+ // }
+ //
+ // private void setFieldText(Text control, String content) {
+ // if (content == null) {
+ // control.setText("<null>");
+ // } else {
+ // control.setText(content);
+ // }
+ // }
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java
index c817a9fb..e7ff4242 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java
@@ -1,211 +1,152 @@
package org.openslx.dozmod.gui.window.layout;
import java.awt.BorderLayout;
-import java.awt.Frame;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JLabel;
import javax.swing.JPanel;
-import javax.swing.JRootPane;
import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
import javax.swing.JTable;
+import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
+import javax.swing.border.TitledBorder;
import org.apache.log4j.Logger;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.awt.SWT_AWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-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.Text;
-import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.control.table.ImageTable;
import org.openslx.dozmod.gui.helper.CompositePage;
+import org.openslx.dozmod.gui.helper.GridPos;
import org.openslx.dozmod.gui.helper.ResizeColumnListener;
-import org.openslx.dozmod.gui.helper.TableRenderer;
+
public abstract class ImageListWindowLayout extends CompositePage {
private final static Logger LOGGER = Logger.getLogger(ImageListWindowLayout.class);
- protected String infoTitleString = "Übersicht Virtuelle Maschinen";
- protected String newButtonLabel = "Neu";
- protected String editButtonLabel = "Bearbeiten";
- protected String deleteButtonLabel = "Löschen";
- protected String downloadButtonLabel = "Download";
- protected String backButtonLabel = "Zurück";
- protected String tableGroupLabel = "Images";
- protected String vmInfoGroupLabel = "Detailinformationen";
- protected String filterGroupLabel = "Filter";
+ protected final static String infoTitleString = "Übersicht Virtuelle Maschinen";
+ protected final static String newButtonLabel = "Neu";
+ protected final static String editButtonLabel = "Bearbeiten";
+ protected final static String deleteButtonLabel = "Löschen";
+ protected final static String downloadButtonLabel = "Download";
+ protected final static String backButtonLabel = "Zurück";
+ protected final static String tableGroupLabel = "Images";
+ protected final static String vmInfoGroupLabel = "Detailinformationen";
+ protected final static String filterGroupLabel = "Filter";
// buttons
- protected Button newButton;
- protected Button deleteButton;
- protected Button downloadButton;
- protected Button backButton;
-
+ protected JButton newButton;
+ protected JButton deleteButton;
+ protected JButton downloadButton;
+ protected JButton backButton;
// 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 Text searchTextField;
-
- protected JTable jtable;
+ protected JTextField imageSelectedNameLabel;
+ protected JTextField idInfo;
+ protected JTextField versionInfo;
+ protected JTextField lastUpdateInfo;
+ protected JTextField permissionInfo;
+ protected JTextField ownerInfo;
+ protected JTextField templateInfo;
+
+ protected JTextField searchTextField;
+
+ protected ImageTable imageTable;
protected String infoTextString = "Hier können Sie Virtuelle Maschinen hochladen, herunterladen, bearbeiten und löschen.";
public ImageListWindowLayout() {
- super(new GridBagLayout());
-
- // 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);
- infoComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
- // 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];
- final Font titleFont = new Font(Gui.display, new FontData(fontData.getName(), fontData.getHeight(), SWT.BOLD));
- infoTitle.setFont(titleFont);
- // the infotext
- Label infoText = new Label(infoComposite, SWT.NONE);
- infoText.setText(infoTextString);
- // -- end group of title --
-
-
- // -- group for the table --
- final Group tableGroup = new Group(this, SWT.BORDER);
- tableGroup.setText(tableGroupLabel);
- GridData tgLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- tgLayoutData.minimumWidth = 400;
- tgLayoutData.widthHint = 800;
- tableGroup.setLayoutData(tgLayoutData);
- tableGroup.setLayout(new GridLayout());
-
- // -- group for the filter --
- Group filterGroup = new Group(tableGroup, SWT.BORDER);
- filterGroup.setText(filterGroupLabel);
- GridData fgGridData = new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1);
- fgGridData.minimumWidth = 400;
- fgGridData.widthHint = 800;
- filterGroup.setLayoutData(fgGridData);
- filterGroup.setLayout(new GridLayout());
-
- // filter text field
- searchTextField = new Text(filterGroup, SWT.BORDER);
- searchTextField.setMessage("Name, Verantwortlicher, OS");
- // -- end group of filter --
-
- // table composite to embed the swing table
- final Composite comp = new Composite(tableGroup, SWT.NO_BACKGROUND | SWT.EMBEDDED);
- comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- final Frame frame = SWT_AWT.new_Frame(comp);
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- System.setProperty("sun.awt.noerasebackground", "true");
- // auto-resize-on-scroll http://stackoverflow.com/questions/17858132/automatically-adjust-jtable-column-to-fit-content
- JPanel panel = new JPanel(new BorderLayout());
- frame.add(panel);
- JRootPane root = new JRootPane();
- panel.add(root);
- java.awt.Container contentPane = root.getContentPane();
- // init table
- jtable = new JTable();
- jtable.setShowGrid(false);
- jtable.setCellSelectionEnabled(false);
- jtable.createDefaultColumnsFromModel();
- jtable.setAutoCreateRowSorter(true);
- jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- jtable.getTableHeader().setReorderingAllowed(false);
- jtable.setDefaultRenderer(Object.class, new TableRenderer());
- jtable.setRowSelectionAllowed(true);
- jtable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-// jtable.setFont(new java.awt.Font("URW Gothic", java.awt.Font.PLAIN, 12));
- new ResizeColumnListener(jtable);
- JScrollPane scrollPane = new JScrollPane(jtable);
- contentPane.setLayout(new BorderLayout());
- contentPane.add(scrollPane);
- }
- });
-
- // create, modify, download and delete buttons
- Composite buttonComposite = new Composite(tableGroup, SWT.NONE);
- GridData buttonCompositeGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
- buttonCompositeGridData.minimumWidth = 200;
- buttonComposite.setLayoutData(buttonCompositeGridData);
- buttonComposite.setLayout(new RowLayout());
-
- newButton = new Button(buttonComposite, SWT.PUSH);
- newButton.setText(newButtonLabel);
-
- deleteButton = new Button(buttonComposite, SWT.PUSH);
- deleteButton.setText(deleteButtonLabel);
-
- downloadButton = new Button(buttonComposite, SWT.PUSH);
- downloadButton.setText(downloadButtonLabel);
-
- backButton = new Button(buttonComposite, SWT.PUSH);
- backButton.setText(backButtonLabel);
- // -- end group for table --
-
- // -- group for details of selected image --
- final Group vmInfoGroup = new Group(this, SWT.BORDER);
- vmInfoGroup.setText(vmInfoGroupLabel);
- final GridData igGridData = new GridData(SWT.FILL, SWT.FILL, true, false);
- igGridData.widthHint = 300;
- vmInfoGroup.setLayoutData(igGridData);
- vmInfoGroup.setLayout(new GridLayout(2, false));
-
+ super(new BorderLayout());
+
+ // --------------------------------------
+ // Info panel on the top with a search box
+ JPanel infoPanel = new JPanel(new BorderLayout());
+ JLabel infoTitle = new JLabel(infoTitleString); // TODO Font
+ infoPanel.add(infoTitle, BorderLayout.NORTH);
+ add(infoPanel, BorderLayout.NORTH);
+
+ // --------------------------------------
+ // List panel with the list of the images
+ JPanel listPanel = new JPanel(new BorderLayout());
+ // the search field
+ searchTextField = new JTextField();
+ listPanel.add(searchTextField, BorderLayout.NORTH);
+ // the actual table
+ imageTable = new ImageTable();
+ listPanel.add(new JScrollPane(imageTable), BorderLayout.CENTER);
+ // the buttons at the bottom
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
+ newButton = new JButton(newButtonLabel);
+ deleteButton = new JButton(deleteButtonLabel);
+ downloadButton = new JButton(downloadButtonLabel);
+ backButton = new JButton(backButtonLabel);
+ buttonPanel.add(newButton);
+ buttonPanel.add(deleteButton);
+ buttonPanel.add(downloadButton);
+ buttonPanel.add(backButton);
+ listPanel.add(buttonPanel, BorderLayout.PAGE_END);
+
+ // --------------------------------------
+ // Details panel on the right side
+ final JPanel detailsPane = new JPanel();
+ detailsPane.setLayout(new GridBagLayout());
+ detailsPane.setBorder(new TitledBorder(vmInfoGroupLabel));
+ detailsPane.setMaximumSize(new Dimension(400, Integer.MAX_VALUE));
+ detailsPane.setMinimumSize(new Dimension(350, 0));
+ detailsPane.setPreferredSize(detailsPane.getMinimumSize());
// image name info
- imageSelectedNameLabel = createCaptionAndTextfield("Image Name:", vmInfoGroup);
- idInfo = createCaptionAndTextfield("ID:", vmInfoGroup);
- versionInfo = createCaptionAndTextfield("Version:", vmInfoGroup);
- lastUpdateInfo = createCaptionAndTextfield("Letztes Update:", vmInfoGroup);
- permissionInfo = createCaptionAndTextfield("Berechtigungen:", vmInfoGroup);
- ownerInfo = createCaptionAndTextfield("Besitzer:", vmInfoGroup);
- templateInfo = createCaptionAndTextfield("Vorlage:", vmInfoGroup);
- // -- end group of details --
-
- // Dispose of stuff we allocated
- this.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent e) {
- titleFont.dispose();
- }
- });
-
+ int row = 0;
+ imageSelectedNameLabel = createCaptionAndTextfield("Name", detailsPane, row++);
+ idInfo = createCaptionAndTextfield("ID", detailsPane, row++);
+ versionInfo = createCaptionAndTextfield("Version", detailsPane, row++);
+ lastUpdateInfo = createCaptionAndTextfield("Letztes Update", detailsPane, row++);
+ permissionInfo = createCaptionAndTextfield("Berechtigungen", detailsPane, row++);
+ ownerInfo = createCaptionAndTextfield("Besitzer", detailsPane, row++);
+ templateInfo = createCaptionAndTextfield("Vorlage", detailsPane, row++);
+ // For some reason without this the controls above are centered vertically
+ detailsPane.add(new JPanel(), GridPos.get(0, row++, 2, 1, true, true));
+ // the actual layout of the whole window
+ JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listPanel, detailsPane);
+ GridBagLayout bag = new GridBagLayout();
+ GridBagConstraints con = new GridBagConstraints();
+ con.fill = GridBagConstraints.BOTH;
+ bag.setConstraints(splitPane, con);
+ add(splitPane);
+
}
-
- public Text createCaptionAndTextfield(String captionString, Group group) {
- Label caption = new Label(group, SWT.NONE);
- Text textField = new Text(group, SWT.READ_ONLY);
+ public JPanel newLabelToTextField(final String labelName, JTextField textField, GridBagConstraints con) {
+ JPanel newPanel = new JPanel();
+ con.gridwidth = 1;
+ con.gridx = 0;
+ con.weightx = 0.1;
+ con.anchor = GridBagConstraints.WEST;
+ con.fill = GridBagConstraints.BOTH;
+ newPanel.add(new JLabel(labelName), con);
+ con.gridx = 1;
+ con.weightx = 1.;
+ con.anchor = GridBagConstraints.EAST;
+ con.fill = GridBagConstraints.HORIZONTAL;
+ if (textField == null) {
+ textField = new JTextField();
+ }
+ newPanel.add(textField, con);
+
+ // finally update "row number"
+ con.gridy++;
+ return newPanel;
+ }
+ public JTextField createCaptionAndTextfield(String captionString, JPanel group, int row) {
+ JLabel caption = new JLabel(captionString);
+ JTextField textField = new JTextField();
+ textField.setEditable(false);
caption.setText(captionString);
- caption.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
- gridData.minimumWidth = 180;
- textField.setLayoutData(gridData);
+ group.add(caption, GridPos.get(0, row));
+ group.add(textField, GridPos.get(1, row, true, false));
return textField;
}
-
}