Set Nimbus as the default look and feel if it's available, otherwise fallback to the native LAF.  Allow LAF to be specified with swing.defaultlaf system property.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4894 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index a5d15ce..26f41b6 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -44,6 +44,7 @@
 import java.util.Iterator;
 import javax.swing.*;
 import javax.swing.plaf.FontUIResource;
+import javax.swing.UIManager.*;
 
 import com.tigervnc.rdr.*;
 import com.tigervnc.rfb.*;
@@ -64,14 +65,21 @@
 
   public static void setLookAndFeel() {
     try {
-      String nativeLaf = UIManager.getSystemLookAndFeelClassName();
-      if (nativeLaf.endsWith("WindowsLookAndFeel"))
-        UIManager.setLookAndFeel(nativeLaf);
+      // Use Nimbus LookAndFeel if it's available, otherwise fallback
+      // to the native laf, or Metal if no native laf is available.
+      String laf = System.getProperty("swing.defaultlaf");
+      if (laf == null) {
+        LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels();
+        for (int i = 0; i < installedLafs.length; i++) {
+          if (installedLafs[i].getName().equals("Nimbus"))
+            laf = installedLafs[i].getClassName();
+        }
+        if (laf == null)
+          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+      }
+      UIManager.setLookAndFeel(laf);
       UIManager.put("TitledBorder.titleColor",Color.blue);
-      LookAndFeel laf = UIManager.getLookAndFeel();
-      if (laf == null)
-        return;
-      if (laf.getName().equals("Metal")) {
+      if (UIManager.getLookAndFeel().getName().equals("Metal")) {
         UIManager.put("swing.boldMetal", Boolean.FALSE);
         FontUIResource f = new FontUIResource("SansSerif", Font.PLAIN, 11);
         java.util.Enumeration keys = UIManager.getDefaults().keys();
@@ -81,7 +89,7 @@
           if (value instanceof javax.swing.plaf.FontUIResource)
             UIManager.put(key, f);
         }
-      } else if (laf.getName().equals("Nimbus")) {
+      } else if (UIManager.getLookAndFeel().getName().equals("Nimbus")) {
         FontUIResource f;
         String os = System.getProperty("os.name");
         if (os.startsWith("Windows")) {