From 42673882c9e21adc04a6183ffb118be663c3ac80 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Tue, 24 Oct 2017 12:51:07 -0500 Subject: [PATCH] Implemented button detection / presses and scaling controller image template. Setup framework for configuration window. --- sigIRCv2.jar | Bin 3809906 -> 3817107 bytes src/sig/BackgroundColorButton.java | 8 +- src/sig/ColorPanel.java | 2 +- src/sig/MyPanel.java | 4 +- src/sig/modules/Controller/Button.java | 69 ++++++- .../modules/Controller/ClickableButton.java | 18 +- .../ControlConfigurationWindow.java | 10 + src/sig/modules/Controller/EditMode.java | 10 + .../clickablebutton/AddClickableButton.java | 23 +++ .../clickablebutton/CopyClickableButton.java | 24 +++ src/sig/modules/ControllerModule.java | 188 +++++++++++++++++- src/sig/utils/DrawUtils.java | 20 +- 12 files changed, 339 insertions(+), 37 deletions(-) create mode 100644 src/sig/modules/Controller/ControlConfigurationWindow.java create mode 100644 src/sig/modules/Controller/EditMode.java create mode 100644 src/sig/modules/Controller/clickablebutton/AddClickableButton.java create mode 100644 src/sig/modules/Controller/clickablebutton/CopyClickableButton.java diff --git a/sigIRCv2.jar b/sigIRCv2.jar index 929e0f341beda9879faa2890533d9156541f92e1..a38cba07c9d116698a15724f131859f6e63ad873 100644 GIT binary patch delta 43459 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 M_^DYH5g(-ge=U+3RR910 delta 35955 zcmZr%2RN4B|ITagz4zX`^uCc*$=;icki9qYrZUP(;)F6v*%?uikS&=NLS;ooMv9X3 zKd+~J^}GIE*SQ||{khNQtj`(GdEU~0eZc$D{sE8DPzRrY?7#t%0|y$;S)@^l;6FNN zQH_?zOXon*q(|Zj;+_}2;l+Q$!zC0<_%IQ`MELL<9+5#gWz{(govs6_gVzWS9B>Cl z_lQKXp(ZC7cJ69Lj{8|_7Z8pcOOXkD6ch>LCmFY%a?nmYO)fH??wrk$ol8G}(Xv?y z{YAdj`Q@o=>G4eJro{``?z)%0LRv4>c|H5GvW`Y#e@;YhENy>VS-~DaUs$26CFP*F zq3$u-)+nFK zI8oOQsqUA~F78@ea=s;}tX0eXEjboZZ-U$0NBc9Kb89A0oC_SIqyywj$)g1v(!oQb zJ+&@^^Mtod?Cd&e)GA5oBMJD{+Rri<`?RVSS%1sli+AUK`iU+a7CERuR=em zDjR$CkmqTZ_=F{$91bBa|D3Q0)n|Q<^q)T@OpD~o`X!lW9~fEsYOSAntSeAYscdXn z>Sqdjf2{5b<-2|@ZMhWjN^|p?;pT#2oN zb~1h%Ja<3%TaFg#HYNaq@!kjGI$sO22FmSCCW0s`dAz5}TXMS&=-p^5D;IljENnIP zm8tn#qs_?e&0Fv9zgFEc`&dLTA^0?6@-e=n#=;{LLE(o=r!u6-!<@+*O>ezSvLG!~ z_P&Vi@_XAN6?2MfNM~a!NvbWe-fN2P-E;arJLj+FGjfA zJyooCnmRS|Y=fSDWjZR8SC(7!Alao)EDIP^YZ{f->okn>ow{(w<)gmKqXG#{ z52C5y(73m@-JzPJzx>N+uZ)x>W@U?wP?Y=Jz1#D={fM$NErDF)e5A|A_@&drv#I<_ zQd-Z&u`g5g&feNmHE^(S!Ea4dqsW^k$Ilc0Fd{CyCfIb^_(BEqkVjHQd1>dEP+93w zrAH}N)PZ g=bT$9z8bVVW+*F;fe7i|Fwrs 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 diff --git a/src/sig/BackgroundColorButton.java b/src/sig/BackgroundColorButton.java index 48dd8ed..86cace3 100644 --- a/src/sig/BackgroundColorButton.java +++ b/src/sig/BackgroundColorButton.java @@ -44,9 +44,11 @@ public class BackgroundColorButton { if (ev.getX()>=x && ev.getX()<=x+buttonimg.getWidth() && ev.getY()>=y && ev.getY()<=y+buttonimg.getHeight()) { sigIRC.backgroundcol=sigIRC.colorpanel.getBackgroundColor(); - sigIRC.config.setProperty("backgroundColor", Integer.toString(sigIRC.backgroundcol.getRGB())); - sigIRC.config.saveProperties(); - sigIRC.panel.setBackground(sigIRC.backgroundcol); + if (sigIRC.backgroundcol!=null) { + sigIRC.config.setProperty("backgroundColor", Integer.toString(sigIRC.backgroundcol.getRGB())); + sigIRC.config.saveProperties(); + sigIRC.panel.setBackground(sigIRC.backgroundcol); + } } } } diff --git a/src/sig/ColorPanel.java b/src/sig/ColorPanel.java index b221627..6ad8eca 100644 --- a/src/sig/ColorPanel.java +++ b/src/sig/ColorPanel.java @@ -12,7 +12,7 @@ public class ColorPanel extends JPanel{ } public Color getBackgroundColor() { - return JColorChooser.showDialog(this, "Background Color Picker", Color.CYAN); + return JColorChooser.showDialog(this, "Background Color Picker", sigIRC.backgroundcol); } public Dimension getPreferredSize() { diff --git a/src/sig/MyPanel.java b/src/sig/MyPanel.java index fc65cd9..e907573 100644 --- a/src/sig/MyPanel.java +++ b/src/sig/MyPanel.java @@ -39,8 +39,8 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo final public static Font programFont = new Font(sigIRC.messageFont,0,24); final public static Font userFont = new Font(sigIRC.usernameFont,0,16); final public static Font smallFont = new Font(sigIRC.touhoumotherConsoleFont,0,12); - int lastMouseX = 0; - int lastMouseY = 0; + public int lastMouseX = 0; + public int lastMouseY = 0; public MyPanel() { //setBorder(BorderFactory.createLineBorder(Color.black)); diff --git a/src/sig/modules/Controller/Button.java b/src/sig/modules/Controller/Button.java index d7de4f4..357bf8c 100644 --- a/src/sig/modules/Controller/Button.java +++ b/src/sig/modules/Controller/Button.java @@ -2,9 +2,12 @@ package sig.modules.Controller; import java.awt.Color; import java.awt.Graphics; +import java.awt.geom.Rectangle2D; import net.java.games.input.Component.Identifier; +import net.java.games.input.Component; import net.java.games.input.Controller; +import sig.sigIRC; import sig.modules.ControllerModule; public class Button { @@ -18,11 +21,19 @@ public class Button { ControllerModule parent; boolean square; - public Button(double pct_x, double pct_width, double pct_y, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module) { - this(pct_x,pct_width,pct_y,pct_height,parent_controller,button_identifier,col,module,false); + public Button(Rectangle2D.Double rect, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module) { + this(rect.getX(),rect.getY(),rect.getWidth(),rect.getHeight(),parent_controller,button_identifier,col,module,false); } - public Button(double pct_x, double pct_width, double pct_y, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module, boolean square) { + public Button(Rectangle2D.Double rect, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module, boolean square) { + this(rect.getX(),rect.getY(),rect.getWidth(),rect.getHeight(),parent_controller,button_identifier,col,module,square); + } + + public Button(double pct_x, double pct_y, double pct_width, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module) { + this(pct_x,pct_y,pct_width,pct_height,parent_controller,button_identifier,col,module,false); + } + + public Button(double pct_x, double pct_y, double pct_width, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module, boolean square) { this.pct_x = pct_x; this.pct_y = pct_y; this.pct_width=pct_width; @@ -39,12 +50,56 @@ public class Button { Color col_identity = g.getColor(); g.setColor(pressed_col); g.fillOval((int)(parent.getPosition().getX() - +parent.getPosition().getWidth()*pct_x) + +parent.getControllerImage().getWidth(sigIRC.panel)*pct_x) ,(int)(parent.getPosition().getY() - +parent.getPosition().getWidth()*pct_y) - ,(int)(parent.getPosition().getWidth()*pct_width), - (int)(parent.getPosition().getWidth()*pct_height)); + +parent.getControllerImage().getHeight(sigIRC.panel)*pct_y) + ,(int)(parent.getControllerImage().getWidth(sigIRC.panel)*pct_width), + (int)(parent.getControllerImage().getHeight(sigIRC.panel)*pct_height)); g.setColor(col_identity); } } + + public String getSaveString() { + StringBuilder sb = new StringBuilder(); + sb.append(pct_x);sb.append(","); + sb.append(pct_y);sb.append(","); + sb.append(pct_width);sb.append(","); + sb.append(pct_height);sb.append(","); + sb.append(ident.getName());sb.append(","); + sb.append(pressed_col.getRed());sb.append(","); + sb.append(pressed_col.getGreen());sb.append(","); + sb.append(pressed_col.getBlue());sb.append(","); + sb.append(pressed_col.getAlpha());sb.append(","); + sb.append(square); + return sb.toString(); + } + + public static Button loadFromString(String s, Controller controller, ControllerModule module) { + String[] split = s.split(","); + return new Button( + Double.parseDouble(split[0]), + Double.parseDouble(split[1]), + Double.parseDouble(split[2]), + Double.parseDouble(split[3]), + controller, + GrabIdentifierFromString(split[4],controller), + new Color( + Integer.parseInt(split[5]), + Integer.parseInt(split[6]), + Integer.parseInt(split[7]), + Integer.parseInt(split[8]) + ), + module, + Boolean.parseBoolean(split[9])); + } + + private static Identifier GrabIdentifierFromString(String string, Controller controller) { + for (Component cp : controller.getComponents()) { + Identifier id = cp.getIdentifier(); + if (id.getName().equals(string)) { + return id; + } + } + return null; + } } diff --git a/src/sig/modules/Controller/ClickableButton.java b/src/sig/modules/Controller/ClickableButton.java index d39087f..0fad1b7 100644 --- a/src/sig/modules/Controller/ClickableButton.java +++ b/src/sig/modules/Controller/ClickableButton.java @@ -11,9 +11,9 @@ import sig.utils.DrawUtils; import sig.utils.TextUtils; public class ClickableButton { - int x,y,width,height; - String label; - ControllerModule module; + protected int x,y,width,height; + protected String label; + protected ControllerModule module; public ClickableButton(Rectangle position, String button_label, ControllerModule parent_module) { this.x = (int)position.getX(); @@ -25,14 +25,14 @@ public class ClickableButton { } public void onClickEvent(MouseEvent ev) { - if (mouseInsideBounds(ev)) { - System.out.println("Click performed!"); - } + /*if (mouseInsideBounds(ev)) { + //System.out.println("Click performed!"); + }*/ } - private boolean mouseInsideBounds(MouseEvent ev) { - return ev.getX()>=x && ev.getX()<=x+width && - ev.getY()>=y && ev.getY()<=y+height; + protected boolean mouseInsideBounds(MouseEvent ev) { + return ev.getX()>=module.getPosition().getX()+x && ev.getX()<=module.getPosition().getX()+x+width && + ev.getY()>=module.getPosition().getY()+y && ev.getY()<=module.getPosition().getY()+y+height; } public void draw(Graphics g) { diff --git a/src/sig/modules/Controller/ControlConfigurationWindow.java b/src/sig/modules/Controller/ControlConfigurationWindow.java new file mode 100644 index 0000000..9e7d63f --- /dev/null +++ b/src/sig/modules/Controller/ControlConfigurationWindow.java @@ -0,0 +1,10 @@ +package sig.modules.Controller; + +import javax.swing.JFrame; + +public class ControlConfigurationWindow extends JFrame{ + + public ControlConfigurationWindow() { + this.setVisible(true); + } +} diff --git a/src/sig/modules/Controller/EditMode.java b/src/sig/modules/Controller/EditMode.java new file mode 100644 index 0000000..e0c49c0 --- /dev/null +++ b/src/sig/modules/Controller/EditMode.java @@ -0,0 +1,10 @@ +package sig.modules.Controller; + +public enum EditMode { + DRAGSELECTION, //Drag to set size of button. + SELECTION, //Selects a button for editing + DELETESELECTION, //Delete a button. + BUTTONSET, //Asks for a controller button to set this button to. + COLORSET, + DEFAULT; +} diff --git a/src/sig/modules/Controller/clickablebutton/AddClickableButton.java b/src/sig/modules/Controller/clickablebutton/AddClickableButton.java new file mode 100644 index 0000000..34bdcd9 --- /dev/null +++ b/src/sig/modules/Controller/clickablebutton/AddClickableButton.java @@ -0,0 +1,23 @@ +package sig.modules.Controller.clickablebutton; + +import java.awt.Rectangle; +import java.awt.event.MouseEvent; + +import sig.modules.ControllerModule; +import sig.modules.Controller.ClickableButton; +import sig.modules.Controller.EditMode; + +public class AddClickableButton extends ClickableButton{ + + public AddClickableButton(Rectangle position, String button_label, ControllerModule parent_module) { + super(position, button_label, parent_module); + } + + public void onClickEvent(MouseEvent ev) { + super.onClickEvent(ev); + if (mouseInsideBounds(ev)) { + module.setMode(EditMode.DRAGSELECTION); + module.resetDragPoints(); + } + } +} diff --git a/src/sig/modules/Controller/clickablebutton/CopyClickableButton.java b/src/sig/modules/Controller/clickablebutton/CopyClickableButton.java new file mode 100644 index 0000000..ba5c989 --- /dev/null +++ b/src/sig/modules/Controller/clickablebutton/CopyClickableButton.java @@ -0,0 +1,24 @@ +package sig.modules.Controller.clickablebutton; + +import java.awt.Rectangle; +import java.awt.event.MouseEvent; + +import sig.modules.ControllerModule; +import sig.modules.Controller.ClickableButton; +import sig.modules.Controller.ControlConfigurationWindow; +import sig.modules.Controller.EditMode; + +public class CopyClickableButton extends ClickableButton{ + ControlConfigurationWindow window; + + public CopyClickableButton(Rectangle position, String button_label, ControllerModule parent_module) { + super(position, button_label, parent_module); + } + + public void onClickEvent(MouseEvent ev) { + super.onClickEvent(ev); + if (mouseInsideBounds(ev)) { + window = new ControlConfigurationWindow(); + } + } +} diff --git a/src/sig/modules/ControllerModule.java b/src/sig/modules/ControllerModule.java index 60b437a..9c9e521 100644 --- a/src/sig/modules/ControllerModule.java +++ b/src/sig/modules/ControllerModule.java @@ -1,8 +1,10 @@ package sig.modules; import java.awt.Color; +import java.awt.Cursor; import java.awt.Graphics; import java.awt.Image; +import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.geom.Rectangle2D; @@ -22,6 +24,9 @@ import sig.Module; import sig.sigIRC; import sig.modules.Controller.Button; import sig.modules.Controller.ClickableButton; +import sig.modules.Controller.EditMode; +import sig.modules.Controller.clickablebutton.AddClickableButton; +import sig.modules.Controller.clickablebutton.CopyClickableButton; import sig.utils.DrawUtils; import sig.utils.FileUtils; @@ -32,6 +37,13 @@ public class ControllerModule extends Module{ double imgratio = 1; List