summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org
diff options
context:
space:
mode:
authorSteffen Ritter2017-06-12 14:27:58 +0200
committerSteffen Ritter2017-06-12 14:27:58 +0200
commit7c33652856b375d727ab1e30fd701cc6299b0bdf (patch)
tree2579af5b50b29082c70fc06a680c8ca6c680f0a3 /dozentenmodul/src/main/java/org
parentMerge branch 'master' of git.openslx.org:openslx-ng/tutor-module (diff)
downloadtutor-module-7c33652856b375d727ab1e30fd701cc6299b0bdf.tar.gz
tutor-module-7c33652856b375d727ab1e30fd701cc6299b0bdf.tar.xz
tutor-module-7c33652856b375d727ab1e30fd701cc6299b0bdf.zip
[client] User can switch the used LookAndFeel in the settings
Diffstat (limited to 'dozentenmodul/src/main/java/org')
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/App.java21
-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, 86 insertions, 7 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java
index 772031af..c2098491 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java
@@ -136,14 +136,23 @@ public class App {
System.setProperty("awt.useSystemAAFontSettings", "on");
System.setProperty("swing.aatext", "true");
- if (System.getProperty("swing.defaultlaf") == null) {
- try {
+ try {
+ 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 {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception e) {
+ }
+ } 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) {
}
}
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));
}
}