summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2017-06-19 13:35:44 +0200
committerSimon Rettberg2017-06-19 13:35:44 +0200
commit926cf503d1b228c50b9c9465847b0fa55b9f0251 (patch)
tree3d0194ffbb7ab05d3b31a62aee940d19aa1fca21
parentUpdate dependencies (diff)
parent[client] User can switch the used LookAndFeel in the settings (diff)
downloadtutor-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.java16
-rwxr-xr-x[-rw-r--r--]dozentenmodul/src/main/java/org/openslx/dozmod/Config.java18
-rwxr-xr-x[-rw-r--r--]dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java27
-rwxr-xr-x[-rw-r--r--]dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java27
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));
}
}