Răsfoiți Sursa

added remove button

Gilian Joosen 10 ani în urmă
părinte
comite
5dede1e713

BIN
res/dirt.png


BIN
res/stones.jpg


+ 4 - 4
src/agenda/Agenda.java

@@ -32,11 +32,11 @@ public class Agenda implements Serializable {
         this.artists.add(new Artist("Sabaton", "Power metal"));
 
         //acts
-//        this.acts.add(new Act(this.artists.get(0).getName(), this.stages.get(0), "Heavy metal", new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), this.artists.get(0)));
-//        this.acts.add(new Act(this.artists.get(1).getName(), this.stages.get(1), "Test metal" , new ActTime(2015,02,11,23,00  ,2015,02,12,04,30), this.artists.get(1)));
-//        this.acts.add(new Act(this.artists.get(2).getName(), this.stages.get(0), "Power metal" ,new ActTime(2015,02,11,20,00  ,2015,02,11,23,00), this.artists.get(2)));
+//        this.acts.add(new Act(this.artists.get(0).getName(), this.stages.get(0), "Heavy metal", new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), 5, this.artists.get(0)));
+//        this.acts.add(new Act(this.artists.get(1).getName(), this.stages.get(1), "Test metal" , new ActTime(2015,02,11,23,00  ,2015,02,12,04,30), 5, this.artists.get(1)));
+//        this.acts.add(new Act(this.artists.get(2).getName(), this.stages.get(0), "Power metal" ,new ActTime(2015,02,11,20,00  ,2015,02,11,23,00), 4, this.artists.get(2)));
         
-        System.out.println(this);
+        //System.out.println(this);
     }
     
     public List<Stage> getStages() {

+ 13 - 5
src/agenda/Database.java

@@ -15,17 +15,24 @@ public class Database {
   private String pass = "tzHnYRbpt7r3z4jt";
   
   //get agenda values
-  private Agenda agenda = new Agenda();
-  private ArrayList<Act> acts = (ArrayList<Act>) agenda.getActs();
-  
+  private Agenda agenda;
+  private ArrayList<Act> acts;
 
+  public Database(Agenda agenda){
+	  this.agenda = agenda;
+	  acts = (ArrayList<Act>) agenda.getActs();
+  }
+  
   public void writeDatabase() throws Exception {
+	  for(Act act : agenda.getActs()){
+		  System.out.println(act);
+	  }
     try {
       Class.forName("com.mysql.jdbc.Driver");
       connect = DriverManager.getConnection(host,user,pass);
 
       //first check if agenda already exists in DB, otherwise delete everything
-       
+      System.out.println("test1");
 	//insert stage names
       for(Act act : acts){
     	  String name = act.getName();
@@ -40,13 +47,14 @@ public class Database {
     	  System.out.println(endTime);
     	  System.out.println(popularity);
     	  //insert data into database
-    	  preparedStatement = connect.prepareStatement("insert into  festivalagenda.Act (agenda_view_id, begintijd, eindtijd, naam, genre, populariteit) values (0, ?, ?, ?, ?, ?)");
+    	  preparedStatement = connect.prepareStatement("insert into  festivalagenda.Act (agenda_view_id, stage_id, begintijd, eindtijd, naam, genre, populariteit) values (1, 1, ?, ?, ?, ?, ?)");
     	  preparedStatement.setString(1, beginTime);
     	  preparedStatement.setString(2, endTime);
           preparedStatement.setString(3, name);
           preparedStatement.setString(4, genre);
           preparedStatement.setInt(5, popularity);
           preparedStatement.executeUpdate();
+          System.out.println("test2");
       }
             
     } catch (Exception e) {

+ 1 - 1
src/gui/frames/MainFrame.java

@@ -39,7 +39,7 @@ public class MainFrame extends JFrame{
 		this.setBounds(100,100,1440,900);
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		this.setUndecorated(false);
-		this.setJMenuBar(new MenuBar(this));
+		this.setJMenuBar(new MenuBar(this, agenda));
 		this.setVisible(true);
 
 		this.length = 100000;

+ 6 - 2
src/gui/menubar/MenuBar.java

@@ -25,9 +25,12 @@ import agenda.Io;
 public class MenuBar extends JMenuBar{
 
 	private MainFrame mainFrame;
+	private Agenda agenda;
 
-	public MenuBar(MainFrame frame){
+	//add agenda because Database needs it to acces all inserted acts
+	public MenuBar(MainFrame frame, Agenda agenda){
 		this.mainFrame = frame;
+		this.agenda = agenda;
 		initialize();
 	}
 
@@ -102,9 +105,10 @@ public class MenuBar extends JMenuBar{
 		fileMenu.add(uploadAction);
 		uploadAction.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent arg0) {
-				Database database = new Database();
+				Database database = new Database(agenda);
 				try {
 					database.writeDatabase();
+					System.out.println("Act data send to database");
 				} catch (Exception e) {
 					e.printStackTrace();
 					System.out.println("Database error");

+ 6 - 3
src/gui/simulator/Images.java

@@ -28,7 +28,8 @@ public class Images{
 			images.add(ImageIO.read(Main.class.getResource("/ground_stone.jpg")));
 			images.add(ImageIO.read(Main.class.getResource("/rotate.gif")));
 			images.add(ImageIO.read(Main.class.getResource("/path.gif")));
-			
+			images.add(ImageIO.read(Main.class.getResource("/dirt.png")));
+			images.add(ImageIO.read(Main.class.getResource("/stones.jpg")));
 			//images.add(ImageIO.read(Main.class.getResource("")));
 			
 		}catch(IOException e){
@@ -53,9 +54,11 @@ public class Images{
 		Border,
 		Visitor,
 		Add,
-		Pad,
+		PathGroundStone,
 		RotateCursor,
-		PathCursor
+		PathCursor,
+		PathDirt,
+		PathStone
 	}
 }
 //enum ImageEnum

+ 51 - 22
src/gui/simulator/Sidebar.java

@@ -1,5 +1,6 @@
 package gui.simulator;
 
+import gui.simulator.Images.ImageType;
 import gui.simulator.facilities.RestRoom;
 import gui.simulator.facilities.SimulatorStage;
 import gui.simulator.facilities.SnackBar;
@@ -18,6 +19,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.Map.Entry;
 
 public class Sidebar implements Serializable  {
 	private int sideBarWidth;
@@ -25,7 +27,7 @@ public class Sidebar implements Serializable  {
 	private Terrain terrain;
 	private LinkedHashMap<String, DrawEngine> drawableStages = new LinkedHashMap<String, DrawEngine>();
 	private LinkedHashMap<String, DrawEngine> drawableFacilities = new LinkedHashMap<String, DrawEngine>();
-	private LinkedHashMap<String, DrawEngine> drawablePaths = new LinkedHashMap<String, DrawEngine>();
+	private LinkedHashMap<String, Images.ImageType> drawablePaths = new LinkedHashMap<String, Images.ImageType>();
 	private ArrayList<LinkedHashMap<String, DrawEngine>> drawableArrays = new ArrayList<LinkedHashMap<String, DrawEngine>>();
 	public enum SideBarTab{
 		STAGES(0), FACILITIES(1), PATHS(2);
@@ -84,11 +86,14 @@ public class Sidebar implements Serializable  {
 		drawableFacilities.put("Snackbar",new SnackBar(0, 0, 0.2, 1, this.terrain));
 		
 		//paths
+		drawablePaths.put("Ground-stone", Images.ImageType.PathGroundStone);
+		drawablePaths.put("Dirt", Images.ImageType.PathDirt);
+		drawablePaths.put("Stone", Images.ImageType.PathStone);
+
 		//drawablePaths.add("My awesome path name", new AwesomePath());
 
 		drawableArrays.add(drawableStages);
 		drawableArrays.add(drawableFacilities);
-		drawableArrays.add(drawablePaths);		
 	}
 	
 	public void draw(Graphics2D g2){
@@ -129,20 +134,33 @@ public class Sidebar implements Serializable  {
         int objectPlacementX = 0;
         int objectPlacementY = 61;
 
-		for(HashMap.Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
-			object.getValue().setX(objectPlacementX);
-			object.getValue().setY(objectPlacementY);
-			object.getValue().draw(g2);
-			g2.drawString(object.getKey(), objectPlacementX+2, objectPlacementY + 95);
-			g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
-			objectPlacementX += 100;
-			//switch to next row
-			if(objectPlacementX % 200 == 0){
-				objectPlacementX = 0;
-				objectPlacementY += 100;
+        if(currentTab == SideBarTab.PATHS){
+        	for(Entry<String, ImageType> object : drawablePaths.entrySet()){
+        		g2.drawImage(Images.getImage(object.getValue()), objectPlacementX +10, objectPlacementY +10, sideBarWidth/2 -20, 80, null);
+        		g2.drawString(object.getKey(), objectPlacementX+2, objectPlacementY + 95);
+				g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
+        		objectPlacementX += 100;
+				//switch to next row
+				if(objectPlacementX % 200 == 0){
+					objectPlacementX = 0;
+					objectPlacementY += 100;
+				}
+        	}
+        }else{
+			for(Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
+				object.getValue().setX(objectPlacementX);
+				object.getValue().setY(objectPlacementY);
+				object.getValue().draw(g2);
+				g2.drawString(object.getKey(), objectPlacementX+2, objectPlacementY + 95);
+				g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
+				objectPlacementX += 100;
+				//switch to next row
+				if(objectPlacementX % 200 == 0){
+					objectPlacementX = 0;
+					objectPlacementY += 100;
+				}
 			}
-		}
-		
+        }
 		//draw seperation line between sidebar and field
         g2.setColor(Color.BLACK);
         g2.setStroke(new BasicStroke(5));
@@ -172,9 +190,21 @@ public class Sidebar implements Serializable  {
     		int objectPlacementX = 0;
             int objectPlacementY = 61;
     
-            for(HashMap.Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
-    			if(object.getValue().contains(e.getPoint())){
-    				if(object.getValue() instanceof DrawEngine){
+            if(currentTab == SideBarTab.PATHS){
+              	for(Entry<String, ImageType> object : drawablePaths.entrySet()){
+	    			if(new Rectangle(objectPlacementX, objectPlacementY, sideBarWidth/2, 100).contains(e.getPoint())){
+	    				terrain.newWalkingPath(object.getValue());
+	    			}
+	        		objectPlacementX += 100;
+					//switch to next row
+					if(objectPlacementX % 200 == 0){
+						objectPlacementX = 0;
+						objectPlacementY += 100;
+					}
+              	}
+            }else{
+            	for(Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
+	    			if(object.getValue().contains(e.getPoint())){
 	    				try {
 							Constructor<?> constructor = object.getValue().getClass().getConstructor(int.class, int.class, double.class, double.class, Terrain.class);
 							dragObject = (DrawEngine) constructor.newInstance(new Object[] { (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10, terrain });
@@ -182,10 +212,9 @@ public class Sidebar implements Serializable  {
 	    				} catch (NoSuchMethodException | SecurityException |  IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e1) {
 							e1.printStackTrace();
 						}
-    				}
-    			}
-    		}
-
+	    			}
+	    		}
+            }
 			if(dragObject != null)
 				terrain.addEntity(dragObject);
 		}

+ 55 - 34
src/gui/simulator/Terrain.java

@@ -1,12 +1,19 @@
 package gui.simulator;
 
-import agenda.Agenda;
 import gui.simulator.Images.ImageType;
-import gui.simulator.facilities.RestRoom;
-import gui.simulator.facilities.SimulatorStage;
-import gui.simulator.facilities.SnackBar;
 
-import java.awt.*;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.Shape;
+import java.awt.TexturePaint;
+import java.awt.Toolkit;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseMotionAdapter;
@@ -17,15 +24,16 @@ import java.awt.geom.Area;
 import java.awt.geom.NoninvertibleTransformException;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.imageio.ImageIO;
-import javax.swing.*;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+import agenda.Agenda;
+
 
 public class Terrain extends JPanel {
 
@@ -40,7 +48,7 @@ public class Terrain extends JPanel {
     private int festivalheight, festivalwidth;
     private int sideBarWidth = 200;
     
-    private int pathgenerate = 1;
+    private int pathgenerate; 
     private WalkingPath currentpath;
     
     private SimulatorPane.Terrains terrain;
@@ -54,7 +62,7 @@ public class Terrain extends JPanel {
 	Point2D lastClickPosition;
 	Point lastMousePosition;
 	Point2D lastMovedMousePosition;
-
+	TexturePaint p;
 
 	private Agenda agenda;
 
@@ -62,16 +70,16 @@ public class Terrain extends JPanel {
     	//get values
     	setFestivalHeight(length);
     	setFestivalWidth(width);
-    	grid = true;
     	this.terrain = terrain;
     	visitors = new ArrayList<Visitor>();
     	paths = new ArrayList<WalkingPath>();
 
     	createCustomCursors();
-    	//initialize sidebar
+    	//initialize sidebar & topbar    	
     	sidebar = new Sidebar(sideBarWidth, 3000, this);
     	topbar = new Topbar(this);
     	addMouseListener(topbar);
+    	
     	//set terrainbackground
     	switch(terrain){
 		case BEACH: 
@@ -84,6 +92,7 @@ public class Terrain extends JPanel {
 			background = Images.ImageType.Street;
 			break;
 		}
+        p = new TexturePaint(Images.getImage(background), new Rectangle2D.Double(0, 0, 200, 200));
     	
         this.dragObject = null;
         this.entities = new LinkedList();
@@ -108,20 +117,14 @@ public class Terrain extends JPanel {
 	                for(DrawEngine drawObject: entities){
 	                    if(drawObject.contains(clickPoint)){
 	                    	if(pathgenerate  == 1){
-	                    		currentpath = new WalkingPath();
 	                    		currentpath.addPoint(new Point((int)drawObject.getCenter().getX(), (int)drawObject.getCenter().getY()));
 	                    		currentpath.setObject1(drawObject);
 	                    		pathgenerate = 2;
 	                    		return;
 	                    	}else if(pathgenerate > 1){
-	                    		
 	                    		currentpath.addPoint(new Point((int)drawObject.getCenter().getX(), (int)drawObject.getCenter().getY()));
 	                    		currentpath.setObject2(drawObject);
 	                    		paths.add(currentpath);
-	                        	for(int i=0; i< 200; i++){
-	                            	visitors.add(new Visitor(new Point(100+(i*15),100)));	
-	                            	visitors.get(i).walkRoute(paths.get(0));
-	                        	}
 	                    		pathgenerate = 0;
 	                    		return; 
 	                    	}else{
@@ -134,6 +137,7 @@ public class Terrain extends JPanel {
 
 								//double click
 								if(e.getClickCount() == 2){
+									//TODO open dialog
 									JDialog dialog = new StageDialog(drawObject, agenda);
 
 									//position
@@ -153,8 +157,19 @@ public class Terrain extends JPanel {
 	                    	}
 	                    }
 	                }
-	                if(pathgenerate > 1){
-                		currentpath.addPoint(new Point((int)getClickPoint(e.getPoint()).getX(), (int)getClickPoint(e.getPoint()).getY()));
+	                if(pathgenerate == 1){
+                		if(SwingUtilities.isRightMouseButton(e)){
+                			pathgenerate = 0;
+                		}
+	                }else if(pathgenerate > 1){
+                		if(SwingUtilities.isRightMouseButton(e)){
+                			currentpath.removeLastPoint();
+                			if(currentpath.getPath().size() == 0){
+                				pathgenerate = 0;
+                			}
+                		}else{
+                			currentpath.addPoint(new Point((int)getClickPoint(e.getPoint()).getX(), (int)getClickPoint(e.getPoint()).getY()));
+                		}
 	                }
                 }
                 repaint();
@@ -309,13 +324,15 @@ public class Terrain extends JPanel {
         a1.subtract(a2);  
         
         g2.setClip(a1);
-		//g2.setClip(new Rectangle2D.Double(sideBarWidth, 0, getWidth()-sideBarWidth, getHeight()));
 		AffineTransform oldTransform = g2.getTransform();
 		g2.translate(sideBarWidth,0);
 		g2.setTransform(getCamera());
-        TexturePaint p = new TexturePaint(Images.getImage(background), new Rectangle2D.Double(0, 0, 200, 200));
+		
+		
 		g2.setPaint(p);
 		g2.fill(new Rectangle2D.Double(0,0,festivalwidth,festivalheight));
+		
+		
 		if(grid){
 			g2.setColor(new Color(160,160,160,120));
 			g2.setStroke(new BasicStroke(1));
@@ -328,21 +345,22 @@ public class Terrain extends JPanel {
 		}
 
 		if(pathgenerate > 1){
-			g2.setStroke(new BasicStroke(10));
 			currentpath.paint(g2);
 			g2.drawLine((int)currentpath.get(currentpath.getPath().size()-1).getX(),(int)currentpath.get(currentpath.getPath().size()-1).getY(), (int)lastMovedMousePosition.getX(), (int)lastMovedMousePosition.getY());
-		}else{
-			for(WalkingPath path:paths){
-				path.paint(g2);
-			}
 		}
+		for(WalkingPath path:paths){
+			path.paint(g2);
+		}
+		g2.setStroke(new BasicStroke(4));
+
     	for(Visitor v:visitors){
     		v.paint(g2);
     	}
 		for(DrawEngine drawObject: entities){
             drawObject.draw(g2); 
             if(pathgenerate > 0){
-            	g2.fill(drawObject.getAffineTransform().createTransformedShape(new Rectangle((int)(drawObject.getX()-(drawObject.getWidth()/2)-10),(int)(drawObject.getY()-(drawObject.getHeight()/2)-10), 20, 20)));
+            	g2.setColor(new Color(180,100,100,120));
+            	g2.fill(new Rectangle((int)drawObject.getCenter().getX()-20, (int)drawObject.getCenter().getY()-20, 40,40));
             }
         }
 
@@ -369,6 +387,7 @@ public class Terrain extends JPanel {
             g2.fill(this.selectedObject.getAffineTransform().createTransformedShape(this.selectedObject.getRect()));
             g2.setTransform(oldTransform);
         }
+        g2.setClip(null);
     }
 
     private Rectangle drawDragRectangle(DrawEngine shape){
@@ -451,8 +470,10 @@ public class Terrain extends JPanel {
     public void toggleGrid(){
     	grid = !grid;
     }
-
-	public List<DrawEngine> getEntities() {
-		return entities;
-	}
+    public void newWalkingPath(Images.ImageType imagetype){
+		if(pathgenerate == 0){
+			currentpath = new WalkingPath(imagetype);
+			pathgenerate = 1;
+		}
+    }
 }

+ 9 - 6
src/gui/simulator/WalkingPath.java

@@ -15,13 +15,18 @@ public class WalkingPath implements Serializable {
 	private DrawEngine object1,object2;
 	private ImageType texture;
 	
-	public WalkingPath(){
+	public WalkingPath(ImageType itype){
 		path = new ArrayList<Point>();
-		texture = Images.ImageType.Pad;
+		texture = itype;
 	}
 	public void addPoint(Point p){
 		path.add(p);
 	}
+	public void removeLastPoint(){
+		if(path.size() != 0){
+			path.remove(path.size()-1);
+		}
+	}
 	public Point get(int i){
 		return path.get(i);
 	}
@@ -50,13 +55,11 @@ public class WalkingPath implements Serializable {
 		}
 	}
 	public void paint(Graphics2D g2){
-		
+		g2.setStroke(new BasicStroke(30,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+		g2.setPaint(new TexturePaint(Images.getImage(texture), new Rectangle(0,0,100,100)));
 		for(int i = 1; i < getPath().size(); i++){
-			g2.setStroke(new BasicStroke(40,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
-			g2.setPaint(new TexturePaint(Images.getImage(texture), new Rectangle(0,0,100,100)));
 			g2.drawLine((int)get(i-1).getX(),(int)get(i-1).getY(), (int)get(i).getX(),(int)get(i).getY());
 		}
-		g2.setStroke(new BasicStroke(10,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
 	}