summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-27 16:40:52 +0200
committerJonathan Bauer2015-08-27 16:40:52 +0200
commit521dfa7d3d1f9efeaa65a7282cb977c96bf12645 (patch)
treef69d38742f827dca080b0a1dbd086fb1207d2fa0 /dozentenmodul
parent[client] filter the table of the columns we dont wanna see when linking an ex... (diff)
parent[client] ColorUtil: Remove unused parameter (diff)
downloadtutor-module-521dfa7d3d1f9efeaa65a7282cb977c96bf12645.tar.gz
tutor-module-521dfa7d3d1f9efeaa65a7282cb977c96bf12645.tar.xz
tutor-module-521dfa7d3d1f9efeaa65a7282cb977c96bf12645.zip
Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/PersonLabel.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java10
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/QFileChooser.java8
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java26
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java10
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureCustomPermissionWindow.java8
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java4
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/UserListWindow.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureCustomPermissionWindowLayout.java4
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/UserListWindowLayout.java3
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Sorters.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java45
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java38
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java24
22 files changed, 164 insertions, 79 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java
index a40600fe..72705a38 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java
@@ -253,12 +253,17 @@ public class Gui {
Logger logger, Throwable exception) {
if (logger != null)
logger.log(messageType.logPriority, message, exception);
- if (parent != null) {
- Window ancestor = SwingUtilities.getWindowAncestor(parent);
- if (ancestor != null) {
- parent = ancestor;
+ // Only needs to be done, if parent isn't already a window
+ if(!(parent instanceof Window)){
+ if (parent != null) {
+ Window ancestor = SwingUtilities.getWindowAncestor(parent);
+ if (ancestor != null) {
+ parent = ancestor;
+ }
}
}
+
+
if (exception != null)
message += "\n\n" + exception.getClass().getSimpleName() + "\n" + exception.getMessage() + "\n"
+ " (Siehe Logdatei)";
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java
index a5992d17..a2655434 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java
@@ -11,9 +11,9 @@ import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
@@ -74,8 +74,7 @@ public class ImageCustomPermissionManager extends JPanel {
btnAddUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- // TODO again: which frame to give? JOptionPane.getFrameForComponent(me) sounds cool at least :)
- UserListWindow.open(JOptionPane.getFrameForComponent(me), new UserAddedCallback() {
+ UserListWindow.open(SwingUtilities.getWindowAncestor(me), new UserAddedCallback() {
@Override
public void userAdded(final UserInfo newUser, UserListWindow window) {
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java
index e081c050..8d8e5806 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java
@@ -11,9 +11,9 @@ import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
-import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.LecturePermissions;
@@ -80,8 +80,7 @@ public class LectureCustomPermissionManager extends JPanel{
btnAddUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- // TODO again: which frame to give? JOptionPane.getFrameForComponent(me) sounds cool at least :)
- UserListWindow.open(JOptionPane.getFrameForComponent(me), new UserAddedCallback() {
+ UserListWindow.open(SwingUtilities.getWindowAncestor(me), new UserAddedCallback() {
@Override
public void userAdded(final UserInfo newUser, UserListWindow window) {
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/PersonLabel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/PersonLabel.java
index d4422ca8..511e0c7f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/PersonLabel.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/PersonLabel.java
@@ -26,7 +26,7 @@ public class PersonLabel extends JLabel {
private PersonLabelClickEvent callback = defaultCallback;
private static final Color linkColor = ColorUtil.add(UIManager.getColor("Label.foreground"), new Color(0,
- 0, .75f), .5f);
+ 0, .9f));
public PersonLabel() {
this(defaultCallback);
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
index 8af9a291..4293916e 100644
--- 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
@@ -16,7 +16,7 @@ public class ImageTable extends ListTable<ImageSummaryRead> {
public static final ListTableColumn COL_SIZE = new ListTableColumn("Größe", Long.class);
public static final ListTableColumn COL_LASTCHANGE = new ListTableColumn("Geändert", Long.class);
public static final ListTableColumn COL_OWNER = new ListTableColumn("Besitzer", Sorters.userNameById);
- public static final ListTableColumn COL_OS = new ListTableColumn("OS", Sorters.osNameById);
+ public static final ListTableColumn COL_OS = new ListTableColumn("OS", Integer.class, Sorters.osNameById);
public static final ListTableColumn COL_NAME = new ListTableColumn("Name");
public ImageTable() {
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java
index 1763bb42..f1c63889 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java
@@ -44,11 +44,11 @@ public abstract class ListTable<T> extends JTable {
}
this.model = new ListModel<T>(this, columns);
this.sorter = new TableRowSorter<ListModel<T>>(model);
- // for (int i = 0; i < columns.length; ++i) {
- // if (columns[i].sortComparator != null) {
- // sorter.setComparator(i, columns[i].sortComparator);
- // }
- // }
+ for (int i = 0; i < columns.length; ++i) {
+ if (columns[i].sortComparator != null) {
+ sorter.setComparator(i, columns[i].sortComparator);
+ }
+ }
this.adjuster = new TableColumnAdjuster(this, 5);
this.itemComparator = itemComparator;
this.setModel(model);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
index 6b30a8cd..f086712e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
@@ -33,7 +33,7 @@ public class ColorUtil {
return sqrt(c1[0] * wc1 + c2[0] * wc2, c1[1] * wc1 + c2[1] * wc2, c1[2] * wc1 + c2[2] * wc2);
}
- public static Color add(Color color1, Color color2, float wc1) {
+ public static Color add(Color color1, Color color2) {
float[] c1 = squared(color1);
float[] c2 = squared(color2);
c1[0] += c2[0];
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/QFileChooser.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/QFileChooser.java
index f3113dd0..5c2cf974 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/QFileChooser.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/QFileChooser.java
@@ -9,13 +9,11 @@ import javax.swing.UIManager;
@SuppressWarnings("serial")
public class QFileChooser extends JFileChooser {
- /**
- * @param isFileChooser wether filechooser is for selecting image to upload or selecting directory for download
- */
+
public QFileChooser(String path, boolean dirMode) {
super(path);
-
- // Ugly hack to get a prettier file chooser with GTK - should be moved to helper/util class
+
+ // Ugly hack to get a prettier file chooser with GTK
LookAndFeel old = UIManager.getLookAndFeel();
if (old == null || !old.getName().toLowerCase().contains("gtk")) {
old = null;
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java
index 9b1ca7d6..2066791f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java
@@ -113,19 +113,32 @@ public class TableColumnAdjuster implements PropertyChangeListener, TableModelLi
* column.
*/
private int getColumnDataWidth(int column) {
- if (!isColumnDataIncluded)
+ if (!isColumnDataIncluded || table.getRowCount() == 0)
return 0;
int preferredWidth = 0;
int maxWidth = table.getColumnModel().getColumn(column).getMaxWidth();
+ int[] colWidth = new int[table.getRowCount()];
+ int avg = 0;
- for (int row = 0; row < table.getRowCount(); row++) {
- preferredWidth = Math.max(preferredWidth, getCellDataWidth(row, column));
+ for (int row = 0; row < colWidth.length; row++) {
+ colWidth[row] = getCellDataWidth(row, column);
+ avg += colWidth[row];
+ }
+ avg /= colWidth.length;
+ int upperCap = avg * 3 + 20;
+ for (int row = 0; row < colWidth.length; row++) {
+ if (colWidth[row] > upperCap) {
+ return upperCap;
+ }
+ if (colWidth[row] > preferredWidth) {
+ preferredWidth = colWidth[row];
+ }
// We've exceeded the maximum width, no need to check other rows
-
- if (preferredWidth >= maxWidth)
+ if (preferredWidth >= maxWidth) {
break;
+ }
}
return preferredWidth;
@@ -321,7 +334,8 @@ public class TableColumnAdjuster implements PropertyChangeListener, TableModelLi
/*
* Update the input and action maps with new ToggleAction
*/
- private void installToggleAction(boolean isToggleDynamic, boolean isToggleLarger, String key, String keyStroke) {
+ private void installToggleAction(boolean isToggleDynamic, boolean isToggleLarger, String key,
+ String keyStroke) {
Action action = new ToggleAction(isToggleDynamic, isToggleLarger);
KeyStroke ks = KeyStroke.getKeyStroke(keyStroke);
table.getInputMap().put(ks, key);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java
index 192fb552..22833d28 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java
@@ -1,6 +1,6 @@
package org.openslx.dozmod.gui.window;
-import java.awt.Frame;
+import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
@@ -19,9 +19,11 @@ public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayo
private static final Logger LOGGER = Logger.getLogger(ImageCustomPermissionWindow.class);
private boolean okUsed = false;
+ private Window parentWindow;
- protected ImageCustomPermissionWindow(final Frame modalParent, final Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions) {
+ protected ImageCustomPermissionWindow(final Window modalParent, final Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions) {
super(modalParent);
+ this.parentWindow = modalParent;
imagePermissionManager.initPanel(permissionMap, defaultPermissions);
btnOk.addActionListener(new ActionListener() {
@@ -61,12 +63,12 @@ public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayo
/**
* Creates a new ImageCustomPermissionWindow dialog and returns the resulting Permissions
- * @param modalParent
+ * @param modalParent parentwindow of this dialog
* @param permissionMap The current user permissions with which the permission manager to initialise, null creates empty list.
* @param defaultPermissions The current default permissions, should not be null!
* @return PermissionDefaultToCustomLink with resulting permissions or null, if abort has been used to exit the dialog
*/
- public static PermissionDefaultToCustomLink<ImagePermissions> open(Frame modalParent, Map<String, ImagePermissions> permissionMap, ImagePermissions defaultPermissions) {
+ public static PermissionDefaultToCustomLink<ImagePermissions> open(Window modalParent, Map<String, ImagePermissions> permissionMap, ImagePermissions defaultPermissions) {
return new ImageCustomPermissionWindow(modalParent, permissionMap, defaultPermissions).runAndReturn();
}
}
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 61ee1323..5d52b5fe 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
@@ -120,14 +120,14 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
btnUpdateImage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- new ImageUpdateWizard(SwingUtilities.getWindowAncestor(me), image).setVisible(true);
+ new ImageUpdateWizard(me, image).setVisible(true);
refresh(true);
}
});
btnChangeOwner.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- UserListWindow.open(JOptionPane.getFrameForComponent(btnChangeOwner),
+ UserListWindow.open(me,
new UserAddedCallback() {
@Override
public void userAdded(UserInfo user, UserListWindow window) {
@@ -142,7 +142,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
@Override
public void actionPerformed(ActionEvent arg0) {
- PermissionDefaultToCustomLink<ImagePermissions> pl = ImageCustomPermissionWindow.open(JOptionPane.getFrameForComponent(me), me.permissionMap, image.defaultPermissions);
+ PermissionDefaultToCustomLink<ImagePermissions> pl = ImageCustomPermissionWindow.open(me, me.permissionMap, image.defaultPermissions);
if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null){
image.defaultPermissions = pl.defaultPermissions;
permissionMap = pl.customPermissions;
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureCustomPermissionWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureCustomPermissionWindow.java
index 858ab5a1..082a058b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureCustomPermissionWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureCustomPermissionWindow.java
@@ -1,6 +1,6 @@
package org.openslx.dozmod.gui.window;
-import java.awt.Frame;
+import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
@@ -23,7 +23,7 @@ public class LectureCustomPermissionWindow extends LectureCustomPermissionWindow
/**
* Don't use this constructor, use static function LectureCustomPermissionWindow.open instead.
*/
- protected LectureCustomPermissionWindow(final Frame modalParent, final Map<String, LecturePermissions> permissionMap, final LecturePermissions defaultPermissions) {
+ protected LectureCustomPermissionWindow(final Window modalParent, final Map<String, LecturePermissions> permissionMap, final LecturePermissions defaultPermissions) {
super(modalParent);
/**
@@ -68,13 +68,13 @@ public class LectureCustomPermissionWindow extends LectureCustomPermissionWindow
/**
* Create new LecturePermissionWindow dialog
- * @param modalParent parent of the popup window
+ * @param modalParent parentwindow of the popup window
* @param permissionMap the permissions of the lecture
* @param defaultPermissions default permissions of the lecture
* @return PermissionDefaultToCustomLink with new permissions of null, if abort button has been used
*/
- public static PermissionDefaultToCustomLink<LecturePermissions> open(Frame modalParent, Map<String, LecturePermissions> permissionMap, LecturePermissions defaultPermissions) {
+ public static PermissionDefaultToCustomLink<LecturePermissions> open(Window modalParent, Map<String, LecturePermissions> permissionMap, LecturePermissions defaultPermissions) {
return new LectureCustomPermissionWindow(modalParent, permissionMap, defaultPermissions).runAndReturn();
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index dcdb938e..e06addc9 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -143,7 +143,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
btnChangeOwner.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- UserListWindow.open(JOptionPane.getFrameForComponent(btnChangeOwner),
+ UserListWindow.open(me,
new UserAddedCallback() {
@Override
public void userAdded(UserInfo user, UserListWindow window) {
@@ -159,7 +159,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
LOGGER.info(permissionMap);
LOGGER.info(lecture.defaultPermissions);
PermissionDefaultToCustomLink<LecturePermissions> pl = LectureCustomPermissionWindow.open(
- JOptionPane.getFrameForComponent(me), permissionMap, lecture.defaultPermissions);
+ me, permissionMap, lecture.defaultPermissions);
if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null) {
lecture.defaultPermissions = pl.defaultPermissions;
permissionMap = pl.customPermissions;
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/UserListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/UserListWindow.java
index ba8b4d7e..b2e8d0e9 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/UserListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/UserListWindow.java
@@ -1,7 +1,7 @@
package org.openslx.dozmod.gui.window;
import java.awt.Color;
-import java.awt.Frame;
+import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
@@ -36,7 +36,7 @@ public class UserListWindow extends UserListWindowLayout {
public void userAdded(UserInfo user, UserListWindow window);
}
- public UserListWindow(final Frame modalParent, final UserAddedCallback callback, String actionCaption) {
+ public UserListWindow(final Window modalParent, final UserAddedCallback callback, String actionCaption) {
super(modalParent, actionCaption);
addWindowListener(new WindowAdapter() {
@@ -116,10 +116,11 @@ public class UserListWindow extends UserListWindowLayout {
}
}
});
- this.setLocationRelativeTo(modalParent);
+ Gui.centerShellOverShell(modalParent, this);
+ // this.setLocationRelativeTo(SwingUtilities.getWindowAncestor(modalParent));
}
- public static void open(Frame modalParent, UserAddedCallback callback, String actionCaption) {
+ public static void open(Window modalParent, UserAddedCallback callback, String actionCaption) {
new UserListWindow(modalParent, callback, actionCaption).setVisible(true);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java
index 52d5856c..08ab5c32 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java
@@ -1,7 +1,7 @@
package org.openslx.dozmod.gui.window.layout;
import java.awt.Dimension;
-import java.awt.Frame;
+import java.awt.Window;
import javax.swing.BorderFactory;
import javax.swing.Box;
@@ -37,9 +37,10 @@ public class ImageCustomPermissionWindowLayout extends JDialog {
private static String title = "Benutzerdefinierte Berechtigungen";
- protected ImageCustomPermissionWindowLayout(Frame modalParent) {
+ protected ImageCustomPermissionWindowLayout(Window modalParent) {
super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL
: ModalityType.MODELESS);
+ this.setTitle(title);
// Panel to add everything into, needed for the border.
JPanel contentPanel = new JPanel();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureCustomPermissionWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureCustomPermissionWindowLayout.java
index fe3994b2..8e53e1a7 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureCustomPermissionWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureCustomPermissionWindowLayout.java
@@ -1,7 +1,7 @@
package org.openslx.dozmod.gui.window.layout;
import java.awt.Dimension;
-import java.awt.Frame;
+import java.awt.Window;
import javax.swing.BorderFactory;
import javax.swing.Box;
@@ -44,7 +44,7 @@ public class LectureCustomPermissionWindowLayout extends JDialog {
*/
private static String title = "Benutzerdefinierte Berechtigungen";
- protected LectureCustomPermissionWindowLayout(Frame modalParent) {
+ protected LectureCustomPermissionWindowLayout(Window modalParent) {
super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL
: ModalityType.MODELESS);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/UserListWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/UserListWindowLayout.java
index 626b8180..03b7d700 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/UserListWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/UserListWindowLayout.java
@@ -5,6 +5,7 @@ import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagLayout;
+import java.awt.Window;
import javax.swing.BorderFactory;
import javax.swing.Box;
@@ -42,7 +43,7 @@ public class UserListWindowLayout extends JDialog {
private static String title = "Benutzerliste";
- protected UserListWindowLayout(Frame modalParent, String actionCaption) {
+ protected UserListWindowLayout(Window modalParent, String actionCaption) {
super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL
: ModalityType.MODELESS);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
index a7b9141a..c1a2c361 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
@@ -23,7 +23,7 @@ import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
-import org.openslx.dozmod.gui.MainWindow;
+import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.GridManager;
@SuppressWarnings("serial")
@@ -90,6 +90,10 @@ public abstract class Wizard extends JDialog {
//
setPreferredSize(new Dimension(550, 420));
setResizable(false);
+
+ pack();
+ Gui.centerShellOverShell(parent, this);
+
// Window events
addWindowListener(new WindowAdapter() {
@Override
@@ -133,7 +137,6 @@ public abstract class Wizard extends JDialog {
if (!pages.isEmpty()) {
showPage(0);
}
- MainWindow.centerShell(this);
}
super.show();
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Sorters.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Sorters.java
index af5e9e9f..0065f5f1 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Sorters.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Sorters.java
@@ -32,6 +32,13 @@ public class Sorters {
public static final Comparator<OperatingSystem> osName = new Comparator<OperatingSystem>() {
@Override
public int compare(OperatingSystem o1, OperatingSystem o2) {
+ if (o1 == null) {
+ if (o2 == null)
+ return 0;
+ return 1;
+ } else if (o2 == null) {
+ return -1;
+ }
return FormatHelper.osName(o1).compareTo(FormatHelper.osName(o2));
}
};
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java
index 340d95e8..98f54d36 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java
@@ -8,6 +8,7 @@ import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.GenericDataCache;
+import org.openslx.util.GenericDataCache.CacheMode;
public class MetaDataCache {
@@ -54,12 +55,24 @@ public class MetaDataCache {
}
public static OperatingSystem getOsById(int id) {
- List<OperatingSystem> list = getOperatingSystems();
- if (list == null)
+ // First, try in "always cached" mode
+ List<OperatingSystem> list = osCache.get(CacheMode.ALWAYS_CACHED);
+ OperatingSystem os = getOsById(id, list);
+ if (os != null)
+ return os;
+ // Try again with a potential refresh
+ List<OperatingSystem> newList = osCache.get(CacheMode.DEFAULT);
+ if (list == newList) // Returned list from cache as it was still recent enough
return null;
- for (OperatingSystem os : list) {
- if (os.getOsId() == id)
- return os;
+ return getOsById(id, newList);
+ }
+
+ private static OperatingSystem getOsById(int id, List<OperatingSystem> list) {
+ if (list != null) {
+ for (OperatingSystem os : list) {
+ if (os.getOsId() == id)
+ return os;
+ }
}
return null;
}
@@ -74,12 +87,24 @@ public class MetaDataCache {
}
public static Virtualizer getVirtualizerById(String virtId) {
- List<Virtualizer> list = getVirtualizers();
- if (list == null)
+ // First, try in "always cached" mode
+ List<Virtualizer> list = virtualizerCache.get(CacheMode.ALWAYS_CACHED);
+ Virtualizer virt = getVirtualizerById(virtId, list);
+ if (virt != null)
+ return virt;
+ // Try again with a potential refresh
+ List<Virtualizer> newList = virtualizerCache.get(CacheMode.DEFAULT);
+ if (list == newList) // Returned list from cache as it was still recent enough
return null;
- for (Virtualizer virt : list) {
- if (virt.getVirtId().equals(virtId))
- return virt;
+ return getVirtualizerById(virtId, newList);
+ }
+
+ private static Virtualizer getVirtualizerById(String virtId, List<Virtualizer> list) {
+ if (list != null) {
+ for (Virtualizer virt : list) {
+ if (virt.getVirtId().equals(virtId))
+ return virt;
+ }
}
return null;
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java
index 4d1c1225..95a6aa2e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java
@@ -7,24 +7,28 @@ import org.openslx.bwlp.thrift.iface.Organization;
import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.GenericDataCache;
+import org.openslx.util.GenericDataCache.CacheMode;
public class OrganizationCache {
-
+
private static final Logger LOGGER = Logger.getLogger(OrganizationCache.class);
-
+
/**
* How long should the list be cached?
*/
private static final int CACHE_TIME_MS = 20 * 60 * 1000;
- private static final GenericDataCache<List<Organization>> cache = new GenericDataCache<List<Organization>>(CACHE_TIME_MS) {
-
+ private static final GenericDataCache<List<Organization>> cache = new GenericDataCache<List<Organization>>(
+ CACHE_TIME_MS) {
+
@Override
protected List<Organization> update() throws Exception {
try {
return ThriftManager.getMasterClient().getOrganizations();
} catch (Exception e) {
- LOGGER.warn("Failed to get organization list from master server, trying satellite for backup..", e);
+ LOGGER.warn(
+ "Failed to get organization list from master server, trying satellite for backup..",
+ e);
}
return ThriftManager.getSatClient().getAllOrganizations();
// TODO: Sort list by display name?
@@ -53,7 +57,7 @@ public class OrganizationCache {
public static Organization find(UserInfo user) {
return find(user.organizationId);
}
-
+
/**
* Find the organization with the given id
*
@@ -61,12 +65,24 @@ public class OrganizationCache {
* @return matching organization, or <code>null</code> if not found
*/
public static Organization find(String organizationId) {
- List<Organization> list = cache.get();
- if (list == null)
+ // First, try in "always cached" mode
+ List<Organization> list = cache.get(CacheMode.ALWAYS_CACHED);
+ Organization org = find(organizationId, list);
+ if (org != null)
+ return org;
+ // Try again with a potential refresh
+ List<Organization> newList = cache.get(CacheMode.DEFAULT);
+ if (list == newList) // Returned list from cache as it was still recent enough
return null;
- for (Organization org : list) {
- if (org.organizationId.equals(organizationId))
- return org;
+ return find(organizationId, newList);
+ }
+
+ private static Organization find(String organizationId, List<Organization> list) {
+ if (list != null) {
+ for (Organization org : list) {
+ if (org.organizationId.equals(organizationId))
+ return org;
+ }
}
return null;
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java
index d73f650d..fd23c376 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java
@@ -5,9 +5,11 @@ import java.util.List;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.UserInfo;
+import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.dozmod.thrift.Session;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.GenericDataCache;
+import org.openslx.util.GenericDataCache.CacheMode;
public class UserCache {
@@ -63,12 +65,24 @@ public class UserCache {
* @return matching user, or <code>null</code> if not found
*/
public static UserInfo find(String userId) {
- List<UserInfo> list = cache.get();
- if (list == null)
+ // First, try in "always cached" mode
+ List<UserInfo> list = cache.get(CacheMode.ALWAYS_CACHED);
+ UserInfo user = find(userId, list);
+ if (user != null)
+ return user;
+ // Try again with a potential refresh
+ List<UserInfo> newList = cache.get(CacheMode.DEFAULT);
+ if (list == newList) // Returned list from cache as it was still recent enough
return null;
- for (UserInfo user : list) {
- if (user.userId.equals(userId))
- return user;
+ return find(userId, newList);
+ }
+
+ private static UserInfo find(String userId, List<UserInfo> list) {
+ if (list != null) {
+ for (UserInfo user : list) {
+ if (user.userId.equals(userId))
+ return user;
+ }
}
return null;
}