Skip to content

Commit

Permalink
Removed dupe class, done up README, renamed some stuff for future update
Browse files Browse the repository at this point in the history
  • Loading branch information
eyeballcode committed Feb 11, 2016
1 parent 87c391a commit e367fe2
Show file tree
Hide file tree
Showing 12 changed files with 199 additions and 62 deletions.
109 changes: 109 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
#JRUtil

What's this?

It's an API for Java that hopes to clean and dry your code. Just see this:

Original:
System.out.print("Number of decimal places: ");
int numberOfDP = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.print("Number to round: ");
double number = Double.parseDouble(new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println(MathHelper.roundDoubleToXDP(number, numberOfDP));

With JRUtil:
int numberOfDP = TerminalHelper.readInt("Number of decimal places: ");
double number = TerminalHelper.readDouble("Number to round: ");
System.out.println(MathHelper.roundDoubleToXDP(number, numberOfDP));

Or maybe, random numbers:
int randomNumber = MathHelper.randomInt(1, TerminalHelper.readInt("What's the largest value for the random number? "));

It also gives you utility methods such as this:

BufferedImage screenGrab = AWTHelper.screenGrab();

Or maybe, to click and move the mouse?

AWTHelper.moveCursor(Toolkit.getDefaultToolkit().getScreenSize().width / 2, Toolkit.getDefaultToolkit().getScreenSize().height / 2);
That centers the mouse.

AWTHelper.LClick(Toolkit.getDefaultToolkit().getScreenSize().width / 2, Toolkit.getDefaultToolkit().getScreenSize().height / 2);
That left clicks in the middle of the screen.

AWTHelper.keyPress(KeyEvent.VK_ALT);
AWTHelper.keyPress(KeyEvent.VK_TAB);
AWTHelper.keyRelease(KeyEvent.VK_ALT);
AWTHelper.keyRelease(KeyEvent.VK_TAB);
That? Switches windows. (If you use Alt + Tab for it, of course.)

AWTHelper.getCursorPos();
Tells you where the cursor is.

-------

JavaScript lover? You'll find something you love here.

// Imports
import static com.jrutil.DelayedCode.setTimeout;
import static com.jrutil.RepeatedCode.setInterval;

//...

setTimeout(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Delayed by 500ms!");
}
}, 500);

setInterval(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Runs every 500ms!");
}
}, 500);

------

Terminal based apps? Plain white on black too boring? Why not bring in some colours?

ColorPrinter.println("%bold%%green%Success!");
ColorPrinter.print("%red%Build failed. %reset%Continue? %underline%");
String s = TerminalHelper.read();

Consult the ColorPrinter class JavaDocs for more info.

-------

Building an API? HashMaps that shouldn't be touched? Try the LockedHashMap or the LockableHashMap!

Once locked, they cannot be modified!

LockableHashMap<String, Integer> numbersMap = new LockableHashMap<String, Integer>();
for (int i = 0; i < 10; i++) numbersMap.put(String.valueOf(i), i);
numbersMap.lock();

Now, it contains the numbers 1 - 10, and nothing can be added!

-------------

UI stuff? Maybe a chat client that shows when you're typing?

JRTypingTextBox is for you then!

final JRTypingTextbox typingTextbox = new JRTypingTextbox();
typingTextbox.addTypingListener(new TypingListener() {
@Override
public void typingFinished(TypingEvent event) {
System.out.println(typingTextbox.getText());
}
});

There. After you finish typing, it prints the text to the terminal.



TODO FOR THIS PROJECT:

[ ]: JRTypingTextBox TypingListener#TypingStart(TypingEvent) to be done up.
12 changes: 11 additions & 1 deletion src/com/jrutil/AWTHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class AWTHelper {
/**
* Gets a screengrab of the screen.
*
* @param rectangle The {@link Rectangle} to capture, or null for the while screen.
* @param rectangle The {@link Rectangle} to capture, or null for the whole screen.
* @return A {@link BufferedImage} that contains the screengrab.
* @throws AWTException If an {@link AWTException} occurred. One example would be a {@link HeadlessException}
*/
Expand All @@ -34,6 +34,16 @@ public static BufferedImage screenGrab(Rectangle rectangle) throws AWTException
return robot.createScreenCapture(rectangle);
}

/**
* Gets a screengrab of the entire screen.
*
* @return The {@link BufferedImage} that contains the screengrab.
* @throws AWTException If an {@link AWTException} occurred. One example would be a {@link HeadlessException}
*/
public static BufferedImage screenGrab() throws AWTException {
return screenGrab(null);
}

