Working version of the refactoring DrawboxEditor. Added ToolBar in Editor

This commit is contained in:
2026-03-24 17:19:32 +03:00
parent ab30acd69a
commit a0a69c3587
7 changed files with 96 additions and 66 deletions

View File

@ -8,73 +8,98 @@ import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import gui.render.DrawboxRectengleRenderingFunction;
import gui.render.HitboxCircleRenderingFunction;
import gui.render.HitboxRectengleRenderingFunction;
import gui.render.ShapeRenderingFunction;
import model.Entity;
import repository.Project;
public class EditableCanvas extends JPanel implements MouseListener, MouseMotionListener, ListSelectionListener {
public class EditableCanvas extends JPanel implements MouseListener, MouseMotionListener {
DrawboxRectengleRenderingFunction drawboxRectengleRenderFunct;
HitboxRectengleRenderingFunction hitboxRectengleRenderFunct;
HitboxCircleRenderingFunction hitboxCircleRenderFunct;
ShapeRenderingFunction renderingFunction;
Entity entity;
BufferedImage image;
public EditableCanvas(Entity entity, BufferedImage image) {
this.entity = entity;
this.image = image;
drawboxRectengleRenderFunct = new DrawboxRectengleRenderingFunction(entity);
public EditableCanvas() {
drawboxRectengleRenderFunct = new DrawboxRectengleRenderingFunction();
hitboxRectengleRenderFunct = new HitboxRectengleRenderingFunction();
hitboxCircleRenderFunct = new HitboxCircleRenderingFunction();
drawboxRectengleRenderFunct.subscribe(Project.getInstance()); // подписка: Project получит данные ввиде обьекта Event, содержащий данные drawbox при отрисовке последней точки из 4-х.
//hitboxPanel.subscribe(Project.getInstance());
addMouseListener(this);
addMouseMotionListener(this);
}
public void drawing(Graphics2D g) {
if(renderingFunction!=null) {
if(renderingFunction!=null&&entity!=null) {
renderingFunction.drawing(g);
}
}
public void setDrawboxRectengleRenderingFunction() {
renderingFunction = drawboxRectengleRenderFunct;
}
public void setHitboxRectengleRenderingFunction() {
renderingFunction = hitboxRectengleRenderFunct;
}
public void setHitboxCircleRenderingFunction() {
renderingFunction = hitboxCircleRenderFunct;
}
@Override
public void mouseMoved(MouseEvent e) {
if(renderingFunction!=null) {
//System.out.println("moved");
if(renderingFunction!=null&&entity!=null) {
System.out.println("x="+e.getX()+"y="+e.getY());
renderingFunction.mouseMoved(e);
repaint();
}
}
@Override
public void mouseClicked(MouseEvent e) {
if(renderingFunction!=null) {
//System.out.println("Clicked");
if(renderingFunction!=null&&entity!=null) {
renderingFunction.mouseClicked(e);
repaint();
}
}
@Override
public void mousePressed(MouseEvent e) {
if(renderingFunction!=null) {
//System.out.println("mousePressed");
if(renderingFunction!=null&&entity!=null) {
renderingFunction.mousePressed(e);
repaint();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
if(entity != null) {
drawing((Graphics2D)g);
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
if(entity != null) {
drawing((Graphics2D)g);
}
}
public void setEntity(Entity e) {
entity = e;
drawboxRectengleRenderFunct.setEntity(e);
}
public void setImage(BufferedImage image) {
this.image = image;
}
@ -86,11 +111,7 @@ public class EditableCanvas extends JPanel implements MouseListener, MouseMotion
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void valueChanged(ListSelectionEvent e) {
//this.repaint();
//System.out.println(" Canvas image = " + image);
}
}