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:
Macocian Adrian Radu
2020-03-31 01:01:25 +03:00
parent c4b18404a8
commit 62f3d8d46c
35 changed files with 763 additions and 379 deletions

View File

@@ -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;
}

View File

@@ -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);
}
});
}

View File

@@ -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

View File

@@ -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();
}
}

View 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();
}
}

View 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();
}
}
}

View File

@@ -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);
}
});
}