diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java | 156 |
1 files changed, 105 insertions, 51 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java index 31332cf4..af73d32f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java @@ -1,13 +1,6 @@ package org.openslx.dozmod.gui.window.layout; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Frame; -import java.awt.GridBagConstraints; -import java.awt.Insets; -import java.awt.FlowLayout; +import java.awt.*; import javax.swing.BorderFactory; import javax.swing.Box; @@ -22,6 +15,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; +import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.text.StyledEditorKit; import javax.swing.text.html.HTMLEditorKit; @@ -29,6 +23,7 @@ import javax.swing.text.html.HTMLEditorKit; import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.bwlp.thrift.iface.ShareMode; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.configurator.ContainerBindMountConfigurator; import org.openslx.dozmod.gui.configurator.ImagePermissionConfigurator; import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer; @@ -37,16 +32,29 @@ import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.control.table.ImageVersionTable; import org.openslx.dozmod.gui.control.table.QScrollPane; import org.openslx.dozmod.gui.helper.GridManager; +import org.openslx.dozmod.gui.helper.I18n; import org.openslx.thrifthelper.Comparators; -@SuppressWarnings("serial") -public abstract class ImageDetailsWindowLayout extends JDialog { +import javax.swing.*; +import java.awt.*; + +@SuppressWarnings("serial") public abstract class ImageDetailsWindowLayout extends JDialog { private static final int ICON_SIZE_Y = 24; + private final String TAB_OVERVIEW_TITEL = I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.overview.title"); + private final String TAB_VERSIONS_TITEL = I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.versions.title"); + private final String TAB_PERMISSIONS_TITEL = I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.permissions.title"); + protected final JTextField txtTitle; protected final JEditorPane txtDescription; + private final JPanel pnlTabContainer; + protected final JTextArea txtContainerRecipe; + protected final JTextField txtContainerRun; + protected final JTextField txtContainerImageName; + protected ContainerBindMountConfigurator bindMountConfigurator; + protected QLabel lblError; protected final PersonLabel lblOwner; protected final JButton btnChangeOwner; @@ -91,9 +99,6 @@ public abstract class ImageDetailsWindowLayout extends JDialog { protected ImagePermissionConfigurator ctlImagePermissionConfigurator; - private static String infoTextDefPerms = "<html><body style='width:100%'>" - + "Hier können Sie Rechte für nicht in der Liste angegebene Nutzer festlegen:" + "</body></html>"; - public ImageDetailsWindowLayout(Frame modalParent) { super(modalParent, "<init>", ModalityType.APPLICATION_MODAL); setResizable(true); @@ -161,7 +166,7 @@ public abstract class ImageDetailsWindowLayout extends JDialog { txtDescription.setEditorKit(kit); txtDescription.setContentType("text/html"); - grid.add(new QLabel("Beschreibung")).anchor = GridBagConstraints.FIRST_LINE_START; + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.description.text"))).anchor = GridBagConstraints.FIRST_LINE_START; JScrollPane jsp = new JScrollPane(txtDescription, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jsp.setMinimumSize(Gui.getScaledDimension(0, 110)); @@ -171,34 +176,33 @@ public abstract class ImageDetailsWindowLayout extends JDialog { // owner lblOwner = new PersonLabel(); - btnChangeOwner = new JButton("Ändern"); - grid.add(new QLabel("Besitzer")); + btnChangeOwner = new JButton(I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.changeOwner.text")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.owner.text"))); grid.add(lblOwner).expand(true, false); grid.add(btnChangeOwner).fill(true, false); grid.nextRow(); // creation time lblCreateTime = new QLabel(); - grid.add(new QLabel("Erstellt am")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.createTime.text"))); grid.add(lblCreateTime, 2); grid.nextRow(); // last updater lblUpdater = new PersonLabel(); - grid.add(new QLabel("Geändert durch")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.updater.text"))); grid.add(lblUpdater, 2); grid.nextRow(); // last updated lblUpdateTime = new QLabel(); - grid.add(new QLabel("Geändert am")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.updateTime.text"))); grid.add(lblUpdateTime, 2); grid.nextRow(); cboOperatingSystem = new ComboBox<OperatingSystem>(Comparators.operatingSystem, new ComboBoxRenderer<OperatingSystem>() { - @Override - public String renderItem(OperatingSystem item) { + @Override public String renderItem(OperatingSystem item) { if (item == null) return null; return item.getOsName(); @@ -206,7 +210,7 @@ public abstract class ImageDetailsWindowLayout extends JDialog { }); cboOperatingSystem.setEditable(false); - grid.add(new QLabel("Betriebssystem")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.OS.text"))); grid.add(cboOperatingSystem, 2).expand(true, false).fill(true, false); grid.nextRow(); @@ -215,46 +219,46 @@ public abstract class ImageDetailsWindowLayout extends JDialog { // share mode cboShareMode = new ComboBox<ShareMode>(new ComboBoxRenderer<ShareMode>() { - @Override - public String renderItem(ShareMode item) { + @Override public String renderItem(ShareMode item) { if (item == null) return "null"; return item.name(); } }); - grid.add(new QLabel("Freigabemodus")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.shareMode.text"))); grid.add(cboShareMode, 2).expand(true, false).fill(true, false); grid.nextRow(); // template - chkIsTemplate = new JCheckBox("Vorlage"); + chkIsTemplate = new JCheckBox(I18n.WINDOW_LAYOUT.getString("ImageDetails.CheckBox.isTemplate.text")); grid.add(Box.createGlue()); grid.add(chkIsTemplate, 2); grid.nextRow(); // version txtVersion = new JTextField(); - grid.add(new QLabel("Versions-ID")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.version.text"))); grid.add(txtVersion, 2).expand(true, false).fill(true, false); grid.nextRow(); // id txtId = new JTextField(); txtId.setEditable(false); - grid.add(new QLabel("VM-ID")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.ID.text"))); grid.add(txtId, 2).expand(true, false).fill(true, false); grid.nextRow(); // virtualizer lblVirtualizer = new QLabel(); - grid.add(new QLabel("Virtualisierer")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.virtualizer.text"))); grid.add(lblVirtualizer, 2).expand(true, false).fill(true, false); grid.nextRow(); - grid.add(new QLabel("Veranstaltungen")); + grid.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.linkedLectureCount.text"))); lblLinkedLectureCount = new QLabel(); grid.add(lblLinkedLectureCount).expand(true, false); - btnShowLinkingLectures = new JButton("Anzeigen"); + btnShowLinkingLectures = new JButton( + I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.showLinkingLectures.text")); grid.add(btnShowLinkingLectures).fill(true, false); grid.nextRow(); grid.add(Box.createVerticalGlue(), 3).expand(true, true).fill(true, true); @@ -263,11 +267,14 @@ public abstract class ImageDetailsWindowLayout extends JDialog { JPanel buttonBar = new JPanel(); BoxLayout buttons = new BoxLayout(buttonBar, BoxLayout.LINE_AXIS); buttonBar.setLayout(buttons); - btnUpdateImage = new JButton("Neue VM-Version hochladen", - Gui.getScaledIconResource("/img/upload-icon.png", "New VM", ICON_SIZE_Y, buttonBar)); + btnUpdateImage = new JButton(I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.updateImage.text"), + Gui.getScaledIconResource("/img/upload-icon.png", + I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.updateImage.description"), ICON_SIZE_Y, buttonBar)); buttonBar.add(btnUpdateImage); - btnUploadToMaster = new JButton("Landesweit veröffentlichen", - Gui.getScaledIconResource("/img/publish-icon.png", "Publish VM", ICON_SIZE_Y, buttonBar)); + btnUploadToMaster = new JButton(I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.uploadToMaster.text"), + Gui.getScaledIconResource("/img/publish-icon.png", + I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.uploadToMaster.description"), + ICON_SIZE_Y, buttonBar)); buttonBar.add(btnUploadToMaster); grid.add(buttonBar, 3).fill(true, false).expand(true, false); grid.nextRow(); @@ -299,12 +306,15 @@ public abstract class ImageDetailsWindowLayout extends JDialog { ctlImagePermissionConfigurator = new ImagePermissionConfigurator(); GridManager grdImagePermissionConfigurator = new GridManager(pnlTabPermissions, 1, false, new Insets(8, 2, 8, 2)); - grdImagePermissionConfigurator.add(ctlImagePermissionConfigurator).fill(true, true).expand(true, true); + grdImagePermissionConfigurator.add(ctlImagePermissionConfigurator) + .fill(true, true) + .expand(true, true); // Panel with the permissions for other users JPanel defaultPermissionPane = new JPanel(); - defaultPermissionPane.setBorder(BorderFactory.createTitledBorder("Andere Nutzer")); + defaultPermissionPane.setBorder(BorderFactory.createTitledBorder( + I18n.WINDOW_LAYOUT.getString("ImageDetails.TitledBorder.defaultPermissionPane.title"))); defaultPermissionPane.setLayout(new BoxLayout(defaultPermissionPane, BoxLayout.PAGE_AXIS)); - JLabel txtDefaultPerms = new JLabel(infoTextDefPerms); + JLabel txtDefaultPerms = new JLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.defaultPerms.text")); JPanel txtDefaultPermsPanel = new JPanel(); // Panel + BoxLayout + Label = wordwrap @@ -312,10 +322,10 @@ public abstract class ImageDetailsWindowLayout extends JDialog { txtDefaultPermsPanel.add(txtDefaultPerms); JPanel defaultPermsSubPanel = new JPanel(); defaultPermsSubPanel.setLayout(new BoxLayout(defaultPermsSubPanel, BoxLayout.LINE_AXIS)); - chkDefaultPermAdmin = new JCheckBox("Admin"); - chkDefaultPermDownload = new JCheckBox("Download"); - chkDefaultPermEdit = new JCheckBox("Bearbeiten"); - chkDefaultPermLink = new JCheckBox("Verlinken"); + chkDefaultPermAdmin = new JCheckBox(I18n.WINDOW_LAYOUT.getString("ImageDetails.CheckBox.permAdmin.text")); + chkDefaultPermDownload = new JCheckBox(I18n.WINDOW_LAYOUT.getString("ImageDetails.CheckBox.permDownload.text")); + chkDefaultPermEdit = new JCheckBox(I18n.WINDOW_LAYOUT.getString("ImageDetails.CheckBox.permEdit.text")); + chkDefaultPermLink = new JCheckBox(I18n.WINDOW_LAYOUT.getString("ImageDetails.CheckBox.permLink.text")); defaultPermsSubPanel.add(chkDefaultPermLink); defaultPermsSubPanel.add(chkDefaultPermDownload); @@ -328,9 +338,47 @@ public abstract class ImageDetailsWindowLayout extends JDialog { grdImagePermissionConfigurator.add(defaultPermissionPane).fill(true, false).expand(false, false); grdImagePermissionConfigurator.finish(false); - /* - * ***************************************************************************** - * ** + + + + /* ******************************************************************************* + * + * Container panel + * + ********************************************************************************/ + pnlTabContainer = new JPanel(); + txtContainerRecipe = new JTextArea(); + JScrollPane scrollableTextArea = new JScrollPane(txtContainerRecipe); + scrollableTextArea.setMinimumSize(Gui.getScaledDimension(0, 200)); + scrollableTextArea.setPreferredSize(Gui.getScaledDimension(0, 200)); + + JPanel pnlContainerMeta = new JPanel(); + GridManager grdContainerMeta = new GridManager(pnlContainerMeta, 3); + + grdContainerMeta.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.ImageName.text"))); + txtContainerImageName = new JTextField(); + txtContainerImageName.setDocument(txtTitle.getDocument()); + grdContainerMeta.add(txtContainerImageName, 2).fill(true, false).expand(true, false); + grdContainerMeta.nextRow(); + + grdContainerMeta.add(new QLabel(I18n.WINDOW_LAYOUT.getString("ImageDetails.Label.ContainerRunOptions.text"))); + txtContainerRun = new JTextField(); + grdContainerMeta.add(txtContainerRun, 2).fill(true, false).expand(true, false); + grdContainerMeta.nextRow(); + + bindMountConfigurator = new ContainerBindMountConfigurator(); + grdContainerMeta.add(bindMountConfigurator, 3).fill(true, true).expand(true, true); + grdContainerMeta.finish(true); + + GridManager grdContainer = new GridManager(pnlTabContainer, 1, false, new Insets(8, 2, 8, 2)); + grdContainer.add(scrollableTextArea, 1).fill(true, true).expand(true, true); + grdContainer.add(pnlContainerMeta, 1).fill(true, true).expand(true, true); + //grdContainer.add(Box.createVerticalGlue()).fill(true, true).expand(true,true); + grdContainer.finish(true); + + + + /* ******************************************************************************* * * Bottom panel for buttons * @@ -338,8 +386,8 @@ public abstract class ImageDetailsWindowLayout extends JDialog { JPanel pnlButtons = new JPanel(); pnlButtons.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); pnlButtons.setLayout(new BoxLayout(pnlButtons, BoxLayout.LINE_AXIS)); - btnSaveChanges = new JButton("Speichern"); - btnClose = new JButton("Schließen"); + btnSaveChanges = new JButton(I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.saveChanges.text")); + btnClose = new JButton(I18n.WINDOW_LAYOUT.getString("ImageDetails.Button.close.text")); // user feedback slot lblError = new QLabel(""); lblError.setForeground(Color.RED); @@ -356,11 +404,17 @@ public abstract class ImageDetailsWindowLayout extends JDialog { * ********************************************************************************/ pnlTabs = new JTabbedPane(); - pnlTabs.addTab("Übersicht", pnlTabOverview); - pnlTabs.addTab("VM-Versionen", pnlTabVersions); - pnlTabs.addTab("Berechtigungen", pnlTabPermissions); - + pnlTabs.addTab(I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.overview.title"), pnlTabOverview); + pnlTabs.addTab(I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.versions.title"), pnlTabVersions); + pnlTabs.addTab(I18n.WINDOW_LAYOUT.getString("ImageDetails.Tab.permissions.title"), pnlTabPermissions); + add(pnlTabs, BorderLayout.CENTER); add(pnlButtons, BorderLayout.PAGE_END); } + + protected void showContainerTab() { + pnlTabs.addTab("Container", pnlTabContainer); + // TODO currently, do not allow to alter the version of a container image. + pnlTabs.remove(pnlTabs.indexOfTab(TAB_VERSIONS_TITEL)); + } } |