From 9f301966ebda5b2e92bc478ca68700feb11ce954 Mon Sep 17 00:00:00 2001 From: Parnassian Date: Sat, 22 Feb 2014 17:24:08 +0100 Subject: [PATCH] Painting on any applet --- parabotv2/src/org/parabot/core/Context.java | 1 - .../src/org/parabot/core/ui/BotDialog.java | 31 ++++++++++++++ parabotv2/src/org/parabot/core/ui/BotUI.java | 42 +++++++++++++++++-- .../core/ui/components/PaintComponent.java | 32 ++++++++++++++ 4 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 parabotv2/src/org/parabot/core/ui/BotDialog.java create mode 100644 parabotv2/src/org/parabot/core/ui/components/PaintComponent.java diff --git a/parabotv2/src/org/parabot/core/Context.java b/parabotv2/src/org/parabot/core/Context.java index e32bc17..f5952d4 100644 --- a/parabotv2/src/org/parabot/core/Context.java +++ b/parabotv2/src/org/parabot/core/Context.java @@ -165,7 +165,6 @@ public class Context { serverProvider.injectHooks(); Core.verbose("Done."); Core.verbose("Fetching game applet..."); - ; gameApplet = serverProvider.fetchApplet(); if (getClient() == null) { setClientInstance(gameApplet); diff --git a/parabotv2/src/org/parabot/core/ui/BotDialog.java b/parabotv2/src/org/parabot/core/ui/BotDialog.java new file mode 100644 index 0000000..5391da7 --- /dev/null +++ b/parabotv2/src/org/parabot/core/ui/BotDialog.java @@ -0,0 +1,31 @@ +package org.parabot.core.ui; + +import java.awt.BorderLayout; +import java.awt.Color; +import javax.swing.JDialog; + +import org.parabot.core.ui.components.PaintComponent; + +/** + * + * @author Everel + * + */ +public class BotDialog extends JDialog { + private static final long serialVersionUID = 521800552287194673L; + + public BotDialog(BotUI botUI) { + super(botUI); + botUI.setDialog(this); + + setLayout(new BorderLayout()); + setUndecorated(true); + setBackground(new Color(0, 0, 0, 0)); + setContentPane(new PaintComponent(botUI.getSize())); + setPreferredSize(botUI.getSize()); + setSize(botUI.getSize()); + setVisible(true); + } + +} + diff --git a/parabotv2/src/org/parabot/core/ui/BotUI.java b/parabotv2/src/org/parabot/core/ui/BotUI.java index c14c374..43f002f 100644 --- a/parabotv2/src/org/parabot/core/ui/BotUI.java +++ b/parabotv2/src/org/parabot/core/ui/BotUI.java @@ -6,12 +6,14 @@ import org.parabot.core.ui.components.GamePanel; import org.parabot.core.ui.components.LogArea; import org.parabot.core.ui.components.VerboseLoader; import org.parabot.core.ui.images.Images; -import org.parabot.core.ui.utils.SwingUtil; import javax.swing.*; + import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; /** * @@ -20,10 +22,11 @@ import java.awt.event.ActionListener; * @author Dane, Everel * */ -public class BotUI extends JFrame implements ActionListener { +public class BotUI extends JFrame implements ActionListener, ComponentListener { private static final long serialVersionUID = -2126184292879805519L; private static BotUI instance; + private static JDialog dialog; public static BotUI getInstance() { return instance == null ? instance = new BotUI() : instance; @@ -37,6 +40,7 @@ public class BotUI extends JFrame implements ActionListener { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setIconImage(Images.getResource("/org/parabot/core/ui/images/icon.png")); this.setLayout(new BorderLayout()); + this.addComponentListener(this); int iToolbarHeight = 24; int iGameHeight = 503; @@ -85,8 +89,10 @@ public class BotUI extends JFrame implements ActionListener { panel.add(scrlConsole); this.add(panel, BorderLayout.CENTER); - - SwingUtil.finalize(this); + + pack(); + setVisible(true); + new BotDialog(this); LogArea.log("parabot " + Configuration.BOT_VERSION +" started"); } @@ -107,4 +113,32 @@ public class BotUI extends JFrame implements ActionListener { System.out.println("Invalid command: " + command); } } + + protected void setDialog(JDialog dialog) { + BotUI.dialog = dialog; + } + + @Override + public void componentMoved(ComponentEvent e) { + if(dialog == null) { + return; + } + Point gameLocation = GamePanel.getInstance().getLocationOnScreen(); + dialog.setLocation(gameLocation.x, gameLocation.y); + } + + @Override + public void componentResized(ComponentEvent e) { + + } + + @Override + public void componentShown(ComponentEvent e) { + + } + + @Override + public void componentHidden(ComponentEvent e) { + + } } diff --git a/parabotv2/src/org/parabot/core/ui/components/PaintComponent.java b/parabotv2/src/org/parabot/core/ui/components/PaintComponent.java new file mode 100644 index 0000000..056be21 --- /dev/null +++ b/parabotv2/src/org/parabot/core/ui/components/PaintComponent.java @@ -0,0 +1,32 @@ +package org.parabot.core.ui.components; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; + +import javax.swing.JPanel; + +/** + * + * The panel that is painted on + * + * @author Everel + * + */ +public class PaintComponent extends JPanel { + private static final long serialVersionUID = 4653612412080038193L; + + public PaintComponent(Dimension size) { + setPreferredSize(size); + setSize(size); + setOpaque(false); + } + + @Override + public void paintComponent(Graphics g) { + System.out.println("paint"); + g.setColor(Color.red); + g.drawString("hi", 10, 10); + } + +}