Reformatting.
[jSite2.git] / src / net / pterodactylus / jsite / main / Main.java
index be543eb..e7c1d39 100644 (file)
 package net.pterodactylus.jsite.main;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
 
 import net.pterodactylus.jsite.core.CoreImpl;
 import net.pterodactylus.jsite.core.NodeManager;
@@ -30,15 +36,14 @@ import net.pterodactylus.util.logging.Logging;
 
 /**
  * Main class that is called by the VM.
- * 
+ *
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
  */
 public class Main {
 
        /**
         * Main entry method for the VM.
-        * 
+        *
         * @param args
         *            The command-line arguments
         */
@@ -56,13 +61,14 @@ public class Main {
 
                String configDirectory = System.getProperty("user.home") + File.separator + ".jSite";
 
-               ProjectManager projectManager = new ProjectManager(configDirectory);
-               core.setProjectManager(projectManager);
-
                NodeManager nodeManager = new NodeManager("jSite-" + Version.getVersion(), configDirectory);
                core.setNodeManager(nodeManager);
                nodeManager.addNodeListener(core);
 
+               ProjectManager projectManager = new ProjectManager(configDirectory);
+               core.setProjectManager(projectManager);
+               projectManager.setNodeManager(nodeManager);
+
                RequestManager requestManager = new RequestManager();
                core.setRequestManager(requestManager);
                nodeManager.addNodeListener(requestManager);
@@ -76,4 +82,39 @@ public class Main {
                core.start();
        }
 
+       /**
+        * Tries to load the class with the given name and includes the look & feel
+        * in the UIManager, if it exists.
+        *
+        * @param name
+        *            The name of the look & feel
+        * @param className
+        *            The name of the look & feel’s main class
+        */
+       @SuppressWarnings("unused")
+       private void addLookAndFeel(String name, String className) {
+               addLookAndFeels(new LookAndFeelInfo(name, className));
+       }
+
+       /**
+        * Tries to load each look & feel and adds it to the list of installed look
+        * & feels.
+        *
+        * @see UIManager#setInstalledLookAndFeels(LookAndFeelInfo[])
+        * @param lookAndFeelInfos
+        *            The look & feels to add
+        */
+       private void addLookAndFeels(LookAndFeelInfo... lookAndFeelInfos) {
+               List<LookAndFeelInfo> allLookAndFeelInfos = new ArrayList<LookAndFeelInfo>(Arrays.asList(UIManager.getInstalledLookAndFeels()));
+               for (LookAndFeelInfo lookAndFeelInfo : lookAndFeelInfos) {
+                       try {
+                               Class.forName(lookAndFeelInfo.getClassName());
+                               allLookAndFeelInfos.add(lookAndFeelInfo);
+                       } catch (ClassNotFoundException e) {
+                               /* okay, it doesn't exist, ignore. */
+                       }
+               }
+               UIManager.setInstalledLookAndFeels(allLookAndFeelInfos.toArray(new LookAndFeelInfo[0]));
+       }
+
 }