import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
String lafProp = System.getProperty("laf");
String lafSetting = Cache.getDefault("PREFERRED_LAF", null);
String laf = "none";
- if (lafProp != null) {
- laf = lafProp;
- } else if (lafSetting != null) {
- laf = lafSetting;
+ if (lafProp != null)
+ {
+ laf = lafProp;
+ }
+ else if (lafSetting != null)
+ {
+ laf = lafSetting;
}
boolean lafSet = false;
switch (laf)
break;
case "gtk":
lafSet = setGtkLookAndFeel();
- {
- System.err.println("Could not set requested laf=" + laf);
- }
+ {
+ System.err.println("Could not set requested laf=" + laf);
+ }
break;
case "metal":
lafSet = setMetalLookAndFeel();
- {
- System.err.println("Could not set requested laf=" + laf);
- }
+ {
+ System.err.println("Could not set requested laf=" + laf);
+ }
break;
case "nimbus":
lafSet = setNimbusLookAndFeel();
- {
- System.err.println("Could not set requested laf=" + laf);
- }
+ {
+ System.err.println("Could not set requested laf=" + laf);
+ }
+ break;
+ case "quaqua":
+ lafSet = setQuaquaLookAndFeel();
+ {
+ System.err.println("Could not set requested laf=" + laf);
+ }
+ break;
+ case "vaqua":
+ lafSet = setVaquaLookAndFeel();
+ {
+ System.err.println("Could not set requested laf=" + laf);
+ }
break;
case "mac":
lafSet = setMacLookAndFeel();
if (!lafSet)
{
setSystemLookAndFeel();
- if (Platform.isLinux() && ! Platform.isJS()) {
+ if (Platform.isLinux() && !Platform.isJS())
+ {
setMetalLookAndFeel();
}
if (Platform.isAMacAndNotJS())
return set;
}
- private static boolean setGtkLookAndFeel()
+ private static boolean setSpecificLookAndFeel(String name,
+ String className, boolean nameStartsWith)
{
boolean set = false;
- String laf = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
try
{
- for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
- if (info.getName() != null && info.getName().startsWith("Gtk")) {
- laf = info.getClassName();
+ for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
+ {
+ if (info.getName() != null && nameStartsWith
+ ? info.getName().toLowerCase()
+ .startsWith(name.toLowerCase())
+ : info.getName().toLowerCase().equals(name.toLowerCase()))
+ {
+ className = info.getClassName();
break;
}
}
- UIManager.setLookAndFeel(laf);
+ UIManager.setLookAndFeel(className);
set = true;
} catch (Exception ex)
{
return set;
}
+ private static boolean setGtkLookAndFeel()
+ {
+ return setSpecificLookAndFeel("gtk",
+ "com.sun.java.swing.plaf.gtk.GTKLookAndFeel", true);
+ }
+
private static boolean setMetalLookAndFeel()
{
- boolean set = false;
- String laf = "javax.swing.plaf.metal.MetalLookAndFeel";
- try
- {
- for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
- if (info.getName() != null && info.getName().equals("Metal")) {
- laf = info.getClassName();
- break;
- }
- }
- UIManager.setLookAndFeel(laf);
- set = true;
- } catch (Exception ex)
- {
- System.err.println("Unexpected Look and Feel Exception");
- ex.printStackTrace();
- }
- return set;
+ return setSpecificLookAndFeel("metal",
+ "javax.swing.plaf.metal.MetalLookAndFeel", false);
}
private static boolean setNimbusLookAndFeel()
{
- boolean set = false;
- String laf = "javax.swing.plaf.nimbus.NimbusLookAndFeel";
- try
- {
- for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
- if (info.getName() != null && info.getName().equals("Nimbus")) {
- laf = info.getClassName();
- break;
- }
- }
- UIManager.setLookAndFeel(laf);
- set = true;
- } catch (Exception ex)
- {
- System.err.println("Unexpected Look and Feel Exception");
- ex.printStackTrace();
- }
- return set;
+ return setSpecificLookAndFeel("nimbus",
+ "javax.swing.plaf.nimbus.NimbusLookAndFeel", false);
+ }
+
+ private static boolean setQuaquaLookAndFeel()
+ {
+ return setSpecificLookAndFeel("quaqua",
+ ch.randelshofer.quaqua.QuaquaManager.getLookAndFeel().getClass()
+ .getName(),
+ false);
+ }
+
+ private static boolean setVaquaLookAndFeel()
+ {
+ return setSpecificLookAndFeel("vaqua",
+ "org.violetlib.aqua.AquaLookAndFeel", false);
}
private static boolean setMacLookAndFeel()
{
boolean set = false;
- LookAndFeel lookAndFeel = ch.randelshofer.quaqua.QuaquaManager
- .getLookAndFeel();
System.setProperty("com.apple.mrj.application.apple.menu.about.name",
"Jalview");
System.setProperty("apple.laf.useScreenMenuBar", "true");
- if (lookAndFeel != null)
+ set = setQuaquaLookAndFeel();
+ if ((!set) || !UIManager.getLookAndFeel().getClass().toString()
+ .toLowerCase().contains("quaqua"))
{
- try
- {
- UIManager.setLookAndFeel(lookAndFeel);
- set = true;
- } catch (Throwable e)
- {
- System.err.println(
- "Failed to set QuaQua look and feel: " + e.toString());
- }
- }
- if (lookAndFeel == null
- || !(lookAndFeel.getClass().isAssignableFrom(
- UIManager.getLookAndFeel().getClass()))
- || !UIManager.getLookAndFeel().getClass().toString()
- .toLowerCase().contains("quaqua"))
- {
- try
- {
- System.err.println(
- "Quaqua LaF not available on this plaform. Using VAqua(4).\nSee https://issues.jalview.org/browse/JAL-2976");
- UIManager.setLookAndFeel("org.violetlib.aqua.AquaLookAndFeel");
- set = true;
- } catch (Throwable e)
- {
- System.err
- .println("Failed to reset look and feel: " + e.toString());
- }
+ set = setVaquaLookAndFeel();
}
return set;
}