diff options
author | Simon Rettberg | 2017-06-19 13:35:44 +0200 |
---|---|---|
committer | Simon Rettberg | 2017-06-19 13:35:44 +0200 |
commit | 926cf503d1b228c50b9c9465847b0fa55b9f0251 (patch) | |
tree | 3d0194ffbb7ab05d3b31a62aee940d19aa1fca21 | |
parent | Update dependencies (diff) | |
parent | [client] User can switch the used LookAndFeel in the settings (diff) | |
download | tutor-module-926cf503d1b228c50b9c9465847b0fa55b9f0251.tar.gz tutor-module-926cf503d1b228c50b9c9465847b0fa55b9f0251.tar.xz tutor-module-926cf503d1b228c50b9c9465847b0fa55b9f0251.zip |
Merge branch 'master' of git.openslx.org:openslx-ng/tutor-module
-rwxr-xr-x[-rw-r--r--] | dozentenmodul/src/main/java/org/openslx/dozmod/App.java | 16 | ||||
-rwxr-xr-x[-rw-r--r--] | dozentenmodul/src/main/java/org/openslx/dozmod/Config.java | 18 | ||||
-rwxr-xr-x[-rw-r--r--] | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java | 27 | ||||
-rwxr-xr-x[-rw-r--r--] | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java | 27 |
4 files changed, 85 insertions, 3 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java index c68eaf47..c2098491 100644..100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java @@ -132,18 +132,30 @@ public class App { setupLogger(); - // Setup swing style System.setProperty("awt.useSystemAAFontSettings", "on"); System.setProperty("swing.aatext", "true"); + try { - UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + if (System.getProperty("swing.defaultlaf") != null) { + UIManager.setLookAndFeel(System.getProperty("swing.defaultlaf")); + } else if(Config.getLookAndFeel() != null) { + UIManager.setLookAndFeel(Config.getLookAndFeel()); + } else { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + } } catch (Exception e1) { try { + LOGGER.error("Something went wrong with the chosen 'LookAndFeel'. Falling back to default 'SystemLookAndFeel'"); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + if(Config.getLookAndFeel() == null) { + Config.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } } catch (Exception e) { } } + // Adjust font size adjustFontSize(Config.getFontScaling()); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java index 664d2270..ba21544d 100644..100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java @@ -428,6 +428,24 @@ public class Config { } /** + * Set the LookAndFeel which should be used + * + * @param value the classname of the LookAndFeel to be used + */ + public static void setLookAndFeel(String value) { + setString("gui.lookandfeel", value); + } + + /** + * Get the LookAndFeel which the user wants to use + * + * @return the saved classname of the LookAndFeel, null otherwise + */ + public static String getLookAndFeel() { + return getString("gui.lookandfeel", null); + } + + /** * Gets the boolean from the given key. * If nothing is found, return the given default value * diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java index 358396c1..3f7550ed 100644..100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java @@ -3,7 +3,10 @@ package org.openslx.dozmod.gui.window; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Enumeration; +import javax.swing.AbstractButton; +import javax.swing.JRadioButton; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -26,6 +29,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti private final static Logger LOGGER = Logger.getLogger(ConfigWindow.class); private SatelliteUserConfig userConfig = null; + private JRadioButton selectedLookAndFeel; public ConfigWindow(Window modalParent) { super(modalParent); @@ -77,6 +81,21 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti sldFontSize.setValue(Config.getFontScaling()); sldFontSize.addChangeListener(changeListener); + // -- Look And Feel -- + for (Enumeration<AbstractButton> btn = btnGroupLookAndFeel.getElements(); btn.hasMoreElements();) { + final JRadioButton b = (JRadioButton) btn.nextElement(); + if (b.getToolTipText().equals(Config.getLookAndFeel())) { + b.setSelected( true); + } + b.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + selectedLookAndFeel = b; + reactToInput(); + } + }); + } + // Transfer connection count sldConnections.setValue(Config.getTransferConnectionCount()); sldConnections.addChangeListener(changeListener); @@ -121,6 +140,8 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti changed = true; } else if ((int) sldConnections.getValue() != Config.getTransferConnectionCount()) { changed = true; + } else if (!selectedLookAndFeel.getToolTipText().equals(Config.getLookAndFeel())) { + changed = true; } // en/disable the save button @@ -182,6 +203,12 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti btnSave.setEnabled(true); } + // save LookAndFeel + if (selectedLookAndFeel != null) { + restartRequired = restartRequired || !selectedLookAndFeel.getToolTipText().equals(Config.getLookAndFeel()); + Config.setLookAndFeel(selectedLookAndFeel.getToolTipText()); + } + if (restartRequired) { // let the user know he needs to restart for the changes to apply Gui.showMessageBox(this, "Die Änderungen werden erst nach einem Programmneustart wirksam.", diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java index 6ded53aa..ab5a9b41 100644..100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java @@ -16,6 +16,7 @@ import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSlider; import javax.swing.UIManager; +import javax.swing.UIManager.LookAndFeelInfo; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui; @@ -36,6 +37,7 @@ public class ConfigWindowLayout extends JDialog { protected final QLabel lblYourAddress; protected final JSlider sldFontSize; protected final JSlider sldConnections; + protected ButtonGroup btnGroupLookAndFeel = null; protected final JButton btnSave; protected final JButton btnClose; @@ -106,6 +108,29 @@ public class ConfigWindowLayout extends JDialog { sldFontSize.setPaintLabels(true); grid.add(sldFontSize).fill(true, false).expand(true, false); + // look and feel + grid.add(new WordWrapLabel("LookAndFeel", true, false)) + .insets(headingInset) + .fill(true, false) + .expand(true, false); + grid.add( + new WordWrapLabel("Hier können Sie die Darstellung der Oberfläche zwischen unterschiedlichen" + + " 'LookAndFeels' umstellen.", + false, true)) + .fill(true, false) + .expand(true, false); + JPanel lafGroupPanel = new JPanel(); + lafGroupPanel.setLayout(new BoxLayout(lafGroupPanel, BoxLayout.LINE_AXIS)); + btnGroupLookAndFeel = new ButtonGroup(); + + for (LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) { + JRadioButton btn = new JRadioButton(laf.getName()); + btn.setToolTipText(laf.getClassName()); + btnGroupLookAndFeel.add(btn); + lafGroupPanel.add(btn); + } + grid.add(lafGroupPanel).expand(true, false).fill(true, false); + // Concurrent Connections grid.add(new WordWrapLabel("Verbindungen pro Transfer", true, false)) .insets(headingInset) @@ -141,7 +166,7 @@ public class ConfigWindowLayout extends JDialog { buttonPanel.add(btnSave); getContentPane().add(buttonPanel, BorderLayout.PAGE_END); - setPreferredSize(Gui.getScaledDimension(500, 600)); + setPreferredSize(Gui.getScaledDimension(500, 650)); } } |