diff --git a/res/objecttypes.xml b/res/objecttypes.xml
index 7c07663..c06b117 100644
--- a/res/objecttypes.xml
+++ b/res/objecttypes.xml
@@ -2,7 +2,7 @@
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/src/gui/DrawboxEditor.java b/src/gui/DrawboxEditor.java
index fea35e2..0530f74 100644
--- a/src/gui/DrawboxEditor.java
+++ b/src/gui/DrawboxEditor.java
@@ -28,12 +28,21 @@ public class DrawboxEditor extends Editable {
DrawboxEditor(ListGUI listGUI) {
super(listGUI);
- //Если будет ошибка, попробовать в Editable прокинуть canvas, как сделано с ListGUI
- canvas = new EditableCanvas(entity, image);
- add(canvas,BorderLayout.CENTER);
- canvas.setBackground(Color.GRAY);
+
+ canvas = new EditableCanvas();
+ add(canvas);
+ //canvas.setBackground(Color.GRAY);
canvas.setDrawboxRectengleRenderingFunction();
canvas.setVisible(true);
+
+ clearLinesJButton.addActionListener((e)->{
+ if(entity != null) {
+ entity.getDrawbox().getDrawboxlistPoints().clear();
+ entity.getDrawbox().getbaseListPoints().clear();
+ canvas.repaint();
+ }});
+
+
logger.setLevel(Level.CONFIG);
}
@@ -51,24 +60,6 @@ public class DrawboxEditor extends Editable {
}
-
-
- public void clearPoints(){
-
- }
- // эта штука очищает точки при нажатии универскальной кнопки очистки в Main GUI. Это следует рефакторнуть и вместо передачи события сюда,
- // обрабатывать его прямо в Main GUI(лямбдой) вызывая отсюда только метод в духе clearPoints()
- /*@Override
- public void actionPerformed(ActionEvent e) {
- JTabbedPane parent = (JTabbedPane) getParent();
- if(parent.getSelectedComponent() == this){
- if(entity != null) {
- entity.getDrawbox().getDrawboxlistPoints().clear();
- entity.getDrawbox().getbaseListPoints().clear();
- repaint();
- }
- }
- }*/
}
diff --git a/src/gui/Editable.java b/src/gui/Editable.java
index d65732d..2301368 100644
--- a/src/gui/Editable.java
+++ b/src/gui/Editable.java
@@ -1,8 +1,7 @@
package gui;
+import java.awt.BorderLayout;
import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
@@ -11,10 +10,12 @@ import java.awt.image.BufferedImage;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
+import javax.swing.JToolBar;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -28,15 +29,22 @@ public abstract class Editable extends JPanel implements MouseListener, MouseMot
protected String selectedEntityName;
protected BufferedImage image;
EditableCanvas canvas;
-
+ JToolBar toolbar = new JToolBar("Toolbar",JToolBar.VERTICAL);
+ JButton clearLinesJButton;
+
private static Logger logger = Logger.getLogger("gui.Editable");
Editable(ListGUI listGUI){
this.listGUI = listGUI;
-
- addMouseListener(this);
- addMouseMotionListener(this);
+ setLayout(new BorderLayout());
+
+ clearLinesJButton = createButton("Clear lines",null,"res/destroy.png");
+
+ toolbar.setBorder(BorderFactory.createLoweredBevelBorder());
+ toolbar.addSeparator();
+ toolbar.add(clearLinesJButton);
+ this.add(toolbar,BorderLayout.EAST);
// РАСКОММЕНТИТЬ ЕСЛИ НУЖНО ВЫВОДИТЬ ПОДРОБНЫЕ ЛОГИ
logger.setLevel(Level.ALL);
@@ -90,11 +98,13 @@ public abstract class Editable extends JPanel implements MouseListener, MouseMot
}
image = Project.getInstance().loadImageByName(selectedEntityName);
//TODO: if(image == null) вызов FileChooser'a и выбор изображения
- this.repaint();
- //canvas.repaint();
- System.out.println(" Edit image = " + image);
- System.out.println("---");
- System.out.println(" Canvas image = " + image);
+ canvas.setEntity(entity);
+ canvas.setImage(image);
+ canvas.repaint();
+// System.out.println(" Canvas image = " + canvas.image);
+// System.out.println(" Canvas entity = " + canvas.entity);
+// System.out.println(" Editable image = " + image);
+// System.out.println(" Editable entity = " + entity);
}
}
@@ -103,7 +113,7 @@ public abstract class Editable extends JPanel implements MouseListener, MouseMot
button.addActionListener(listener);
button.setContentAreaFilled(false);
button.setFocusPainted(false);
- button.setPreferredSize(new Dimension(72, 38));
+ button.setPreferredSize(new Dimension(38, 38));
return button;
}
diff --git a/src/gui/EditableCanvas.java b/src/gui/EditableCanvas.java
index a5e45fa..0178f66 100644
--- a/src/gui/EditableCanvas.java
+++ b/src/gui/EditableCanvas.java
@@ -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);
- }
+
}
diff --git a/src/gui/HitboxEditor.java b/src/gui/HitboxEditor.java
index 9b7b573..88cf2fd 100644
--- a/src/gui/HitboxEditor.java
+++ b/src/gui/HitboxEditor.java
@@ -7,6 +7,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.swing.JTabbedPane;
+import javax.swing.event.ListSelectionEvent;
import events.EntityDrawboxChangedEvent;
import events.EntityDrawboxChangedListener;
@@ -117,6 +118,10 @@ public class HitboxEditor extends Editable {
}
}
}*/
-
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ // TODO Auto-generated method stub
+ //super.valueChanged(e);
+ }
}
diff --git a/src/gui/MainGUI.java b/src/gui/MainGUI.java
index d9b4fb9..aead57f 100644
--- a/src/gui/MainGUI.java
+++ b/src/gui/MainGUI.java
@@ -24,7 +24,7 @@ public class MainGUI extends JFrame{
ActionListener OpenXMLFileButtonListener;
JButton openXMLJButton;
JButton saveXMLJButton;
- JButton clearLinesJButton;
+
public static JTabbedPane editorPane;
DrawboxEditor drawBoxPanel;
HitboxEditor hitboxPanel;
@@ -50,7 +50,6 @@ public class MainGUI extends JFrame{
openXMLJButton = createButton("XML", OpenXMLFileButtonListener,"res/xml.png");
saveXMLJButton = createButton("Save",(e)-> Project.getInstance().writeXML(),"res/download.png");
- clearLinesJButton = createButton("Clear lines",null,"res/destroy.png");
gridButtonBar.add(openXMLJButton);
gridButtonBar.add(saveXMLJButton);
@@ -67,8 +66,8 @@ public class MainGUI extends JFrame{
editorPane.setVisible(true);
add(editorPane,BorderLayout.CENTER);
- editorPane.addTab("Hitbox", hitboxPanel);
editorPane.addTab("Drawbox", drawBoxPanel);
+ editorPane.addTab("Hitbox", hitboxPanel);
repaint();
}
diff --git a/src/gui/render/DrawboxRectengleRenderingFunction.java b/src/gui/render/DrawboxRectengleRenderingFunction.java
index c6356b2..bbeec4c 100644
--- a/src/gui/render/DrawboxRectengleRenderingFunction.java
+++ b/src/gui/render/DrawboxRectengleRenderingFunction.java
@@ -21,8 +21,8 @@ public class DrawboxRectengleRenderingFunction implements ShapeRenderingFunction
private List listeners = new ArrayList<>();
Entity entity;
Logger logger = Logger.getLogger("gui.DrawboxRectangleEditor");
- public DrawboxRectengleRenderingFunction(Entity entity) {
- this.entity = entity;
+ public DrawboxRectengleRenderingFunction() {
+
}
@Override
@@ -147,4 +147,8 @@ public class DrawboxRectengleRenderingFunction implements ShapeRenderingFunction
entity.setDrawbox(new Drawbox(drawboxPoints));
}
+ public void setEntity(Entity e) {
+ entity = e;
+ }
+
}