This commit is contained in:
Yorick
2015-03-17 11:42:48 +00:00
7 changed files with 198 additions and 106 deletions
+11 -5
View File
@@ -1,12 +1,15 @@
package Applicatie; package Applicatie;
import java.awt.BasicStroke; import java.awt.BasicStroke;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Point; import java.awt.Point;
import java.awt.TexturePaint; import java.awt.TexturePaint;
import java.awt.geom.AffineTransform; import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath; import java.awt.geom.GeneralPath;
import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
@@ -25,6 +28,7 @@ import Listeners.MouseWheel;
import Objects.Entrance; import Objects.Entrance;
import Objects.Path; import Objects.Path;
import Objects.Stage; import Objects.Stage;
import Objects.Toilet; import Objects.Toilet;
import Objects.Wall; import Objects.Wall;
@@ -91,7 +95,6 @@ public class Panel extends JPanel {
addMouseMotionListener(new MouseMotion(this)); addMouseMotionListener(new MouseMotion(this));
addMouseWheelListener(new MouseWheel(this)); addMouseWheelListener(new MouseWheel(this));
} }
public int getPanelInfoLength() { public int getPanelInfoLength() {
@@ -144,7 +147,8 @@ public class Panel extends JPanel {
AffineTransform oldTransform = g2.getTransform(); AffineTransform oldTransform = g2.getTransform();
g2.setTransform(getCamera()); g2.setTransform(getCamera());
TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0,0, 100, 100)); TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0,
0, 100, 100));
g2.setPaint(p); g2.setPaint(p);
g2.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160)); g2.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160));
@@ -161,7 +165,9 @@ public class Panel extends JPanel {
public AffineTransform getCamera() { public AffineTransform getCamera() {
AffineTransform tx = new AffineTransform(); AffineTransform tx = new AffineTransform();
tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + getHeight() / 2); tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY()
+ getHeight() / 2);
tx.scale(cameraScale, cameraScale); tx.scale(cameraScale, cameraScale);
return tx; return tx;
} }
@@ -285,9 +291,9 @@ public class Panel extends JPanel {
public void removeObject(DrawObject o) { public void removeObject(DrawObject o) {
Iterator<DrawObject> itr = objects.iterator(); Iterator<DrawObject> itr = objects.iterator();
while(itr.hasNext()) { while (itr.hasNext()) {
DrawObject nextObject = (DrawObject) itr.next(); DrawObject nextObject = (DrawObject) itr.next();
if(nextObject.equals(o)) { if (nextObject.equals(o)) {
pp.clearSelected(); pp.clearSelected();
itr.remove(); itr.remove();
} }
+16 -11
View File
@@ -25,15 +25,15 @@ public class PropertiesPanel extends JPanel {
DrawObject selectedObject = null; DrawObject selectedObject = null;
Panel p = null; Panel p = null;
Dimension spacerDimension = new Dimension(200,30); Dimension spacerDimension = new Dimension(200, 30);
JLabel nameLabel; JLabel nameLabel;
JTextField locationXField; JTextField locationXField;
JTextField locationYField; JTextField locationYField;
JTextField scaleField; JTextField scaleField;
JTextField rotationField; JTextField rotationField;
PropertiesPanel() { PropertiesPanel() {
super(); super();
@@ -52,8 +52,8 @@ public class PropertiesPanel extends JPanel {
propPanel.setMaximumSize(new Dimension(200, 60)); propPanel.setMaximumSize(new Dimension(200, 60));
propPanel.add(propLabel); propPanel.add(propLabel);
add(propPanel); add(propPanel);
//NAME // NAME
JPanel namePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel namePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
nameLabel = new JLabel("No Selection"); nameLabel = new JLabel("No Selection");
nameLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); nameLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20));
@@ -61,11 +61,11 @@ public class PropertiesPanel extends JPanel {
namePanel.setMaximumSize(new Dimension(200, 40)); namePanel.setMaximumSize(new Dimension(200, 40));
namePanel.add(nameLabel); namePanel.add(nameLabel);
add(namePanel); add(namePanel);
// SPACER // SPACER
add(Box.createRigidArea(spacerDimension)); add(Box.createRigidArea(spacerDimension));
//BUTTONS // BUTTONS
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel buttonLabel = new JLabel("Actions"); JLabel buttonLabel = new JLabel("Actions");
buttonLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); buttonLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20));
@@ -73,8 +73,8 @@ public class PropertiesPanel extends JPanel {
buttonPanel.setMaximumSize(new Dimension(200, 40)); buttonPanel.setMaximumSize(new Dimension(200, 40));
buttonPanel.add(buttonLabel); buttonPanel.add(buttonLabel);
add(buttonPanel); add(buttonPanel);
//DELETE // DELETE
JPanel deletePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel deletePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JButton deleteButton = new JButton("Delete"); JButton deleteButton = new JButton("Delete");
deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20));
@@ -87,7 +87,7 @@ public class PropertiesPanel extends JPanel {
deletePanel.setMaximumSize(new Dimension(200, 50)); deletePanel.setMaximumSize(new Dimension(200, 50));
deletePanel.add(deleteButton); deletePanel.add(deleteButton);
add(deletePanel); add(deletePanel);
// SPACER // SPACER
add(Box.createRigidArea(spacerDimension)); add(Box.createRigidArea(spacerDimension));
@@ -129,6 +129,7 @@ public class PropertiesPanel extends JPanel {
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
} }
}); });
} }
locationXPanel.add(locationXField); locationXPanel.add(locationXField);
@@ -307,17 +308,21 @@ public class PropertiesPanel extends JPanel {
if (component instanceof JTextField) { if (component instanceof JTextField) {
((JTextField) component).setText(""); ((JTextField) component).setText("");
((JTextField) component).setBackground(Color.WHITE); ((JTextField) component).setBackground(Color.WHITE);
} }
if (component instanceof Container) { if (component instanceof Container) {
clearFields((Container) component); clearFields((Container) component);
} }
} }
nameLabel.setText("No Selection"); nameLabel.setText("No Selection");
} }
private void fillFields() { private void fillFields() {
if (selectedObject != null) { if (selectedObject != null) {
nameLabel.setText(selectedObject.getName()); nameLabel.setText(selectedObject.getName());
locationXField.setText(Math.round(selectedObject.getPosition() locationXField.setText(Math.round(selectedObject.getPosition()
.getX()) + ""); .getX()) + "");
locationYField.setText(Math.round(selectedObject.getPosition() locationYField.setText(Math.round(selectedObject.getPosition()
+15 -13
View File
@@ -1,35 +1,37 @@
package Applicatie; package Applicatie;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import Listeners.Keyboard;
public class Window extends JFrame { public class Window extends JFrame {
private static final long serialVersionUID = -1324363758675184283L; private static final long serialVersionUID = -1324363758675184283L;
Window() Window() {
{
super("Festival Plannner"); super("Festival Plannner");
setDefaultCloseOperation(EXIT_ON_CLOSE); setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500,600); setSize(500, 600);
setExtendedState( getExtendedState()|JFrame.MAXIMIZED_BOTH ); setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
//CONTENT PANELS // CONTENT PANELS
JPanel contentPanel = new JPanel(new BorderLayout()); JPanel contentPanel = new JPanel(new BorderLayout());
PropertiesPanel pp = new PropertiesPanel(); PropertiesPanel pp = new PropertiesPanel();
Panel fp = new Panel(pp); Panel fp = new Panel(pp);
contentPanel.add(fp, BorderLayout.CENTER); contentPanel.add(fp, BorderLayout.CENTER);
contentPanel.add(pp, BorderLayout.EAST); contentPanel.add(pp, BorderLayout.EAST);
addKeyListener(new Keyboard(fp));
setContentPane(contentPanel); setContentPane(contentPanel);
//END CONTENT PANELS // END CONTENT PANELS
// MENUBAR
//MENUBAR
setJMenuBar(new MenuBar(this)); setJMenuBar(new MenuBar(this));
//END MENUBAR // END MENUBAR
setFocusable(true); setFocusable(true);
setVisible(true); setVisible(true);
} }
+36
View File
@@ -0,0 +1,36 @@
package Listeners;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import Applicatie.Panel;
public class Keyboard implements KeyListener {
private Panel panel;
public Keyboard(Panel panel) {
this.panel = panel;
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == e.VK_DELETE ) {
if(panel.getSelectedObject() != null) {
System.out.println("lala");
panel.removeObject(panel.getSelectedObject());
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
+4 -1
View File
@@ -9,6 +9,7 @@ import java.util.Map;
import Applicatie.DrawObject; import Applicatie.DrawObject;
import Applicatie.Panel; import Applicatie.Panel;
import Objects.Stage; import Objects.Stage;
public class Mouse extends MouseAdapter { public class Mouse extends MouseAdapter {
@@ -73,11 +74,13 @@ public class Mouse extends MouseAdapter {
} }
if (selectedObject != null) if (selectedObject != null)
selectedObject.setSelected(false); selectedObject.setSelected(false);
panel.setDragObject(o);
o.setSelected(true); o.setSelected(true);
selectedObject = o; selectedObject = o;
panel.setDragObject(o); panel.setDragObject(o);
panel.getPP().setSelected(o); panel.getPP().setSelected(o);
panel.setSelectedObject(o);
} }
} }
} }
+116 -64
View File
@@ -1,4 +1,5 @@
package Listeners; package Listeners;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
@@ -9,87 +10,138 @@ public class MouseMotion extends MouseMotionAdapter {
private Panel panel; private Panel panel;
public MouseMotion(Panel panel) public MouseMotion(Panel panel) {
{
this.panel = panel; this.panel = panel;
} }
public void mouseDragged(MouseEvent e) { public void mouseDragged(MouseEvent e) {
Point2D clickPoint = panel.getClickPoint(e.getPoint()); Point2D clickPoint = panel.getClickPoint(e.getPoint());
if(panel.getDragObject() != null) { if (panel.getDragObject() != null) {
Point2D objectPoint = panel.getDragObject().getObjectPoint(panel.getDragObject().getPosition()); Point2D objectPoint = panel.getDragObject().getObjectPoint(
switch(panel.getClickedOption()) { panel.getDragObject().getPosition());
case "drag": switch (panel.getClickedOption()) {
if(panel.getDragObject() != null) case "drag":
panel.getDragObject().setPosition(new Point2D.Double( if (panel.getDragObject() != null)
(panel.getDragObject().getPosition().getX() ) - ((panel.getLastClickPosition().getX() - clickPoint.getX()) ) / panel.getDragObject().getScale(), panel.getDragObject()
(panel.getDragObject().getPosition().getY()) - (panel.getLastClickPosition().getY() - clickPoint.getY()) / panel.getDragObject().getScale() )); .setPosition(
System.out.println(panel.getDragObject().getPosition().getX()); new Point2D.Double(
System.out.println(panel.getLastClickPosition().getX()); (panel.getDragObject()
System.out.println(clickPoint.getX()); .getPosition().getX())
System.out.println("----------'"); - ((panel
break; .getLastClickPosition()
case "upperLeft": .getX() - clickPoint
if(clickPoint.getX() < panel.getDragObject().getPosition().getX() && clickPoint.getY() < panel.getDragObject().getPosition().getY()) { .getX()))
resizeBigger(); / panel.getDragObject()
} .getScale(),
else if (clickPoint.getX() > panel.getDragObject().getPosition().getX() && clickPoint.getY() > panel.getDragObject().getPosition().getY()) { (panel.getDragObject()
resizeSmaller(); .getPosition().getY())
} - (panel.getLastClickPosition()
break; .getY() - clickPoint
case "upperRight": .getY())
if(clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY()) { / panel.getDragObject()
resizeBigger(); .getScale()));
}
else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY()) { break;
resizeSmaller(); case "upperLeft":
} if (clickPoint.getX() < panel.getDragObject().getPosition()
break; .getX()
case "bottomLeft": && clickPoint.getY() < panel.getDragObject()
if(clickPoint.getX() < panel.getDragObject().getRectangle().getX() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { .getPosition().getY()) {
resizeBigger(); resizeBigger();
} } else if (clickPoint.getX() > panel.getDragObject()
else if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { .getPosition().getX()
resizeSmaller(); && clickPoint.getY() > panel.getDragObject()
} .getPosition().getY()) {
break; resizeSmaller();
case "bottomRight": }
if(clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { break;
resizeBigger(); case "upperRight":
} if (clickPoint.getX() > panel.getDragObject().getRectangle()
else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { .getX()
resizeSmaller(); + panel.getDragObject().getRectangle().getWidth()
} && clickPoint.getY() < panel.getDragObject()
break; .getRectangle().getY()) {
case "rotate": resizeBigger();
double tempval = panel.getDragObject().getRotation() + (panel.getLastClickPosition().getX() - clickPoint.getX()); } else if (clickPoint.getX() < panel.getDragObject()
panel.getDragObject().setRotation(tempval); .getRectangle().getX()
break; + panel.getDragObject().getRectangle().getWidth()
&& clickPoint.getY() > panel.getDragObject()
.getRectangle().getY()) {
resizeSmaller();
}
break;
case "bottomLeft":
if (clickPoint.getX() < panel.getDragObject().getRectangle()
.getX()
&& clickPoint.getY() > panel.getDragObject()
.getRectangle().getY()
+ panel.getDragObject().getRectangle()
.getHeight()) {
resizeBigger();
} else if (clickPoint.getX() > panel.getDragObject()
.getRectangle().getX()
&& clickPoint.getY() < panel.getDragObject()
.getRectangle().getY()
+ panel.getDragObject().getRectangle()
.getHeight()) {
resizeSmaller();
}
break;
case "bottomRight":
if (clickPoint.getX() > panel.getDragObject().getRectangle()
.getX()
+ panel.getDragObject().getRectangle().getWidth()
&& clickPoint.getY() > panel.getDragObject()
.getRectangle().getY()
+ panel.getDragObject().getRectangle()
.getHeight()) {
resizeBigger();
} else if (clickPoint.getX() < panel.getDragObject()
.getRectangle().getX()
+ panel.getDragObject().getRectangle().getWidth()
&& clickPoint.getY() < panel.getDragObject()
.getRectangle().getY()
+ panel.getDragObject().getRectangle()
.getHeight()) {
resizeSmaller();
}
break;
case "rotate":
double tempval = panel.getDragObject().getRotation()
- (panel.getLastClickPosition().getX() - clickPoint
.getX());
panel.getDragObject().setRotation(tempval);
break;
} }
} else {
panel.setCameraPoint(new Point2D.Double(panel.getCameraPoint()
.getX() + (panel.getLastMousePosition().getX() - e.getX()),
panel.getCameraPoint().getY()
+ (panel.getLastMousePosition().getY() - e.getY())));
} }
else {
panel.setCameraPoint(new Point2D.Double(
panel.getCameraPoint().getX() + (panel.getLastMousePosition().getX() - e.getX()),
panel.getCameraPoint().getY() + (panel.getLastMousePosition().getY() - e.getY())
));
}
panel.repaint(); panel.repaint();
panel.setLastMousePosition(e.getPoint()); panel.setLastMousePosition(e.getPoint());
panel.setLastClickPosition(clickPoint); panel.setLastClickPosition(clickPoint);
panel.getPP().update(); panel.getPP().update();
} }
private void resizeBigger() { private void resizeBigger() {
double scale = panel.getDragObject().getScale()*1 + 0.02; double scale = panel.getDragObject().getScale() * 1 + 0.02;
panel.getDragObject().setScale(scale); panel.getDragObject().setScale(scale);
panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX()-2,panel.getDragObject().getPosition().getY()-2)); panel.getDragObject().setPosition(
new Point2D.Double(
panel.getDragObject().getPosition().getX() - 2, panel
.getDragObject().getPosition().getY() - 2));
} }
private void resizeSmaller() { private void resizeSmaller() {
if(panel.getDragObject().getScale() > 0.2) { if (panel.getDragObject().getScale() > 0.2) {
double scale = panel.getDragObject().getScale()*1 - 0.02; double scale = panel.getDragObject().getScale() * 1 - 0.02;
panel.getDragObject().setScale(scale); panel.getDragObject().setScale(scale);
panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX()+2,panel.getDragObject().getPosition().getY()+2)); panel.getDragObject().setPosition(
new Point2D.Double(panel.getDragObject().getPosition()
.getX() + 2, panel.getDragObject().getPosition()
.getY() + 2));
} }
} }
} }
-12
View File
@@ -17,18 +17,6 @@ public class MouseWheel implements MouseWheelListener {
} }
public void mouseWheelMoved(MouseWheelEvent e) { public void mouseWheelMoved(MouseWheelEvent e) {
Point2D clickPoint = panel.getClickPoint(e.getPoint());
for (DrawObject o : panel.getObjects()) {
if (o.contains(clickPoint)) {
double scale = o.getScale() * 1
+ (e.getPreciseWheelRotation() / 10.0);
o.setScale(scale);
panel.getPP().update();
panel.repaint();
return;
}
}
if (e.getY() < 150) { if (e.getY() < 150) {
if (e.getPreciseWheelRotation() < 0) { if (e.getPreciseWheelRotation() < 0) {