/**
* Moves the cursor the the specified location on the screen.
*
Expand Down
22 changes: 0 additions & 22 deletions src/com/jrutil/RandomGen.java

This file was deleted.

1 change: 0 additions & 1 deletion src/com/jrutil/TerminalHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -209,5 +209,4 @@ public static long readLong(String prefix) throws IOException, NumberFormatExcep
return Long.parseLong(read(prefix));
}


}
60 changes: 33 additions & 27 deletions src/com/jrutil/ui/JRTypingTextbox.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.jrutil.ui;

import com.jrutil.ui.event.TypingEvent;

import javax.swing.*;
import javax.swing.text.Document;
import java.awt.event.KeyAdapter;
Expand All @@ -14,7 +16,7 @@
* <p/>
* <pre>
* JRTypingTextbox typingTextbox = new JRTypingTextbox();
* typingTextbox.addTypingFinishedListener(new TypingFinishedListener() {
* typingTextbox.addTypingListener(new TypingListener() {
* \@Override
* public void typingFinished(TypingEvent event) {
* // Prints the contents of the textbox to the console.
Expand All @@ -32,9 +34,11 @@
*/
public class JRTypingTextbox extends JTextField {

transient List<TypingFinishedListener> typingFinishedListeners = new LinkedList<TypingFinishedListener>();
transient List<TypingListener> TypingListeners = new LinkedList<TypingListener>();
int typingFinishedTime = 500;

private JRTypingTextboxThread thread = new JRTypingTextboxThread(TypingListeners, typingFinishedTime);

public JRTypingTextbox() {
this(null, null, 0);
}
Expand All @@ -51,16 +55,17 @@ public JRTypingTextbox(String text, int columns) {
this(null, text, columns);
}

public JRTypingTextbox(Document document, String text, int columns) {
public JRTypingTextbox(Document document, final String text, int columns) {
super(document, text, columns);

addKeyListener(new KeyAdapter() {
JRTypingTextboxThread thread = new JRTypingTextboxThread(typingFinishedListeners, typingFinishedTime);
int typeCount = 0;

@Override
public void keyReleased(KeyEvent e) {
if (KeyUtil.isPrintableKey(e) || e.getKeyCode() == 8) {
thread.interrupt();
thread = new JRTypingTextboxThread(typingFinishedListeners, typingFinishedTime);
thread = new JRTypingTextboxThread(TypingListeners, typingFinishedTime);
thread.start();
}
}
Expand All @@ -69,7 +74,7 @@ public void keyReleased(KeyEvent e) {
public void keyPressed(KeyEvent e) {
if (KeyUtil.isPrintableKey(e) || e.getKeyCode() == 8) {
thread.interrupt();
thread = new JRTypingTextboxThread(typingFinishedListeners, typingFinishedTime);
thread = new JRTypingTextboxThread(TypingListeners, typingFinishedTime);
}
}
});
Expand All @@ -94,44 +99,45 @@ public void setTypingFinishedTime(int typingFinishedTime) {
}

/**
* Adds a {@link TypingFinishedListener} to run when user typing is complete.
* Adds a {@link TypingListener} to run when user typing is complete.
*
* @param listener The {@link TypingFinishedListener} to attach.
* @see TypingFinishedListener
* @param listener The {@link TypingListener} to attach.
* @see TypingListener
* @see com.jrutil.ui.event.TypingEvent
* @see #removeTypingFinishedListner(TypingFinishedListener)
* @see #getTypingFinishedListners()
* @see #removeTypingListner(TypingListener)
* @see #getTypingListners()
*/
public synchronized void addTypingFinishedListener(TypingFinishedListener listener) {
public synchronized void addTypingListener(TypingListener listener) {
if (listener == null) return;
typingFinishedListeners.add(listener);
TypingListeners.add(listener);
}

/**
* Removes a {@link TypingFinishedListener} from the list of {@link TypingFinishedListener}s to run when user typing is complete.
* Removes a {@link TypingListener} from the list of {@link TypingListener}s to run when user typing is complete.
*
* @param listener The {@link TypingFinishedListener} to remove.
* @see TypingFinishedListener
* @param listener The {@link TypingListener} to remove.
* @see TypingListener
* @see com.jrutil.ui.event.TypingEvent
* @see #addTypingFinishedListener(TypingFinishedListener)
* @see #getTypingFinishedListners()
* @see #addTypingListener(TypingListener)
* @see #getTypingListners()
*/
public synchronized void removeTypingFinishedListner(TypingFinishedListener listener) {
public synchronized void removeTypingListner(TypingListener listener) {
if (listener == null) return;
typingFinishedListeners.remove(listener);
if (TypingListeners.size() == 1) return;
TypingListeners.remove(listener);
}

/**
* Gets an array {@link TypingFinishedListener} that will be run when the user finishes typing.
* Gets an array {@link TypingListener} that will be run when the user finishes typing.
*
* @return The array of {@link TypingFinishedListener}
* @see TypingFinishedListener
* @return The array of {@link TypingListener}
* @see TypingListener
* @see com.jrutil.ui.event.TypingEvent
* @see #addTypingFinishedListener(TypingFinishedListener)
* @see #removeTypingFinishedListner(TypingFinishedListener)
* @see #addTypingListener(TypingListener)
* @see #removeTypingListner(TypingListener)
*/
public TypingFinishedListener[] getTypingFinishedListners() {
return typingFinishedListeners.toArray(new TypingFinishedListener[typingFinishedListeners.size()]);
public TypingListener[] getTypingListners() {
return TypingListeners.toArray(new TypingListener[TypingListeners.size()]);
}


Expand Down
6 changes: 3 additions & 3 deletions src/com/jrutil/ui/JRTypingTextboxThread.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

class JRTypingTextboxThread extends Thread {

List<TypingFinishedListener> typingFinishedListeners;
List<TypingListener> typingFinishedListeners;

int typingFinishedTime;

JRTypingTextboxThread(List<TypingFinishedListener> listeners, int typingFinishedTime) {
JRTypingTextboxThread(List<TypingListener> listeners, int typingFinishedTime) {
typingFinishedListeners = listeners;
this.typingFinishedTime = typingFinishedTime;
}
Expand All @@ -24,7 +24,7 @@ public void run() {
// User started typing again, cancel it.
return;
}
for (TypingFinishedListener listener : typingFinishedListeners)
for (TypingListener listener : typingFinishedListeners)
listener.typingFinished(new TypingEvent());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/**
* A listener that runs {@link #typingFinished(TypingEvent)} when bound to a {@link JRTypingTextbox} and the user finishes typing in it.
*/
public interface TypingFinishedListener {
public interface TypingListener {

/**
* Run when the user finishes typing.
Expand All @@ -14,4 +14,10 @@ public interface TypingFinishedListener {
*/
void typingFinished(TypingEvent event);

/**
* Run when the user starts typing.
* @param event A {@link TypingEvent}
*/
void typingStarted(TypingEvent event);

}
2 changes: 1 addition & 1 deletion tests/com/jrutil/examples/AWTHelperExample_ScreenGrab.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void actionPerformed(ActionEvent e) {
@Override
public void actionPerformed(ActionEvent e) {
try {
BufferedImage grab = AWTHelper.screenGrab(null);
BufferedImage grab = AWTHelper.screenGrab();
label.setIcon(new ImageIcon(grab));
label.setText("");
pane.setPreferredSize(new Dimension(grab.getWidth() / 2, grab.getHeight() / 2));
Expand Down
7 changes: 4 additions & 3 deletions tests/com/jrutil/examples/AWTHelperExample_TrollingMouse.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.jrutil.examples;

import com.jrutil.AWTHelper;
import com.jrutil.RandomGen;
import com.jrutil.math.MathHelper;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import static com.jrutil.RepeatedCode.setInterval;

Expand All @@ -30,8 +31,8 @@ public static void main(String[] args) throws AWTException {
setInterval(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int nX = RandomGen.randomInt(x[0] - 1, x[0] + 1);
int nY = RandomGen.randomInt(y[0] - 1, y[0] + 1);
int nX = MathHelper.randomInt(x[0] - 1, x[0] + 1);
int nY = MathHelper.randomInt(y[0] - 1, y[0] + 1);
try {
AWTHelper.moveCursor(x[0], y[0]);
} catch (AWTException ignored) {
Expand Down
10 changes: 9 additions & 1 deletion tests/com/jrutil/examples/ColorPrinterExample.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.jrutil.examples;

import com.jrutil.ColorPrinter;
import com.jrutil.TerminalHelper;

import java.io.IOException;

/**
* An example to show off the {@link ColorPrinter} class.
Expand All @@ -12,7 +15,12 @@
*/
public class ColorPrinterExample {

public static void main(String[] args) {
public static void main(String[] args) throws IOException {

ColorPrinter.println("%bold%%green%Success!");
ColorPrinter.print("%red%Build failed. %reset%Continue? %underline%");
String s = TerminalHelper.read();

ColorPrinter.println("%bold%%yellow%Hello world!");
ColorPrinter.println("%yellow%Not so bold...");
ColorPrinter.println("%bold%%green%Success!");
Expand Down

0 comments on commit e367fe2

Please sign in to comment.