diff --git a/parabotv2/src/org/parabot/core/ui/BotUI.java b/parabotv2/src/org/parabot/core/ui/BotUI.java index 61ff190..fcf4055 100644 --- a/parabotv2/src/org/parabot/core/ui/BotUI.java +++ b/parabotv2/src/org/parabot/core/ui/BotUI.java @@ -14,6 +14,8 @@ import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; /** * @@ -42,6 +44,20 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener, setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setIconImage(Images.getResource("/org/parabot/core/ui/images/icon.png")); + + /** Adds the dock icon to mac users */ + try { + Class util = Class.forName("com.apple.eawt.Application"); + Method getApplication = util.getMethod("getApplication", new Class[0]); + Object application = getApplication.invoke(util); + Class params[] = new Class[1]; + params[0] = Image.class; + Method setDockIconImage = util.getMethod("setDockIconImage", params); + setDockIconImage.invoke(application, Images.getResource("/org/parabot/core/ui/images/icon.png")); + } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + // Ignore for windows + } + setLayout(new BorderLayout()); addComponentListener(this); addWindowListener(this); diff --git a/parabotv2/src/org/parabot/core/ui/LoginUI.java b/parabotv2/src/org/parabot/core/ui/LoginUI.java index 7596098..401761a 100644 --- a/parabotv2/src/org/parabot/core/ui/LoginUI.java +++ b/parabotv2/src/org/parabot/core/ui/LoginUI.java @@ -1,29 +1,21 @@ package org.parabot.core.ui; -import java.awt.BorderLayout; -import java.awt.Desktop; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.io.IOException; -import java.net.URI; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.JTextField; - import org.parabot.core.Core; import org.parabot.core.forum.AccountManager; import org.parabot.core.forum.AccountManagerAccess; import org.parabot.core.ui.images.Images; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URI; + /** * * Users must login with their parabot account through this LoginUI class @@ -91,6 +83,19 @@ public class LoginUI extends JFrame { this.setIconImage(Images .getResource("/org/parabot/core/ui/images/icon.png")); + /** Adds the dock icon to mac users */ + try { + Class util = Class.forName("com.apple.eawt.Application"); + Method getApplication = util.getMethod("getApplication", new Class[0]); + Object application = getApplication.invoke(util); + Class params[] = new Class[1]; + params[0] = Image.class; + Method setDockIconImage = util.getMethod("setDockIconImage", params); + setDockIconImage.invoke(application, Images.getResource("/org/parabot/core/ui/images/icon.png")); + } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + // Ignore for windows + } + int w = 250; int x = 8; int y = 64; diff --git a/parabotv2/src/org/parabot/core/ui/ServerSelector.java b/parabotv2/src/org/parabot/core/ui/ServerSelector.java index 0bdc6dc..54f8148 100644 --- a/parabotv2/src/org/parabot/core/ui/ServerSelector.java +++ b/parabotv2/src/org/parabot/core/ui/ServerSelector.java @@ -8,8 +8,9 @@ import org.parabot.core.ui.utils.SwingUtil; import org.parabot.environment.Environment; import javax.swing.*; - import java.awt.*; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.LinkedList; import java.util.Queue; @@ -50,6 +51,19 @@ public class ServerSelector extends JFrame { this.setResizable(false); this.setIconImage(Images.getResource("/org/parabot/core/ui/images/icon.png")); + /** Adds the dock icon to mac users */ + try { + Class util = Class.forName("com.apple.eawt.Application"); + Method getApplication = util.getMethod("getApplication", new Class[0]); + Object application = getApplication.invoke(util); + Class params[] = new Class[1]; + params[0] = Image.class; + Method setDockIconImage = util.getMethod("setDockIconImage", params); + setDockIconImage.invoke(application, Images.getResource("/org/parabot/core/ui/images/icon.png")); + } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + // Ignore for windows + } + this.panel = new JPanel(new BorderLayout()); this.panel.setPreferredSize(new Dimension(600, 400)); diff --git a/parabotv2/src/org/parabot/environment/scripts/Frameworks.java b/parabotv2/src/org/parabot/environment/scripts/Frameworks.java new file mode 100755 index 0000000..0f66eea --- /dev/null +++ b/parabotv2/src/org/parabot/environment/scripts/Frameworks.java @@ -0,0 +1,67 @@ +package org.parabot.environment.scripts; + +import java.util.Collection; + +import org.parabot.environment.scripts.framework.AbstractFramework; +import org.parabot.environment.scripts.framework.LoopTask; +import org.parabot.environment.scripts.framework.Strategy; + +/** + * + * Holds various script frameworks + * + * @author Everel + * + */ +public class Frameworks { + + public static Looper getLooper(LoopTask loopTask) { + return new Looper(loopTask); + } + + public static StrategyWorker getStrategyWorker(Collection strategies) { + return new StrategyWorker(strategies); + } + +} + +class Looper extends AbstractFramework { + private LoopTask loopTask = null; + + public Looper(LoopTask loopTask) { + this.loopTask = loopTask; + } + @Override + public boolean execute() { + int sleepTime = loopTask.loop(); + if(sleepTime < 0) { + return false; + } + try { + Thread.sleep(sleepTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return true; + } +} + +class StrategyWorker extends AbstractFramework { + private Collection strategies; + + public StrategyWorker(Collection strategies) { + this.strategies = strategies; + } + + @Override + public boolean execute() { + for(Strategy s : strategies) { + if(s.activate()) { + s.execute(); + return true; + } + } + return true; + } + +} diff --git a/parabotv2/src/org/parabot/environment/servers/LocalServerExecuter.java b/parabotv2/src/org/parabot/environment/servers/LocalServerExecuter.java new file mode 100755 index 0000000..61a9f4c --- /dev/null +++ b/parabotv2/src/org/parabot/environment/servers/LocalServerExecuter.java @@ -0,0 +1,50 @@ +package org.parabot.environment.servers; + +import org.parabot.core.Core; +import org.parabot.core.Directories; +import org.parabot.core.build.BuildPath; +import org.parabot.core.classpath.ClassPath; +import org.parabot.environment.servers.executers.ServerExecuter; + +import java.net.MalformedURLException; + +/** + * + * Loads locally stored server providers + * + * @author Everel + * + */ +public class LocalServerExecuter extends ServerExecuter { + private final ServerProvider serverProvider; + private ClassPath classPath; + private String serverName; + + public LocalServerExecuter(ServerProvider serverProvider, + ClassPath classPath, final String serverName) { + this.serverProvider = serverProvider; + this.classPath = classPath; + this.serverName = serverName; + } + + @Override + public void run() { + // add jar or directory to buildpath. + if (this.classPath.isJar()) { + Core.verbose("Adding server provider jar to buildpath: " + + this.classPath.lastParsed.toString()); + this.classPath.addToBuildPath(); + } else { + Core.verbose("Adding server providers directory to buildpath: " + + Directories.getServerPath().getPath()); + try { + BuildPath.add(Directories.getServerPath().toURI().toURL()); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + // finalize + super.finalize(this.serverProvider, this.serverName); + } + +}