mirror of
https://github.com/macocianradu/javaGUItoolkit.git
synced 2026-03-18 21:50:04 +00:00
added sliders
reworked painting added animations reworked point2 added point3 point4 made tag inner class in Debugger added fps animation parsing debuggers made new thread for painting at 60fps
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Helper.Debugger;
|
||||
import guiTree.Helper.Tag;
|
||||
import guiTree.Visual;
|
||||
import guiTree.events.MouseAdapter;
|
||||
|
||||
@@ -17,6 +16,7 @@ public class Button extends Visual {
|
||||
private Boolean pressed;
|
||||
private Boolean hovered;
|
||||
private BufferedImage icon;
|
||||
private int round = -1;
|
||||
|
||||
public Button() {
|
||||
this("", null);
|
||||
@@ -40,39 +40,39 @@ public class Button extends Visual {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent mouseEvent) {
|
||||
pressed = false;
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mousePressed(MouseEvent mouseEvent) {
|
||||
pressed = true;
|
||||
Debugger.log("Pressed: " + getName(), Tag.LISTENER);
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
update();
|
||||
Debugger.log("Pressed: " + getName(), Debugger.Tag.LISTENER);
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent mouseEvent) {
|
||||
pressed = false;
|
||||
Debugger.log("Calling repaint from released: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
update();
|
||||
Debugger.log("Calling repaint from released: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent mouseEvent) {
|
||||
hovered = true;
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
update();
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
@Override
|
||||
public void mouseExited(MouseEvent mouseEvent) {
|
||||
hovered = false;
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
update();
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent mouseEvent) {
|
||||
}
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent mouseEvent) {
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -82,11 +82,7 @@ public class Button extends Visual {
|
||||
{
|
||||
//Get Graphics
|
||||
Graphics2D g = imageBuffer.createGraphics();
|
||||
|
||||
//Set Transparency
|
||||
g.setComposite(AlphaComposite.Clear);
|
||||
g.fillRect(0, 0, getWidth(), getHeight());
|
||||
g.setComposite(AlphaComposite.Src);
|
||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
//Choose background
|
||||
if(hovered) {
|
||||
@@ -101,12 +97,12 @@ public class Button extends Visual {
|
||||
|
||||
//Draw Button
|
||||
if(getHasBorder()) {
|
||||
g.fillRect(1, 1, this.getWidth() - 2, this.getHeight() - 2);
|
||||
g.fillRoundRect(1, 1, getWidth() - 1, getHeight() - 1, round, round);
|
||||
g.setColor(getBorderColor());
|
||||
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
|
||||
g.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, round, round);
|
||||
}
|
||||
else {
|
||||
g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
|
||||
g.fillRoundRect(0, 0, getWidth(), getHeight(), round, round);
|
||||
}
|
||||
|
||||
//Draw Label
|
||||
@@ -138,6 +134,10 @@ public class Button extends Visual {
|
||||
g.dispose();
|
||||
}
|
||||
|
||||
public void setRound(int round) {
|
||||
this.round = round;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Helper.Debugger;
|
||||
import guiTree.Helper.Tag;
|
||||
import guiTree.Visual;
|
||||
import guiTree.events.MouseAdapter;
|
||||
|
||||
@@ -39,25 +38,24 @@ public class CheckBox extends Visual {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent mouseEvent) {
|
||||
marked = !marked;
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent mouseEvent) {
|
||||
hovered = true;
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseExited(MouseEvent mouseEvent) {
|
||||
hovered = false;
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent mouseEvent) {
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Helper.Point2d;
|
||||
import guiTree.Helper.Point2;
|
||||
import guiTree.Visual;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
@@ -15,7 +15,7 @@ public class CheckBoxList extends Visual {
|
||||
private List<CheckBox> checkBoxList;
|
||||
int spacing;
|
||||
private BufferedImage icon;
|
||||
private Point2d checkBoxSize;
|
||||
private Point2<Integer> checkBoxSize;
|
||||
|
||||
public CheckBoxList() {
|
||||
this(20);
|
||||
@@ -84,7 +84,7 @@ public class CheckBoxList extends Visual {
|
||||
for(CheckBox cb: checkBoxList) {
|
||||
cb.setSize(width, height);
|
||||
}
|
||||
checkBoxSize = new Point2d(width, height);
|
||||
checkBoxSize = new Point2<>(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,8 @@ package guiTree.Components;
|
||||
|
||||
import guiTree.Visual;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -105,4 +107,14 @@ public class Panel extends Visual {
|
||||
// reposition();
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint(BufferedImage imageBuffer) {
|
||||
Graphics2D g = imageBuffer.createGraphics();
|
||||
|
||||
g.setColor(getBackgroundColor());
|
||||
g.fillRect(0, 0, getWidth(), getHeight());
|
||||
|
||||
g.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
66
src/guiTree/Components/ScrollPanel.java
Normal file
66
src/guiTree/Components/ScrollPanel.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Helper.Debugger;
|
||||
import guiTree.Visual;
|
||||
import guiTree.events.MouseAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class ScrollPanel extends Visual {
|
||||
|
||||
private float positionX;
|
||||
private float positionY;
|
||||
private float ratioX;
|
||||
private float ratioY;
|
||||
private Slider verticalScrollBar;
|
||||
private Slider horizontalScrollBar;
|
||||
|
||||
public ScrollPanel() {
|
||||
super();
|
||||
setName("ScrollPanel");
|
||||
horizontalScrollBar = new Slider(Slider.Direction.Horizontal);
|
||||
verticalScrollBar = new Slider(Slider.Direction.Vertical);
|
||||
verticalScrollBar.setHasBorder(true);
|
||||
horizontalScrollBar.setHasBorder(true);
|
||||
addVisual(verticalScrollBar);
|
||||
addVisual(horizontalScrollBar);
|
||||
verticalScrollBar.setName("vertical scroll bar");
|
||||
horizontalScrollBar.setName("horizontal scroll bar");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSize() {
|
||||
super.setSize();
|
||||
if(verticalScrollBar != null && horizontalScrollBar != null) {
|
||||
verticalScrollBar.setSize(20, getHeight() - 20);
|
||||
horizontalScrollBar.setSize(getWidth() - 20, 20);
|
||||
return;
|
||||
}
|
||||
|
||||
if(horizontalScrollBar != null) {
|
||||
horizontalScrollBar.setSize(getWidth(), 20);
|
||||
}
|
||||
|
||||
if(verticalScrollBar != null) {
|
||||
verticalScrollBar.setSize(20, getHeight());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint(BufferedImage imageBuffer) {
|
||||
Graphics2D g = imageBuffer.createGraphics();
|
||||
if(getHasBorder()) {
|
||||
g.setColor(getBackgroundColor());
|
||||
g.fillRect(1, 1, getWidth() - 2, getHeight() - 2);
|
||||
g.setColor(getBorderColor());
|
||||
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
|
||||
}
|
||||
else {
|
||||
g.setColor(getBackgroundColor());
|
||||
g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
|
||||
}
|
||||
|
||||
g.dispose();
|
||||
}
|
||||
}
|
||||
264
src/guiTree/Components/Slider.java
Normal file
264
src/guiTree/Components/Slider.java
Normal file
@@ -0,0 +1,264 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Visual;
|
||||
import guiTree.events.MouseAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class Slider extends Visual {
|
||||
public enum Direction {
|
||||
Vertical,
|
||||
Horizontal
|
||||
}
|
||||
|
||||
private Direction direction;
|
||||
private Button slider;
|
||||
private Button button2;
|
||||
private Button button1;
|
||||
private SliderListener sliderListener;
|
||||
|
||||
public Slider() {
|
||||
this(Direction.Vertical);
|
||||
}
|
||||
|
||||
public Slider(Direction direction) {
|
||||
super();
|
||||
this.direction = direction;
|
||||
|
||||
button1 = new Button();
|
||||
button2 = new Button();
|
||||
slider = new Button();
|
||||
|
||||
setBackgroundColor(new Color(175, 175, 175));
|
||||
setForegroundColor(new Color(112, 112, 112));
|
||||
setAccentColor(new Color(50, 50, 50));
|
||||
button1.setHasBorder(false);
|
||||
button2.setHasBorder(false);
|
||||
|
||||
if(direction == Direction.Horizontal) {
|
||||
button1.setIcon("arrow_left_black");
|
||||
button2.setIcon("arrow_right_black");
|
||||
button1.setLocation(0.0f, 0.15f);
|
||||
button2.setLocation(-1.0f, 0.15f);
|
||||
slider.setLocation(-1.0f, 0.25f);
|
||||
slider.setSize(-1.0f, 0.5f);
|
||||
slider.setLocation(20, 0);
|
||||
}
|
||||
else {
|
||||
button1.setIcon("arrow_up_black");
|
||||
button2.setIcon("arrow_down_black");
|
||||
button1.setLocation(0.15f, 0.0f);
|
||||
button2.setLocation(0.15f, -1.0f);
|
||||
slider.setLocation(0.25f, -1.0f);
|
||||
slider.setSize(0.5f, -1.0f);
|
||||
slider.setLocation(0, 20);
|
||||
}
|
||||
|
||||
addVisual(button1);
|
||||
addVisual(button2);
|
||||
addVisual(slider);
|
||||
|
||||
button1.setLocation(0, 0);
|
||||
slider.setRound(10);
|
||||
button1.setRound(10);
|
||||
button2.setRound(10);
|
||||
|
||||
button1.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent mouseEvent) {
|
||||
moveSlider(-0.05f);
|
||||
button1.update();
|
||||
}
|
||||
});
|
||||
button2.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent mouseEvent) {
|
||||
moveSlider(0.05f);
|
||||
button2.update();
|
||||
}
|
||||
});
|
||||
sliderListener = new SliderListener();
|
||||
slider.addMouseListener(sliderListener);
|
||||
}
|
||||
|
||||
public float getSliderLocation() {
|
||||
if(direction == Direction.Vertical) {
|
||||
return (float)slider.getLocationY() / getHeight();
|
||||
}
|
||||
else {
|
||||
return (float)slider.getLocationX() / getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
public void setSliderSize(int width, int height) {
|
||||
slider.setSize(width, height);
|
||||
}
|
||||
|
||||
private void moveSlider(int offset) {
|
||||
if(direction == Direction.Vertical) {
|
||||
if(slider.getLocationY() + slider.getHeight() + offset > getHeight() - button2.getHeight()) {
|
||||
slider.setLocationY(getHeight() - slider.getHeight() - button2.getHeight());
|
||||
}
|
||||
else if (slider.getLocationY() + offset < button1.getHeight()) {
|
||||
slider.setLocationY(button1.getHeight());
|
||||
}
|
||||
else {
|
||||
slider.setLocationY(Math.round(slider.getLocationY() + offset));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(slider.getLocationX() + slider.getWidth() + offset > getWidth() - button2.getWidth()) {
|
||||
slider.setLocationX(getWidth() - slider.getWidth() - button2.getWidth());
|
||||
}
|
||||
else if (slider.getLocationX() + offset < button1.getWidth()) {
|
||||
slider.setLocationX(button1.getWidth());
|
||||
}
|
||||
else {
|
||||
slider.setLocationX(Math.round(slider.getLocationX() + offset));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setDirection(Direction direction) {
|
||||
this.direction = direction;
|
||||
if(direction == Direction.Horizontal) {
|
||||
button1.setIcon("arrow_left_black");
|
||||
button2.setIcon("arrow_right_black");
|
||||
button1.setLocation(0.0f, 0.15f);
|
||||
button2.setLocation(-1.0f, 0.15f);
|
||||
slider.setLocation(-1.0f, 0.25f);
|
||||
slider.setSize(-1.0f, 0.5f);
|
||||
slider.setLocation(20, 0);
|
||||
}
|
||||
else {
|
||||
button1.setIcon("arrow_up_black");
|
||||
button2.setIcon("arrow_down_black");
|
||||
button1.setLocation(0.15f, 0.0f);
|
||||
button2.setLocation(0.15f, -1.0f);
|
||||
slider.setLocation(0.25f, -1.0f);
|
||||
slider.setSize(0.5f, -1.0f);
|
||||
slider.setLocation(0, 20);
|
||||
}
|
||||
}
|
||||
|
||||
private void moveSlider(float offset) {
|
||||
if(direction == Direction.Vertical) {
|
||||
moveSlider(Math.round(offset * getHeight()));
|
||||
return;
|
||||
}
|
||||
moveSlider(Math.round(offset * getWidth()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBackgroundColor(Color color) {
|
||||
super.setBackgroundColor(color);
|
||||
button1.setBackgroundColor(new Color(0, 0, 0, 0.0f));
|
||||
button2.setBackgroundColor(new Color(0, 0, 0, 0.0f));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setForegroundColor(Color color) {
|
||||
super.setForegroundColor(color);
|
||||
slider.setBackgroundColor(color);
|
||||
slider.setAccentColor(color);
|
||||
button1.setAccentColor(color);
|
||||
button2.setAccentColor(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccentColor(Color color) {
|
||||
super.setAccentColor(color);
|
||||
button1.setForegroundColor(color);
|
||||
button2.setForegroundColor(color);
|
||||
slider.setForegroundColor(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBorderColor(Color color) {
|
||||
super.setBorderColor(color);
|
||||
button1.setBorderColor(color);
|
||||
button2.setBorderColor(color);
|
||||
slider.setBorderColor(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
super.setName(name);
|
||||
slider.setName(name + " slider");
|
||||
button1.setName(name + " button 1");
|
||||
button2.setName(name + " button 2");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSize() {
|
||||
super.setSize();
|
||||
if(direction == Direction.Vertical) {
|
||||
button1.setSize(Math.round(0.7f * getWidth()), Math.round(0.7f * getWidth()));
|
||||
button2.setSize(button1.getWidth(), button1.getHeight());
|
||||
button2.setLocation(0, getHeight() - button2.getHeight());
|
||||
slider.setSize(getWidth() / 2, 40);
|
||||
}
|
||||
else {
|
||||
button1.setSize(Math.round(0.7f * getHeight()), Math.round(0.7f * getHeight()));
|
||||
button2.setSize(button1.getWidth(), button1.getHeight());
|
||||
button2.setLocation(getWidth() - button2.getWidth(), 0);
|
||||
slider.setSize(40, getHeight() / 2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint(BufferedImage imageBuffer) {
|
||||
Graphics2D g = imageBuffer.createGraphics();
|
||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
if(getHasBorder()) {
|
||||
g.setColor(getBorderColor());
|
||||
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
|
||||
}
|
||||
g.setColor(getBackgroundColor());
|
||||
if(direction == Direction.Vertical) {
|
||||
int x1 = Math.round(0.15f * getWidth());
|
||||
int y1 = button1.getHeight();
|
||||
int x2 = Math.round(0.85f * getWidth()) - x1;
|
||||
int y2 = getHeight() - button2.getHeight() - y1;
|
||||
g.fillRoundRect(x1, y1, x2, y2, 10, 10);
|
||||
}
|
||||
else {
|
||||
int x1 = button1.getWidth();
|
||||
int y1 = Math.round(0.15f * getHeight());
|
||||
int x2 = getWidth() - button2.getWidth() - x1;
|
||||
int y2 = Math.round(0.85f * getHeight()) - y1;
|
||||
g.fillRoundRect(x1, y1, x2, y2, 10, 10);
|
||||
}
|
||||
g.dispose();
|
||||
}
|
||||
|
||||
private class SliderListener extends MouseAdapter {
|
||||
private int start;
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent mouseEvent) {
|
||||
if(direction == Direction.Vertical) {
|
||||
start = mouseEvent.getY();
|
||||
}
|
||||
else {
|
||||
start = mouseEvent.getX();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent mouseEvent) {
|
||||
if(direction == Direction.Vertical) {
|
||||
moveSlider(mouseEvent.getY() - start);
|
||||
start = mouseEvent.getY();
|
||||
}
|
||||
else {
|
||||
moveSlider(mouseEvent.getX() - start);
|
||||
start = mouseEvent.getX();
|
||||
}
|
||||
slider.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package guiTree.Components;
|
||||
|
||||
import guiTree.Helper.Debugger;
|
||||
import guiTree.Helper.Tag;
|
||||
import guiTree.Visual;
|
||||
import guiTree.events.MouseAdapter;
|
||||
|
||||
@@ -40,26 +39,25 @@ public class ToggleButton extends Visual {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent mouseEvent) {
|
||||
pressed = !pressed;
|
||||
Debugger.log("Pressed: " + getName(), Tag.LISTENER);
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Pressed: " + getName(), Debugger.Tag.LISTENER);
|
||||
Debugger.log("Calling repaint from pressed: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent mouseEvent) {
|
||||
hovered = true;
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from entered: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseExited(MouseEvent mouseEvent) {
|
||||
hovered = false;
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from exited: " + getName(), Debugger.Tag.PAINTING);
|
||||
update();
|
||||
}
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent mouseEvent) {
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Tag.PAINTING);
|
||||
repaint();
|
||||
Debugger.log("Calling repaint from moved: " + getName(), Debugger.Tag.PAINTING);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user