From 244588f5b633d7a26fa826de92745db535403451 Mon Sep 17 00:00:00 2001 From: Dane Date: Thu, 20 Jun 2013 15:56:47 -0400 Subject: [PATCH] Updated ServerSelector + Added Awt/Swing Utility --- parabotv2/src/org/parabot/Landing.java | 1 - .../core/parsers/ServerManifestParser.java | 2 +- parabotv2/src/org/parabot/core/ui/BotUI.java | 33 +++------ .../org/parabot/core/ui/ServerSelector.java | 70 ++++++++++++------- .../core/ui/components/ServerPanel.java | 14 ++-- .../org/parabot/core/ui/utils/AwtUtil.java | 29 ++++++++ .../src/org/parabot/core/ui/utils/Center.java | 30 -------- .../org/parabot/core/ui/utils/SwingUtil.java | 27 +++++++ 8 files changed, 113 insertions(+), 93 deletions(-) create mode 100644 parabotv2/src/org/parabot/core/ui/utils/AwtUtil.java delete mode 100644 parabotv2/src/org/parabot/core/ui/utils/Center.java create mode 100644 parabotv2/src/org/parabot/core/ui/utils/SwingUtil.java diff --git a/parabotv2/src/org/parabot/Landing.java b/parabotv2/src/org/parabot/Landing.java index 8c28cb2..4230f98 100644 --- a/parabotv2/src/org/parabot/Landing.java +++ b/parabotv2/src/org/parabot/Landing.java @@ -25,6 +25,5 @@ public final class Landing { Core.enableDevMode(); ServerSelector.getInstance().setVisible(true); } - } diff --git a/parabotv2/src/org/parabot/core/parsers/ServerManifestParser.java b/parabotv2/src/org/parabot/core/parsers/ServerManifestParser.java index fad5f52..8ddf905 100644 --- a/parabotv2/src/org/parabot/core/parsers/ServerManifestParser.java +++ b/parabotv2/src/org/parabot/core/parsers/ServerManifestParser.java @@ -33,7 +33,7 @@ public class ServerManifestParser { if(Core.isDevMode()) { return localDesc(); } - return publicDesc(); + return publicDesc(); } private ServerDescription[] publicDesc() { diff --git a/parabotv2/src/org/parabot/core/ui/BotUI.java b/parabotv2/src/org/parabot/core/ui/BotUI.java index 3f9a4ab..9f506a5 100644 --- a/parabotv2/src/org/parabot/core/ui/BotUI.java +++ b/parabotv2/src/org/parabot/core/ui/BotUI.java @@ -17,13 +17,14 @@ import org.parabot.core.ui.components.BotToolbar; import org.parabot.core.ui.components.GamePanel; import org.parabot.core.ui.components.LogArea; import org.parabot.core.ui.images.Images; -import org.parabot.core.ui.utils.Center; +import org.parabot.core.ui.utils.AwtUtil; +import org.parabot.core.ui.utils.SwingUtil; /** * Bot frame * * @author Clisprail - * + * */ public class BotUI extends JFrame { @@ -47,7 +48,7 @@ public class BotUI extends JFrame { new Thread(new Runnable() { @Override public void run() { - + } }).start(); } @@ -62,32 +63,16 @@ public class BotUI extends JFrame { pane.addLoader(); getContentPane().setLayout(layout); setJMenuBar(bar); - setTitle("parabot v2"); + setTitle("Parabot"); setIconImage(Images.getResource("/org/parabot/core/ui/images/icon.png")); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setResizable(false); - Center.centerFramea(this, 775, 683); - layout.setHorizontalGroup(layout - .createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout - .createSequentialGroup() - .addContainerGap() - .addGroup(layout - .createParallelGroup(GroupLayout.Alignment.LEADING))) - .addComponent(tool, 768, 768, 768) - .addComponent(pane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(textPane, 768, 768, 768)); - layout.setVerticalGroup(layout - .createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout - .createSequentialGroup() - .addComponent(tool, 30, 30, 30) - .addComponent(pane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(textPane, 100, 100, 100) - .addContainerGap(58, Short.MAX_VALUE))); + SwingUtil.center(this); + layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))).addComponent(tool, 768, 768, 768).addComponent(pane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addComponent(textPane, 768, 768, 768)); + layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(tool, 30, 30, 30).addComponent(pane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addComponent(textPane, 100, 100, 100).addContainerGap(58, Short.MAX_VALUE))); LogArea.log("Welcome to Parabot v2"); } - + public JMenuBar getBar() { return bar; } diff --git a/parabotv2/src/org/parabot/core/ui/ServerSelector.java b/parabotv2/src/org/parabot/core/ui/ServerSelector.java index 54f1bfb..165e0d6 100644 --- a/parabotv2/src/org/parabot/core/ui/ServerSelector.java +++ b/parabotv2/src/org/parabot/core/ui/ServerSelector.java @@ -1,5 +1,6 @@ package org.parabot.core.ui; +import java.awt.BorderLayout; import java.awt.Dimension; import java.util.LinkedList; import java.util.Queue; @@ -10,49 +11,64 @@ import javax.swing.JScrollPane; import org.parabot.core.desc.ServerDescription; import org.parabot.core.parsers.ServerManifestParser; -import org.parabot.core.ui.utils.Center; +import org.parabot.core.ui.utils.AwtUtil; +import org.parabot.core.ui.utils.SwingUtil; import org.parabot.core.ui.widgets.ServerWidget; +/** + * + * @author Dane + * + */ + public class ServerSelector extends JFrame { - private static final long serialVersionUID = 1L; + + private static final long serialVersionUID = 5238720307271493899L; private static ServerSelector instance = null; + private JPanel panel; public static ServerSelector getInstance() { - if (instance != null) { - instance.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - return instance; + if (instance == null) { + instance = new ServerSelector(); } - return instance = new ServerSelector(); + return instance; } public ServerSelector() { - setLayout(null); + + this.setTitle("Servers"); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setResizable(false); + + this.panel = new JPanel(new BorderLayout()); + this.panel.setPreferredSize(new Dimension(400, 200)); + Queue widgets = getServers(); - JPanel p = new JPanel(); - p.setBounds(0, 0, 400, 800); - p.setLayout(null); - p.setPreferredSize(new Dimension(400, widgets.size() * 100)); - JScrollPane pane = new JScrollPane(p); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - final int count = widgets.size() - 1; - while (widgets.size() > 0) { - final ServerWidget widget = widgets.poll(); - widget.setBounds(0, (count - widgets.size()) * 100, 400, 100); - p.add(widget); + + JPanel interior = new JPanel(null); + interior.setPreferredSize(new Dimension(400, widgets.size() * 100)); + + int i = 0; + for (ServerWidget w : widgets) { + w.setSize(400, 100); + w.setLocation(0, i * 100); + interior.add(w); + i++; } - pane.setBounds(0, 0, 400, 200); - pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - getContentPane().add(pane); - setResizable(false); - setTitle("Servers"); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - Center.centerFramea(this, 406, 228); + + JScrollPane scrlInterior = new JScrollPane(interior); + scrlInterior.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + + this.panel.add(scrlInterior, BorderLayout.CENTER); + this.add(panel); + + SwingUtil.finalize(this); + } public Queue getServers() { final Queue widgets = new LinkedList(); - for (ServerDescription desc : new ServerManifestParser() - .getDescriptions()) { + for (ServerDescription desc : new ServerManifestParser().getDescriptions()) { widgets.add(new ServerWidget(desc)); } return widgets; diff --git a/parabotv2/src/org/parabot/core/ui/components/ServerPanel.java b/parabotv2/src/org/parabot/core/ui/components/ServerPanel.java index 0c8e8c4..a25460f 100644 --- a/parabotv2/src/org/parabot/core/ui/components/ServerPanel.java +++ b/parabotv2/src/org/parabot/core/ui/components/ServerPanel.java @@ -10,31 +10,25 @@ import javax.swing.JPanel; /** * * @author Clisprail - * + * */ public class ServerPanel extends JPanel { private static final long serialVersionUID = 6034139911394898295L; - public ServerPanel() { setBorder(null); setOpaque(false); setPreferredSize(new Dimension(765, 503)); GroupLayout layout = new GroupLayout(this); setLayout(layout); - layout.setHorizontalGroup(layout.createParallelGroup( - GroupLayout.Alignment.LEADING).addGap(0, 706, Short.MAX_VALUE)); - layout.setVerticalGroup(layout.createParallelGroup( - GroupLayout.Alignment.LEADING).addGap(0, 418, Short.MAX_VALUE)); + layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 706, Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 418, Short.MAX_VALUE)); } - - + @Override protected void paintComponent(Graphics g) { g.setColor(Color.LIGHT_GRAY); g.fillRect(0, 0, getWidth(), getHeight()); } - - } diff --git a/parabotv2/src/org/parabot/core/ui/utils/AwtUtil.java b/parabotv2/src/org/parabot/core/ui/utils/AwtUtil.java new file mode 100644 index 0000000..66b3419 --- /dev/null +++ b/parabotv2/src/org/parabot/core/ui/utils/AwtUtil.java @@ -0,0 +1,29 @@ +package org.parabot.core.ui.utils; + +import java.awt.Dimension; +import java.awt.Toolkit; + +public class AwtUtil { + + private static Toolkit toolkit; + + public static Toolkit getToolkit() { + if (toolkit == null) { + toolkit = Toolkit.getDefaultToolkit(); + } + return toolkit; + } + + public static Dimension getScreenSize() { + return AwtUtil.getToolkit().getScreenSize(); + } + + public static int getScreenWidth() { + return AwtUtil.getScreenSize().width; + } + + public static int getScreenHeight() { + return AwtUtil.getScreenSize().height; + } + +} diff --git a/parabotv2/src/org/parabot/core/ui/utils/Center.java b/parabotv2/src/org/parabot/core/ui/utils/Center.java deleted file mode 100644 index fac5597..0000000 --- a/parabotv2/src/org/parabot/core/ui/utils/Center.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.parabot.core.ui.utils; - - -import java.awt.Dimension; -import java.awt.Toolkit; - -import javax.swing.JFrame; - -/** - * - * @author Clisprail - * - */ -public final class Center { - - /** - * Centers a JFrame - * @param frame - * @param width - * @param height - */ - public static final void centerFramea(final JFrame f, final int width, final int height) { - final Dimension fscreen = Toolkit.getDefaultToolkit().getScreenSize(); - final int x = (fscreen.width - width) / 2; - final int y = (fscreen.height - height) / 2; - f.setBounds(x, y, width, height); - } - -} - diff --git a/parabotv2/src/org/parabot/core/ui/utils/SwingUtil.java b/parabotv2/src/org/parabot/core/ui/utils/SwingUtil.java new file mode 100644 index 0000000..0be2ce2 --- /dev/null +++ b/parabotv2/src/org/parabot/core/ui/utils/SwingUtil.java @@ -0,0 +1,27 @@ +package org.parabot.core.ui.utils; + +import javax.swing.JFrame; + +public class SwingUtil { + + /** + * Centers the frame. + * + * @param f + */ + public static void center(JFrame f) { + f.setLocation((AwtUtil.getScreenWidth() - f.getWidth()) / 2, (AwtUtil.getScreenHeight() - f.getHeight()) / 2); + } + + /** + * Packs, centers, and shows the frame. + * + * @param f + */ + public static void finalize(JFrame f) { + f.pack(); + center(f); + f.setVisible(true); + } + +}