Fixed stuff

This commit is contained in:
2015-04-08 20:57:06 +02:00
parent d0baf5673f
commit c3973cc4e4
20 changed files with 519 additions and 189 deletions
+2 -2
View File
@@ -205,9 +205,9 @@ public class AddEventPanel extends JFrame{
String stageName = (String)stage2.getSelectedItem();
Stage stage = null;
AgendaStage stage = null;
for(Stage s : agenda.getStages())
for(AgendaStage s : agenda.getStages())
{
if (s.getName().equals(stageName))
{
+2 -2
View File
@@ -58,7 +58,7 @@ public class AddStagePanel extends JFrame{
String description = descriptionTF.getText();
boolean alreadyExists = false;
for (Stage stage : agenda.getStages())
for (AgendaStage stage : agenda.getStages())
{
if (stage.getName().equals(name))
{
@@ -70,7 +70,7 @@ public class AddStagePanel extends JFrame{
}
else if ( alreadyExists == false )
{
Stage s = new Stage(name,description);
AgendaStage s = new AgendaStage(name,description);
agenda.addStage(s);
JOptionPane.showMessageDialog(null, "Stage added!");
setVisible(false);
+17 -5
View File
@@ -17,17 +17,17 @@ public class Agenda implements Serializable {
private static final long serialVersionUID = 1;
private ArrayList<Stage> stages;
private ArrayList<AgendaStage> stages;
private ArrayList<Event> events;
private ArrayList<Artist> artists;
public Agenda() {
stages = new ArrayList<Stage>();
stages = new ArrayList<AgendaStage>();
events = new ArrayList<Event>();
artists = new ArrayList<Artist>();
}
public void addStage(Stage stage){
public void addStage(AgendaStage stage){
stages.add(stage);
}
@@ -47,10 +47,22 @@ public class Agenda implements Serializable {
{
return artists;
}
public ArrayList<Stage> getStages()
public ArrayList<AgendaStage> getStages()
{
return stages;
}
public ArrayList<Event> eventsForStage(AgendaStage st)
{
ArrayList<Event> stageEvents = new ArrayList<Event>();
for(Event e: events)
{
if(e.getStage() == st)
{
stageEvents.add(e);
}
}
return stageEvents;
}
/*
public void saveAgenda()
@@ -221,4 +233,4 @@ public class Agenda implements Serializable {
fillArtists();
}
*/
}
}
+2 -2
View File
@@ -221,9 +221,9 @@ public class EditEventPanel extends JFrame{
String stageName = (String)stage2.getSelectedItem();
Stage stage = null;
AgendaStage stage = null;
for(Stage s : agenda.getStages())
for(AgendaStage s : agenda.getStages())
{
if (s.getName().equals(stageName))
{
+4 -4
View File
@@ -18,7 +18,7 @@ public class EditStagePanel extends JFrame{
private static final long serialVersionUID = 1;
public EditStagePanel(Agenda agenda, Stage sta)
public EditStagePanel(Agenda agenda, AgendaStage sta)
{
super("Stage editscreen!");
setDefaultCloseOperation(HIDE_ON_CLOSE);
@@ -59,7 +59,7 @@ public class EditStagePanel extends JFrame{
String description = descriptionTF.getText();
boolean alreadyExists = false;
for (Stage stage : agenda.getStages())
for (AgendaStage stage : agenda.getStages())
{
if (stage.getName().equals(name) && !stage.equals(sta))
{
@@ -101,10 +101,10 @@ public class EditStagePanel extends JFrame{
if(JOptionPane.showConfirmDialog(null, "Are you sure you want to remove this stage?", "Remove Stage", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION)
{
Iterator<Stage> it = agenda.getStages().iterator();
Iterator<AgendaStage> it = agenda.getStages().iterator();
while(it.hasNext())
{
Stage s = it.next();
AgendaStage s = it.next();
if(s.equals(sta))
{
it.remove();
+5 -5
View File
@@ -19,13 +19,13 @@ public class Event implements Serializable {
private int stopHour;
private int stopMinute;
private Artist artist;
private Stage stage;
private AgendaStage stage;
private String description;
private int expectedPopularity;
public Event(String eventName, int startYear, int startMonth, int startDay,
int startHour, int startMinute, int endYear, int endMonth,
int endDay, int endHour, int endMinute, Artist artist, Stage stage,
int endDay, int endHour, int endMinute, Artist artist, AgendaStage stage,
String description, int expectedPopularity) {
this.eventName = eventName;
this.startDate = new GregorianCalendar(startYear, startMonth - 1,
@@ -43,7 +43,7 @@ public class Event implements Serializable {
}
public Event(String eventName, GregorianCalendar startDate,
GregorianCalendar endDate, Artist artist, Stage stage,
GregorianCalendar endDate, Artist artist, AgendaStage stage,
String description, int expectedPopularity) {
this.eventName = eventName;
this.startDate = startDate;
@@ -86,7 +86,7 @@ public class Event implements Serializable {
return this.description;
}
public Stage getStage() {
public AgendaStage getStage() {
return this.stage;
}
@@ -132,7 +132,7 @@ public class Event implements Serializable {
this.expectedPopularity = popularity;
}
public void setStage(Stage stage) {
public void setStage(AgendaStage stage) {
this.stage = stage;
}
+1 -1
View File
@@ -133,4 +133,4 @@ public class MenuBar extends JMenuBar {
view.add(art_sta);
add(view);
}
}
}
+1 -1
View File
@@ -105,7 +105,7 @@ public class PanelArtSta extends JPanel implements Panel{
else
{
dataStage = new Object[1];
dataStage[0] = new Stage("Geen Stages", "Geen Stages");
dataStage[0] = new AgendaStage("Geen Stages", "Geen Stages");
stages.setEnabled(false);
}
}
-41
View File
@@ -1,41 +0,0 @@
package Agenda;
import java.io.Serializable;
public class Stage implements Serializable {
private static final long serialVersionUID = 1;
private String name;
private String description;
public Stage(String name, String description)
{
this.name = name;
this.description = description;
}
public String getName()
{
return this.name;
}
public String getDescription()
{
return this.description;
}
public void setDescription(String description)
{
this.description = description;
}
public void setName(String name)
{
this.name = name;
}
public String toString()
{
return name;
}
}
+2 -3
View File
@@ -1,6 +1,5 @@
package Agenda;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
@@ -183,7 +182,7 @@ public class Window extends JFrame {
}
});
}
public static void changePanel(String panel)
{
currentPanel = panel;
@@ -242,4 +241,4 @@ public class Window extends JFrame {
}
}
}
+1 -1
View File
@@ -115,7 +115,7 @@ public class ControlPanel extends JPanel
peopleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
p.addVisitors(1);
p.addVisitors();
}
});
peoplePanel.add(peopleButton);
+12
View File
@@ -28,6 +28,18 @@ public class MenuBar extends JMenuBar
});
file.add(item);
JMenuItem agenda = new JMenuItem("Open Agenda");
agenda.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new Agenda.Window(w.getPanel());
}
});
file.add(agenda);
file.addSeparator();
item = new JMenuItem("Open");
item.addActionListener(new ActionListener() {
+85 -26
View File
@@ -23,10 +23,12 @@ import java.util.GregorianCalendar;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import Agenda.Agenda;
import Agenda.AgendaStage;
import Listeners.Mouse;
import Listeners.MouseMotion;
import Listeners.MouseWheel;
@@ -71,7 +73,7 @@ public class Panel extends JPanel implements ActionListener
Point lastMousePosition = new Point(0, 0);
Point2D selectionPosition = new Point(0, 0);
Images images = new Images();
javax.swing.Timer t;
Timer t;
SimpleDateFormat formatter;
GregorianCalendar date;
@@ -144,9 +146,8 @@ public class Panel extends JPanel implements ActionListener
addMouseMotionListener(new MouseMotion(this));
addMouseWheelListener(new MouseWheel(this));
addFocusListener(new WindowFocusListener(this));
t = new Timer(1000 / 10, this);
}
@@ -166,7 +167,26 @@ public class Panel extends JPanel implements ActionListener
switch (index)
{
case 0:
return new Stage(null);
ArrayList<AgendaStage> stages = agenda.getStages();
Object[] s = new Object[stages.size()];
AgendaStage stage = null;
if (stages.size() != 0)
{
for (int i = 0; i < stages.size(); i++)
{
s[i] = stages.get(i);
}
stage = (AgendaStage) JOptionPane.showInputDialog(null, "Select the right Stage", "Select Stage", JOptionPane.PLAIN_MESSAGE, null, s, "stage");
}
if (stage != null)
{
return new Stage(null, stage);
}
else
{
return null;
}
case 1:
return new Toilet(null);
case 2:
@@ -191,6 +211,18 @@ public class Panel extends JPanel implements ActionListener
{
waypoints.add(w);
}
public Waypoint getWaypoint(int i)
{
for(Waypoint w : waypoints)
{
if(w.getSelf() == i)
{
return w;
}
}
return null;
}
public ArrayList<Waypoint> getWaypoints()
{
@@ -199,14 +231,27 @@ public class Panel extends JPanel implements ActionListener
public void addVisitors()
{
visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects));
ArrayList<DrawObject> entrances = new ArrayList<>();
for(DrawObject object : objects) {
if(object instanceof Entrance) {
entrances.add(object);
}
}
if(!entrances.isEmpty()) {
DrawObject entrance = entrances.get((int) Math.floor(Math.random()*entrances.size()));
Point point = new Point((int)entrance.getPosition().getX(),(int)entrance.getPosition().getY());
visitors.add(new Visitor("visitor",point, agenda, objects, waypoints, date));
}
else {
JOptionPane.showMessageDialog(this, "You don't have an entrance");
}
}
public void addVisitors(int count)
{
for (int i = 0; i < count; i++)
{
visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects));
addVisitors();
}
}
@@ -518,13 +563,27 @@ public class Panel extends JPanel implements ActionListener
{
if (path.containsPoint(point))
{
setcurrentPath(path);
setClickedOption("Path");
return true;
}
}
return false;
}
public Path getClickedPath(Point2D point)
{
for (Path path : paths)
{
if (path.containsPoint(point))
{
return path;
}
}
return null;
}
/**
* Remove a path from the list.
@@ -557,17 +616,17 @@ public class Panel extends JPanel implements ActionListener
{
this.agenda = agenda;
}
public static int getFieldWidth()
{
return width;
}
public static int getFieldHeight()
{
return height;
}
@Override
public void actionPerformed(ActionEvent e)
{
@@ -583,7 +642,7 @@ public class Panel extends JPanel implements ActionListener
for (Visitor v : visitors)
{
v.update(objects, currentTime, visitors, paths);
v.update(objects, currentTime, visitors, paths, this);
}
repaint();
@@ -610,25 +669,25 @@ public class Panel extends JPanel implements ActionListener
this.height = height;
paths.clear();
objects.clear();
visitors.clear();
cameraScale = 1;
switch (terrainIndex)
{
case 0:
background = grass;
break;
case 1:
background = grass2;
break;
case 2:
background = sand;
break;
case 3:
background = sand2;
break;
case 4:
background = stone;
break;
case 0:
background = grass;
break;
case 1:
background = grass2;
break;
case 2:
background = sand;
break;
case 3:
background = sand2;
break;
case 4:
background = stone;
break;
}
repaint();
}
+1 -1
View File
@@ -145,4 +145,4 @@ public class SaveLoad {
}
}
+223 -65
View File
@@ -5,8 +5,10 @@ import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
@@ -15,6 +17,7 @@ import Agenda.Event;
import Objects.DrawObject;
import Objects.Entrance;
import Objects.Path;
import Objects.Stage;
public class Visitor
{
@@ -27,21 +30,28 @@ public class Visitor
ArrayList<Action> actions;
Agenda agenda;
ArrayList<DrawObject> objects;
int target;
public Visitor(String filename, Point2D position, Agenda agenda, ArrayList<DrawObject> objects)
ArrayList<Waypoint> waypoints;
GregorianCalendar date;
int target;
int finalTarget;
public Visitor(String filename, Point2D position, Agenda agenda, ArrayList<DrawObject> objects, ArrayList<Waypoint> waypoints, GregorianCalendar date)
{
this.position = position;
this.filename = filename;
this.rotation = 0;
this.speed = 1 + Math.random() * 4;
this.waypoints = waypoints;
this.date = date;
scale = 1;
actions = new ArrayList<Action>();
this.agenda = agenda;
this.objects = objects;
fillActions();
System.out.println(actions.size());
target = 0;
target = 1;
finalTarget = 0;
}
public void draw(Graphics2D g2)
@@ -63,29 +73,119 @@ public class Visitor
public DrawObject getEntrance()
{
for(DrawObject o : objects)
for (DrawObject o : objects)
{
if(o instanceof Entrance)
if (o instanceof Entrance)
{
return o;
}
}
return null;
}
public void update(ArrayList<DrawObject> objects, int currentTime, ArrayList<Visitor> visitors, ArrayList<Path> paths)
public void update(ArrayList<DrawObject> objects, int currentTime, ArrayList<Visitor> visitors, ArrayList<Path> paths, Panel panel)
{
DrawObject target = getEntrance();
for (Action a : actions)
{
if (currentTime >= a.getStartTime() && currentTime < a.getStoptime())
{
target = a.getTargetObject();
this.finalTarget = a.getWaypoint().getSelf();
}
}
System.out.println(actions.size());
moveToTarget(target, objects, visitors, paths);
// moveToTarget(target, objects, visitors, paths);
move(target, panel);
}
public void move(DrawObject tar, Panel panel)
{
Point2D targetPoint = panel.getWaypoint(target).getPosition();
double newRot = Math.atan2(targetPoint.getY() - position.getY(), targetPoint.getX() - position.getX());
int difx = (int) (targetPoint.getX() - position.getX());
int dify = (int) (targetPoint.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10)
{
rotation -= 0.15;
}
else if (rotation < newRot && distance > 10)
{
rotation += 0.15;
}
Point2D oldPosition = position;
// face direction
float directionX = (float) Math.cos(rotation);
float directionY = (float) Math.sin(rotation);
if (distance > 10)
{
position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed));
}
boolean possible = true;
for (DrawObject object : objects)
{
if (object instanceof Entrance || object instanceof Waypoint)
{
continue;
}
if (hasCollisionDO(object))
{
possible = false;
}
}
if (possible == false)
{
position = oldPosition;
rotation += 0.2;
}
if (checkIfOnWaypoint(panel))
{
HashMap<Integer, int[]> options = new HashMap<Integer, int[]>();
for (Waypoint w : panel.getWaypoints())
{
options.put(w.getSelf(), w.getOptions());
}
for (Map.Entry<Integer, int[]> e : options.entrySet())
{
for (int i : e.getValue())
{
if (finalTarget != target)
{
if (finalTarget == i && e.getKey() == target)
{
target = finalTarget;
break;
}
else if (finalTarget == i)
{
target = e.getKey();
break;
}
}
}
}
}
}
public boolean checkIfOnWaypoint(Panel panel)
{
if (panel.getWaypoint(target).contains(position))
{
return true;
}
return false;
}
public void moveToTarget(DrawObject target, ArrayList<DrawObject> objects, ArrayList<Visitor> visitors, ArrayList<Path> paths)
@@ -100,7 +200,7 @@ public class Visitor
break;
}
Shape containsShape = p.containsPointShape(position);
if(containsShape != null)
if (containsShape != null)
{
tar = new Point2D.Double(containsShape.getBounds().getCenterX(), containsShape.getBounds().getCenterY());
}
@@ -137,14 +237,15 @@ public class Visitor
boolean possible = true;
for (DrawObject object : objects)
{
if (hitTest(object))
if (hasCollisionDO(object))
{
possible = false;
}
}
for (Visitor object : visitors)
{
if (hitTestVisitor(object) && object != this)
if (hasCollision(object) && object != this)
{
possible = false;
}
@@ -208,27 +309,23 @@ public class Visitor
}
}
lastShape = values.get(lastdistance);
Point2D.Double target2 = new Point2D.Double(lastShape.getBounds().getCenterX(), lastShape.getBounds().getCenterY());
double newRot = Math.atan2(target2.getY() - position.getY(), target2.getX() - position.getX());
int difx = (int) (target2.getX() - position.getX());
int dify = (int) (target2.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
System.out.println(rotation);
System.out.println(newRot);
System.out.println("--------------");
// if (rotation > newRot && distance > 10)
// {
// rotation -= 0.15;
// }
// else if (rotation < newRot && distance > 10)
// {
// rotation += 0.15;
// }
rotation = newRot;
if (rotation > newRot && distance > 10)
{
rotation -= 0.15;
}
else if (rotation < newRot && distance > 10)
{
rotation += 0.15;
}
Point2D oldPosition = position;
@@ -244,14 +341,14 @@ public class Visitor
boolean possible = true;
for (DrawObject object : objects)
{
if (hitTest(object))
if (hasCollisionDO(object))
{
possible = false;
}
}
for (Visitor object : visitors)
{
if (hitTestVisitor(object) && object != this)
if (hasCollision(object) && object != this)
{
possible = false;
}
@@ -264,6 +361,7 @@ public class Visitor
}
}
@SuppressWarnings("static-access")
public void fillActions()
{
int startTime = 540;
@@ -272,65 +370,91 @@ public class Visitor
while (startTime < stopTime)
{
int random = (int) Math.floor(Math.random() * 51);
if (random < 30)
if (random < 40)
{
Point2D position = null;
DrawObject targetStage = null;
ArrayList<Event> posEvents = new ArrayList<Event>();
for (Event e : agenda.getEvents())
{
if (convertMinutesToHours(startTime) > e.getStart() && convertMinutesToHours(startTime) < e.getStop())
if (startTime >= e.getStart() && startTime < e.getStop())
{
for (DrawObject d : objects)
posEvents.add(e);
}
}
if (posEvents.size() != 0)
{
int r = (int) Math.floor(Math.random() * posEvents.size());
Event evs = posEvents.get(r);
for (DrawObject d : objects)
{
if (d.getFileName().equals("stage"))
{
if (d.getFileName().equals(e.getStage().getName()))
Stage s = (Stage) d;
if (s.getStage().getName().equals(evs.getStage().getName()))
{
position = d.getPosition();
position = s.getPosition();
targetStage = d;
}
}
}
}
int randomtime = (int) (40 + (Math.random() * (60 - 40)));
if (position != null)
{
actions.add(new Action(position, startTime, randomtime, targetStage));
Waypoint w = getClosestWaypoint(position);
actions.add(new Action(position, startTime, randomtime, targetStage, w));
}
startTime = startTime + randomtime;
}
else if (random >= 30 && random < 35)
else if (random >= 40 && random < 45)
{
Point2D position = null;
DrawObject targetDraw = null;
DrawObject targetStage = null;
ArrayList<DrawObject> foodPlaces = new ArrayList<DrawObject>();
for (DrawObject d : objects)
{
if (d.getFileName().equals("entrance"))
if (d.getFileName().equals("food"))
{
position = d.getPosition();
foodPlaces.add(d);
}
}
if (position != null)
if (foodPlaces.size() != 0)
{
actions.add(new Action(position, startTime, 35, targetDraw));
startTime = startTime + 35;
int r = (int) Math.floor(Math.random() * foodPlaces.size());
position = foodPlaces.get(r).getPosition();
targetStage = foodPlaces.get(r);
Waypoint w = getClosestWaypoint(position);
actions.add(new Action(position, startTime, 35, targetStage, w));
startTime = startTime + 20;
}
startTime = startTime + 35;
}
else if (random > 35)
else if (random > 45)
{
Point2D position = null;
DrawObject targetDrawobj = null;
DrawObject targetStage = null;
ArrayList<DrawObject> toilets = new ArrayList<DrawObject>();
for (DrawObject d : objects)
{
if (d.getFileName().equals("wc"))
{
position = d.getPosition();
toilets.add(d);
}
}
if (position != null)
if (toilets.size() != 0)
{
actions.add(new Action(position, startTime, 35, targetDrawobj));
int r = (int) Math.floor(Math.random() * toilets.size());
position = toilets.get(r).getPosition();
targetStage = toilets.get(r);
Waypoint w = getClosestWaypoint(position);
actions.add(new Action(position, startTime, 35, targetStage, w));
startTime = startTime + 20;
}
startTime = startTime + 35;
@@ -338,35 +462,69 @@ public class Visitor
}
}
public int convertMinutesToHours(int startTime)
public Waypoint getClosestWaypoint(Point2D point)
{
int time = 0;
int hours = startTime / 60;
int minutes = startTime % 60;
time = (hours * 100) + minutes;
return time;
Waypoint waypoint = null;
int distance = 10000;
for (Waypoint w : waypoints)
{
if (w.getPosition().distance(point) < distance)
{
waypoint = w;
distance = (int) w.getPosition().distance(point);
}
}
return waypoint;
}
public int getEndX()
public boolean hasCollisionDO(DrawObject object)
{
Image image = Images.getImage(filename);
return (int) (position.getX() + image.getWidth(null));
Image image2 = Images.getImage(object.getFileName());
Rectangle recta = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null));
Rectangle rectb = new Rectangle((int) object.getPosition().getX(), (int) object.getPosition().getY(), image2.getWidth(null), image2.getHeight(null));
Area a = new Area(recta);
Area b = new Area(rectb);
AffineTransform transA = new AffineTransform();
transA.rotate(rotation, position.getX(), position.getY());
AffineTransform transB = new AffineTransform();
transB.rotate(Math.toRadians(object.getRotation()), object.getPosition().getX(), object.getPosition().getY());
Area aa = a.createTransformedArea(transA);
Area bb = b.createTransformedArea(transB);
if (bb.intersects(aa.getBounds2D()))
{
return true;
}
return false;
}
public int getEndY()
public boolean hasCollision(Visitor v)
{
Image image = Images.getImage(filename);
return (int) (position.getY() + image.getHeight(null));
}
Rectangle a = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null));
Rectangle b = new Rectangle((int) v.position.getX(), (int) v.position.getY(), image.getWidth(null), image.getHeight(null));
public boolean hitTest(DrawObject to2)
{
return (getEndX() >= to2.getPosition().getX() && getEndY() >= to2.getPosition().getY() && to2.getEndX() >= position.getX() && to2.getEndY() >= position.getY());
Area aa = new Area(a);
Area bb = new Area(b);
}
AffineTransform af = new AffineTransform();
af.rotate(rotation, position.getX(), position.getY());
public boolean hitTestVisitor(Visitor v)
{
return (getEndX() >= v.position.getX() && getEndY() >= v.position.getY() && v.getEndX() >= position.getX() && v.getEndY() >= position.getY());
AffineTransform bf = new AffineTransform();
bf.rotate(v.rotation, v.position.getX(), v.position.getY());
Area ra = aa.createTransformedArea(af);
Area rb = bb.createTransformedArea(bf);
if (ra.intersects(rb.getBounds2D()))
{
return true;
}
return false;
}
}
+89 -9
View File
@@ -1,10 +1,13 @@
package Applicatie;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
@@ -16,25 +19,82 @@ import Objects.DrawObject;
public class WaypointPopup extends JFrame {
private static final long serialVersionUID = 1;
private JLabel title;
public WaypointPopup(DrawObject w)
public WaypointPopup(DrawObject w, Panel panel)
{
super("Artist editscreen!");
super("Edit WayPoint");
Waypoint wp = (Waypoint) w;
setDefaultCloseOperation(HIDE_ON_CLOSE);
JPanel content = new JPanel(new BorderLayout());
JPanel south = new JPanel(new FlowLayout());
JPanel center = new JPanel(new GridLayout(5,2));
JPanel north = new JPanel();
if(wp.getSelf() == 0)
{
title = new JLabel("Edit WayPoint");
}
else
{
title = new JLabel("Edit WayPoint " + wp.getSelf());
}
title.setFont(new Font("Dialog", Font.BOLD, 24));
north.add(title);
content.add(north, BorderLayout.NORTH);
JPanel center = new JPanel(new FlowLayout());
JPanel row1 = new JPanel();
row1.setLayout(new BoxLayout(row1, BoxLayout.Y_AXIS));
JPanel row2 = new JPanel();
row2.setLayout(new BoxLayout(row2, BoxLayout.Y_AXIS));
JPanel south = new JPanel();
content.add(south, BorderLayout.SOUTH);
content.add(center, BorderLayout.CENTER);
center.add(row1);
center.add(row2);
JPanel empty = new JPanel();
empty.add(Box.createRigidArea(new Dimension(0, 20)));
row2.add(empty);
JPanel panel1 = new JPanel();
JLabel name = new JLabel("Waypoint");
name.setFont(new Font("Dialog", Font.PLAIN, 20));
panel1.add(name);
center.add(panel1);
row1.add(panel1);
JTextField tf = new JTextField(5);
center.add(tf);
JTextField tf = new JTextField(wp.getSelf() + "", 10);
row2.add(tf);
JPanel panel2 = new JPanel();
JLabel options = new JLabel("Options");
options.setFont(new Font("Dialog", Font.PLAIN, 20));
panel2.add(options);
row1.add(panel2);
JPanel empty2 = new JPanel();
empty2.add(Box.createRigidArea(new Dimension(0, 5)));
row2.add(empty2);
String optionss = "";
if(wp.getOptions() != null)
{
if(wp.getOptions().length != 0)
{
int[] optionsa = wp.getOptions();
optionss += optionsa[0];
for(int i = 1; i < optionsa.length; i++)
{
optionss += "-" + optionsa[i];
}
}
}
JTextField tx = new JTextField("" + optionss, 8);
row2.add(tx);
JPanel help = new JPanel();
JLabel example = new JLabel("example: '1-2-3'");
example.setFont(new Font("Dialog", Font.PLAIN, 12));
help.add(example);
row2.add(help);
JButton edit = new JButton("Done");
edit.addActionListener(new ActionListener()
@@ -44,14 +104,34 @@ public class WaypointPopup extends JFrame {
public void actionPerformed(ActionEvent e)
{
wp.setSelf(Integer.valueOf(tf.getText()));
panel.addWaypoint(wp);
dispose();
String options[] = tx.getText().split("-");
int ioptions[] = new int[options.length];
for(int i = 0; i < options.length; i++)
{
ioptions[i] = Integer.valueOf(options[i]);
}
wp.setOptions(ioptions);
}
});
south.add(edit);
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
south.add(cancel);
setContentPane(content);
setVisible(true);
setSize(500,320);
setSize(300,250);
}
}
+36 -13
View File
@@ -10,6 +10,8 @@ import java.awt.image.BufferedImage;
import javax.swing.SwingUtilities;
import Applicatie.Panel;
import Applicatie.PathPopup;
import Applicatie.Waypoint;
import Applicatie.WaypointPopup;
import Objects.DrawObject;
@@ -45,14 +47,17 @@ public class Mouse extends MouseAdapter
if (e.getX() >= panel.getScrollfactor() && e.getX() < last + image.getWidth() + panel.getScrollfactor())
{
DrawObject tempDrawObj = panel.createNewDrawObject(i);
tempDrawObj.setPosition(clickPoint);
if (!panel.getObjects().isEmpty())
panel.clearObjectSelection();
panel.setDragObject(tempDrawObj);
panel.getDragObject().setSelected(true);
panel.getPP().setSelected(tempDrawObj);
panel.setSelectedObject(tempDrawObj);
selectedObject = tempDrawObj;
if (tempDrawObj != null)
{
tempDrawObj.setPosition(clickPoint);
if (!panel.getObjects().isEmpty())
panel.clearObjectSelection();
panel.setDragObject(tempDrawObj);
panel.getDragObject().setSelected(true);
panel.getPP().setSelected(tempDrawObj);
panel.setSelectedObject(tempDrawObj);
selectedObject = tempDrawObj;
}
break;
}
i++;
@@ -71,8 +76,10 @@ public class Mouse extends MouseAdapter
{
if (SwingUtilities.isRightMouseButton(e))
{
if(o instanceof Waypoint){
new WaypointPopup(o);
if (o instanceof Waypoint)
{
new WaypointPopup(o, panel);
}
}
if (o == selectedObject)
@@ -118,7 +125,19 @@ public class Mouse extends MouseAdapter
}
}
panel.checkPath(clickPoint);
Path clickedPath = panel.getClickedPath(clickPoint);
if (clickedPath != null)
{
if (SwingUtilities.isRightMouseButton(e))
{
new PathPopup(clickedPath, panel);
}
}
else
{
panel.checkPath(clickPoint);
}
}
if (panel.getDragObject() == null && selectedObject != null)
{
@@ -130,15 +149,19 @@ public class Mouse extends MouseAdapter
}
else
{ // Making path.
panel.getCurrentPath().addPoint(new Point2D.Double(clickPoint.getX(), clickPoint.getY()));
}
panel.repaint();
}
public void mouseReleased(MouseEvent e)
{
if(panel.getDragObject() != null) {
if(panel.getDragObject().getRectangleColor() != Color.RED) {
if (panel.getDragObject() != null)
{
if (panel.getDragObject().getRectangleColor() != Color.RED)
{
panel.getDragObject().setPosition(panel.getDragObject().getPosition(), true);
panel.getPP().update();
panel.setDragObject(null);
+1
View File
@@ -256,6 +256,7 @@ public abstract class DrawObject implements Serializable
setPosition(position);
}
public double getRotation()
{
return rotation;
+19 -7
View File
@@ -14,6 +14,7 @@ import java.util.ArrayList;
import javax.imageio.ImageIO;
import Applicatie.Panel;
import Applicatie.Waypoint;
/**
@@ -95,7 +96,7 @@ public class Path
}
return null;
}
/**
* Check if one of the lines contains the given point.
*
@@ -114,12 +115,13 @@ public class Path
}
return false;
}
public boolean intersectsRect(Rectangle2D rect)
{
for(Shape line : getPath())
for (Shape line : getPath())
{
if(line.intersects(rect))
if (line.intersects(rect))
{
return true;
}
@@ -144,13 +146,23 @@ public class Path
lines.add(stroke.createStrokedShape(line));
}
return lines;
}
public void addWaypoint(Waypoint w)
public void addWaypoint(int i, Panel panel)
{
waypoints.add(w);
for (Waypoint w : panel.getWaypoints())
{
if (w.getSelf() == i)
{
waypoints.add(w);
return;
}
}
}
/**
* Add a point to the path.
*
+16 -1
View File
@@ -2,11 +2,16 @@ package Objects;
import java.awt.geom.Point2D;
import Agenda.AgendaStage;
public class Stage extends DrawObject
{
public Stage(Point2D position)
AgendaStage stage;
public Stage(Point2D position, AgendaStage st)
{
super("stage", position);
stage = st;
}
@Override
@@ -15,4 +20,14 @@ public class Stage extends DrawObject
return "Stage";
}
public AgendaStage getStage()
{
return stage;
}
public void setStage(AgendaStage stage)
{
this.stage = stage;
}
}