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;
import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.TexturePaint;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
@@ -25,6 +28,7 @@ import Listeners.MouseWheel;
import Objects.Entrance;
import Objects.Path;
import Objects.Stage;
import Objects.Toilet;
import Objects.Wall;
@@ -91,7 +95,6 @@ public class Panel extends JPanel {
addMouseMotionListener(new MouseMotion(this));
addMouseWheelListener(new MouseWheel(this));
}
public int getPanelInfoLength() {
@@ -144,7 +147,8 @@ public class Panel extends JPanel {
AffineTransform oldTransform = g2.getTransform();
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.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160));
@@ -161,7 +165,9 @@ public class Panel extends JPanel {
public AffineTransform getCamera() {
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);
return tx;
}
@@ -285,9 +291,9 @@ public class Panel extends JPanel {
public void removeObject(DrawObject o) {
Iterator<DrawObject> itr = objects.iterator();
while(itr.hasNext()) {
while (itr.hasNext()) {
DrawObject nextObject = (DrawObject) itr.next();
if(nextObject.equals(o)) {
if (nextObject.equals(o)) {
pp.clearSelected();
itr.remove();
}
+16 -11
View File
@@ -25,15 +25,15 @@ public class PropertiesPanel extends JPanel {
DrawObject selectedObject = null;
Panel p = null;
Dimension spacerDimension = new Dimension(200,30);
Dimension spacerDimension = new Dimension(200, 30);
JLabel nameLabel;
JTextField locationXField;
JTextField locationYField;
JTextField scaleField;
JTextField rotationField;
PropertiesPanel() {
super();
@@ -52,8 +52,8 @@ public class PropertiesPanel extends JPanel {
propPanel.setMaximumSize(new Dimension(200, 60));
propPanel.add(propLabel);
add(propPanel);
//NAME
// NAME
JPanel namePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
nameLabel = new JLabel("No Selection");
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.add(nameLabel);
add(namePanel);
// SPACER
add(Box.createRigidArea(spacerDimension));
//BUTTONS
// BUTTONS
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel buttonLabel = new JLabel("Actions");
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.add(buttonLabel);
add(buttonPanel);
//DELETE
// DELETE
JPanel deletePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JButton deleteButton = new JButton("Delete");
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.add(deleteButton);
add(deletePanel);
// SPACER
add(Box.createRigidArea(spacerDimension));
@@ -129,6 +129,7 @@ public class PropertiesPanel extends JPanel {
public void keyPressed(KeyEvent e) {
}
});
}
locationXPanel.add(locationXField);
@@ -307,17 +308,21 @@ public class PropertiesPanel extends JPanel {
if (component instanceof JTextField) {
((JTextField) component).setText("");
((JTextField) component).setBackground(Color.WHITE);
}
if (component instanceof Container) {
clearFields((Container) component);
}
}
nameLabel.setText("No Selection");
}
private void fillFields() {
if (selectedObject != null) {
nameLabel.setText(selectedObject.getName());
locationXField.setText(Math.round(selectedObject.getPosition()
.getX()) + "");
locationYField.setText(Math.round(selectedObject.getPosition()
+15 -13
View File
@@ -1,35 +1,37 @@
package Applicatie;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import Listeners.Keyboard;
public class Window extends JFrame {
private static final long serialVersionUID = -1324363758675184283L;
Window()
{
Window() {
super("Festival Plannner");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500,600);
setExtendedState( getExtendedState()|JFrame.MAXIMIZED_BOTH );
//CONTENT PANELS
setSize(500, 600);
setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
// CONTENT PANELS
JPanel contentPanel = new JPanel(new BorderLayout());
PropertiesPanel pp = new PropertiesPanel();
Panel fp = new Panel(pp);
contentPanel.add(fp, BorderLayout.CENTER);
contentPanel.add(pp, BorderLayout.EAST);
addKeyListener(new Keyboard(fp));
setContentPane(contentPanel);
//END CONTENT PANELS
//MENUBAR
// END CONTENT PANELS
// MENUBAR
setJMenuBar(new MenuBar(this));
//END MENUBAR
// END MENUBAR
setFocusable(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.Panel;
import Objects.Stage;
public class Mouse extends MouseAdapter {
@@ -73,11 +74,13 @@ public class Mouse extends MouseAdapter {
}
if (selectedObject != null)
selectedObject.setSelected(false);
panel.setDragObject(o);
o.setSelected(true);
selectedObject = o;
panel.setDragObject(o);
panel.getPP().setSelected(o);
panel.setSelectedObject(o);
}
}
}
+116 -64
View File
@@ -1,4 +1,5 @@
package Listeners;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Point2D;
@@ -9,87 +10,138 @@ public class MouseMotion extends MouseMotionAdapter {
private Panel panel;
public MouseMotion(Panel panel)
{
public MouseMotion(Panel panel) {
this.panel = panel;
}
public void mouseDragged(MouseEvent e) {
Point2D clickPoint = panel.getClickPoint(e.getPoint());
if(panel.getDragObject() != null) {
Point2D objectPoint = panel.getDragObject().getObjectPoint(panel.getDragObject().getPosition());
switch(panel.getClickedOption()) {
case "drag":
if(panel.getDragObject() != null)
panel.getDragObject().setPosition(new Point2D.Double(
(panel.getDragObject().getPosition().getX() ) - ((panel.getLastClickPosition().getX() - clickPoint.getX()) ) / panel.getDragObject().getScale(),
(panel.getDragObject().getPosition().getY()) - (panel.getLastClickPosition().getY() - clickPoint.getY()) / panel.getDragObject().getScale() ));
System.out.println(panel.getDragObject().getPosition().getX());
System.out.println(panel.getLastClickPosition().getX());
System.out.println(clickPoint.getX());
System.out.println("----------'");
break;
case "upperLeft":
if(clickPoint.getX() < panel.getDragObject().getPosition().getX() && clickPoint.getY() < panel.getDragObject().getPosition().getY()) {
resizeBigger();
}
else if (clickPoint.getX() > panel.getDragObject().getPosition().getX() && clickPoint.getY() > panel.getDragObject().getPosition().getY()) {
resizeSmaller();
}
break;
case "upperRight":
if(clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY()) {
resizeBigger();
}
else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + 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;
if (panel.getDragObject() != null) {
Point2D objectPoint = panel.getDragObject().getObjectPoint(
panel.getDragObject().getPosition());
switch (panel.getClickedOption()) {
case "drag":
if (panel.getDragObject() != null)
panel.getDragObject()
.setPosition(
new Point2D.Double(
(panel.getDragObject()
.getPosition().getX())
- ((panel
.getLastClickPosition()
.getX() - clickPoint
.getX()))
/ panel.getDragObject()
.getScale(),
(panel.getDragObject()
.getPosition().getY())
- (panel.getLastClickPosition()
.getY() - clickPoint
.getY())
/ panel.getDragObject()
.getScale()));
break;
case "upperLeft":
if (clickPoint.getX() < panel.getDragObject().getPosition()
.getX()
&& clickPoint.getY() < panel.getDragObject()
.getPosition().getY()) {
resizeBigger();
} else if (clickPoint.getX() > panel.getDragObject()
.getPosition().getX()
&& clickPoint.getY() > panel.getDragObject()
.getPosition().getY()) {
resizeSmaller();
}
break;
case "upperRight":
if (clickPoint.getX() > panel.getDragObject().getRectangle()
.getX()
+ panel.getDragObject().getRectangle().getWidth()
&& clickPoint.getY() < panel.getDragObject()
.getRectangle().getY()) {
resizeBigger();
} else if (clickPoint.getX() < panel.getDragObject()
.getRectangle().getX()
+ 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.setLastMousePosition(e.getPoint());
panel.setLastClickPosition(clickPoint);
panel.getPP().update();
}
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().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() {
if(panel.getDragObject().getScale() > 0.2) {
double scale = panel.getDragObject().getScale()*1 - 0.02;
if (panel.getDragObject().getScale() > 0.2) {
double scale = panel.getDragObject().getScale() * 1 - 0.02;
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) {
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.getPreciseWheelRotation() < 0) {