diff options
| author | Simon Rettberg | 2015-08-19 20:05:27 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2015-08-19 20:05:27 +0200 |
| commit | 057ca667c7b371d0fe5b6034d6ac328f7317e3b8 (patch) | |
| tree | 420167300cb710c1db2adf00c5e435abf6116abe /dozentenmodul/src/main/java | |
| parent | [client] Send block hashes to server (TODO: master sha1sum) (diff) | |
| parent | [client] Added default permission options to imageDetailsWindow. (diff) | |
| download | tutor-module-057ca667c7b371d0fe5b6034d6ac328f7317e3b8.tar.gz tutor-module-057ca667c7b371d0fe5b6034d6ac328f7317e3b8.tar.xz tutor-module-057ca667c7b371d0fe5b6034d6ac328f7317e3b8.zip | |
Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1
Diffstat (limited to 'dozentenmodul/src/main/java')
6 files changed, 128 insertions, 27 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 8a46b4dd..8a765daf 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -14,6 +14,7 @@ import java.util.Map; import javax.swing.JMenuItem; import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -36,10 +37,11 @@ import org.openslx.dozmod.gui.helper.UiFeedback; import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout; import org.openslx.dozmod.gui.wizard.LectureWizard; +import org.openslx.dozmod.gui.wizard.UpdateWizard; import org.openslx.dozmod.permissions.ImagePerms; import org.openslx.dozmod.thrift.Session; -import org.openslx.dozmod.thrift.ThriftError; import org.openslx.dozmod.thrift.ThriftActions; +import org.openslx.dozmod.thrift.ThriftError; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.FormatHelper; @@ -110,7 +112,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe btnUpdateImage.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - // TODO image version up + new UpdateWizard(SwingUtilities.getWindowAncestor(me), image).setVisible(true); + refresh(true); } }); btnChangeOwner.addActionListener(new ActionListener() { @@ -270,11 +273,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), MessageType.INFO, null, null); makeEditable(false); - String baseId = image.getImageBaseId(); - synchronized (me) { - image = null; - } - setImage(baseId); + refresh(true); } }); } @@ -290,7 +289,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe ((OperatingSystem)cboOperatingSystem.getSelectedItem()).osId, image.virtId, chkIsTemplate.isSelected(), - image.defaultPermissions, + new ImagePermissions(chkCustomPermLink.isSelected(), chkCustomPermDownload.isSelected(), chkCustomPermEdit.isSelected(), chkCustomPermAdmin.isSelected()), image.shareMode); QuickTimer.scheduleOnce(new Task() { @@ -306,11 +305,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } // no success message I'd say... btnSaveChanges.setEnabled(false); - String baseId = image.getImageBaseId(); - synchronized (me) { - image = null; - } - setImage(baseId); + refresh(true); callback.updated(); } }); @@ -353,10 +348,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe Gui.asyncExec(new Runnable() { @Override public void run() { - // "manual" refresh - String baseId = image.getImageBaseId(); - image = null; - setImage(baseId); + refresh(true); } }); } @@ -369,6 +361,16 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * ********************************************************************************/ /** + * @param forceRefresh + */ + private void refresh(boolean forceRefresh) { + String baseId = image.getImageBaseId(); + synchronized (me) { + image = null; + } + setImage(baseId); + } + /** * callback function when we received the image's details from the server */ private void fill() { @@ -443,14 +445,25 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe }; cboOperatingSystem.addItemListener(comboItemListener); cboShareMode.addItemListener(comboItemListener); - chkIsTemplate.addActionListener(new ActionListener() { - + + // Listener to detect changes in checkboxes + final ActionListener checkBoxListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - reactToChange(); - + reactToChange(); } - }); + }; + chkCustomPermAdmin.setSelected(image.defaultPermissions.admin); + chkCustomPermEdit.setSelected(image.defaultPermissions.edit); + chkCustomPermDownload.setSelected(image.defaultPermissions.download); + chkCustomPermLink.setSelected(image.defaultPermissions.link); + + chkIsTemplate.addActionListener(checkBoxListener); + chkCustomPermAdmin.addActionListener(checkBoxListener); + chkCustomPermEdit.addActionListener(checkBoxListener); + chkCustomPermDownload.addActionListener(checkBoxListener); + chkCustomPermLink.addActionListener(checkBoxListener); + // make fields editable is allowed makeEditable(true); // finally do show it all @@ -465,13 +478,18 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe */ private void makeEditable(boolean editable) { editable = editable && ImagePerms.canEdit(image); + boolean adminEdit = editable && ImagePerms.canAdmin(image); txtTitle.setEditable(editable); txtDescription.setEditable(editable); txtTags.setEditable(editable); cboOperatingSystem.setEnabled(editable); cboShareMode.setEnabled(editable); btnCustomPermissions.setEnabled(editable); - btnChangeOwner.setEnabled(editable && ImagePerms.canAdmin(image)); + btnChangeOwner.setEnabled(adminEdit); + chkCustomPermAdmin.setEnabled(adminEdit); + chkCustomPermEdit.setEnabled(adminEdit); + chkCustomPermDownload.setEnabled(adminEdit); + chkCustomPermLink.setEnabled(adminEdit); } /** @@ -493,6 +511,14 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe changed = true; } else if (chkIsTemplate.isSelected() != image.isTemplate) { changed = true; + } else if (chkCustomPermAdmin.isSelected() != image.defaultPermissions.admin) { + changed = true; + } else if (chkCustomPermEdit.isSelected() != image.defaultPermissions.edit) { + changed = true; + } else if (chkCustomPermDownload.isSelected() != image.defaultPermissions.download) { + changed = true; + } else if (chkCustomPermLink.isSelected() != image.defaultPermissions.link) { + changed = true; } // TODO TAGS btnSaveChanges.setEnabled(changed); 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 54c478e3..19df002e 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 @@ -50,6 +50,11 @@ public abstract class ImageDetailsWindowLayout extends JDialog { protected final JTextField txtId; protected final JTextField txtVersion; + protected final JCheckBox chkCustomPermAdmin; + protected final JCheckBox chkCustomPermEdit; + protected final JCheckBox chkCustomPermDownload; + protected final JCheckBox chkCustomPermLink; + protected final JButton btnCustomPermissions; protected final JButton btnSaveChanges; protected final JButton btnUpdateImage; @@ -172,7 +177,23 @@ public abstract class ImageDetailsWindowLayout extends JDialog { grid.add(new JLabel("Image-UUID")); grid.add(txtId, 2).expand(true, false).fill(true, false); grid.nextRow(); - btnCustomPermissions = new JButton("Benutzerdefinierte Berechtigungen"); + + JPanel defaultPermissionPane = new JPanel(); + defaultPermissionPane.setBorder(BorderFactory.createTitledBorder( "Default Berechtigungen")); + chkCustomPermAdmin = new JCheckBox("Admin"); + chkCustomPermDownload = new JCheckBox("Download"); + chkCustomPermEdit = new JCheckBox("Bearbeiten"); + chkCustomPermLink = new JCheckBox("Link"); + defaultPermissionPane.add(chkCustomPermLink); + defaultPermissionPane.add(chkCustomPermDownload); + defaultPermissionPane.add(chkCustomPermEdit); + defaultPermissionPane.add(chkCustomPermAdmin); + + grid.add(defaultPermissionPane, 3); + grid.nextRow(); + + + btnCustomPermissions = new JButton("Standart Berechtigungen"); grid.add(btnCustomPermissions); grid.skip(2); grid.nextRow(); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java index eced8813..73235920 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java @@ -33,7 +33,7 @@ public class ImageWizard extends Wizard implements UiFeedback { */ public ImageWizard(Window parent) { super(parent); - imageUploadPage = new ImageUploadPage(this, uploadWizardState); + imageUploadPage = new ImageUploadPage(this, uploadWizardState, false); imageMetaDataPage = new ImageMetaDataPage(this, uploadWizardState); imageCustomPermissionPage = new ImageCustomPermissionPage(this, uploadWizardState); addPage(imageUploadPage); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/UpdateWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/UpdateWizard.java new file mode 100644 index 00000000..46eb1de7 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/UpdateWizard.java @@ -0,0 +1,41 @@ +package org.openslx.dozmod.gui.wizard; + +import java.awt.Window; + +import org.apache.log4j.Logger; +import org.openslx.bwlp.thrift.iface.ImageDetailsRead; +import org.openslx.dozmod.gui.helper.UiFeedback; +import org.openslx.dozmod.gui.wizard.page.ImageUploadPage; +import org.openslx.dozmod.state.UploadWizardState; + +@SuppressWarnings("serial") +public class UpdateWizard extends Wizard implements UiFeedback { + + private final static Logger LOGGER = Logger.getLogger(ImageWizard.class); + + protected ImageUploadPage imageUploadPage; + public UpdateWizard(final Window parent, final ImageDetailsRead image) { + super(parent); + UploadWizardState uploadWizardState = new UploadWizardState(); + imageUploadPage = new ImageUploadPage(this, uploadWizardState, true); + addPage(imageUploadPage); + } + + @Override + public boolean wantConfirmQuit() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void escapePressed() { + dispose(); + } + + @Override + public String getWindowTitle() { + // TODO Auto-generated method stub + return "Neue Image-Version hochladen"; + } + +} diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageUploadPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageUploadPageLayout.java index ff1e3f1d..32b127a6 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageUploadPageLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageUploadPageLayout.java @@ -2,7 +2,9 @@ package org.openslx.dozmod.gui.wizard.layout; import java.awt.event.KeyEvent; +import javax.swing.Box; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JTextField; @@ -16,6 +18,7 @@ public abstract class ImageUploadPageLayout extends WizardPage { protected JTextField imageNameTextField; protected JButton imageFileBrowseButton; protected JTextField imageFileTextField; + protected JCheckBox softwareLicenseBox; /** * Page for uploading an imagefile @@ -43,7 +46,12 @@ public abstract class ImageUploadPageLayout extends WizardPage { grid.add(imageNameTextField, 2, 1).fill(true, false).expand(true, false); grid.nextRow(); + // -- Software license changed - shown only in UploadWizard -- + softwareLicenseBox = new JCheckBox("Lizensierte Software enthalten"); + grid.skip(); + grid.add(softwareLicenseBox, 2, 1).fill(false, false).expand(true, false); + grid.nextRow(); + grid.finish(true); - } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java index 1831a5d3..173d11c8 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java @@ -39,12 +39,17 @@ public class ImageUploadPage extends ImageUploadPageLayout { private UploadWizardState state; private String lastDetectedName = null; + private boolean updateExisting = false; - public ImageUploadPage(Wizard wizard, UploadWizardState uploadWizardState) { + public ImageUploadPage(Wizard wizard, UploadWizardState uploadWizardState, boolean updateExisting) { super(wizard); setPageComplete(false); this.canComeBack = false; this.state = uploadWizardState; + this.updateExisting = updateExisting; + + // hide software license checkbox if we are only uploading an image version + softwareLicenseBox.setVisible(updateExisting); // Browse for *.vmx imageFileBrowseButton.addActionListener(new ActionListener() { |
