X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fmain%2FMain.java;h=e5e00300782e3e016f0205c17e71681d6ad4b5ef;hb=e1e349bae97feb779fc692eb03c2fea0e0e612c9;hp=39024ecad3f94b442cbb0438412910ce1f44bb57;hpb=98585bac12bf6597d824a0123f25915f4abf0331;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/main/Main.java b/src/net/pterodactylus/jsite/main/Main.java index 39024ec..e5e0030 100644 --- a/src/net/pterodactylus/jsite/main/Main.java +++ b/src/net/pterodactylus/jsite/main/Main.java @@ -20,16 +20,24 @@ package net.pterodactylus.jsite.main; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -import net.pterodactylus.jsite.core.Core; -import net.pterodactylus.jsite.core.ProjectManager; +import javax.swing.UIManager; +import javax.swing.UIManager.LookAndFeelInfo; + +import net.pterodactylus.jsite.core.CoreImpl; +import net.pterodactylus.jsite.core.NodeManager; +import net.pterodactylus.jsite.core.RequestManager; +import net.pterodactylus.jsite.core.project.ProjectManager; import net.pterodactylus.jsite.gui.SwingInterface; +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 { @@ -47,16 +55,66 @@ public class Main { * Starts the core and the default {@link SwingInterface}. */ private void start() { - Core core = new Core(); + Logging.setup("jSite"); + + CoreImpl core = new CoreImpl(); + + String configDirectory = System.getProperty("user.home") + File.separator + ".jSite"; + + NodeManager nodeManager = new NodeManager("jSite-" + Version.getVersion(), configDirectory); + core.setNodeManager(nodeManager); + nodeManager.addNodeListener(core); - ProjectManager projectManager = new ProjectManager(System.getProperty("user.home") + File.pathSeparator + ".jSite"); + ProjectManager projectManager = new ProjectManager(configDirectory); core.setProjectManager(projectManager); + projectManager.setNodeManager(nodeManager); - SwingInterface swingInterface = new SwingInterface(core); + RequestManager requestManager = new RequestManager(); + core.setRequestManager(requestManager); + nodeManager.addNodeListener(requestManager); + requestManager.setNodeManager(nodeManager); + requestManager.addRequestListener(core); + + SwingInterface swingInterface = new SwingInterface(core, configDirectory); core.addCoreListener(swingInterface); - swingInterface.start(); + Logging.addLoggingListener(swingInterface); 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 allLookAndFeelInfos = new ArrayList(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])); + } + }