diff options
author | Jonathan Bauer | 2015-08-27 16:40:52 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-08-27 16:40:52 +0200 |
commit | 521dfa7d3d1f9efeaa65a7282cb977c96bf12645 (patch) | |
tree | f69d38742f827dca080b0a1dbd086fb1207d2fa0 /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) | |
download | tutor-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')
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; } |