Bläddra i källkod

Created the top bar

jancoow 10 år sedan
förälder
incheckning
7eeec40051

BIN
res/topbar/faster.png


BIN
res/topbar/grid.png


BIN
res/topbar/pauze.png


BIN
res/topbar/people.png


BIN
res/topbar/play.png


BIN
res/topbar/stop.png


+ 5 - 4
src/gui/frames/MainFrame.java

@@ -30,10 +30,11 @@ public class MainFrame extends JFrame{
 	private SimulatorPane.Terrains terrain;
 
 
-	public MainFrame(){
-		this.agenda = new Agenda();
-		this.currentPanel = new EditPane(this.agenda);
-		this.add(currentPanel);
+  
+    public MainFrame(){
+        this.agenda = new Agenda();
+        this.currentPanel = new SimulatorPane(this.agenda, 1000, 1000,  SimulatorPane.Terrains.BEACH);
+        this.add(currentPanel);
 		this.setResizable(true);
 		this.setBounds(100,100,1440,900);
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+ 13 - 6
src/gui/simulator/Terrain.java

@@ -35,6 +35,7 @@ public class Terrain extends JPanel {
     private DrawEngine dragObject, selectedObject;
     private ImageType background;
     private Sidebar sidebar;
+    private Topbar topbar;
     
     private int festivalheight, festivalwidth;
     private int sideBarWidth = 200;
@@ -69,7 +70,8 @@ public class Terrain extends JPanel {
     	createCustomCursors();
     	//initialize sidebar
     	sidebar = new Sidebar(sideBarWidth, 3000, this);
-
+    	topbar = new Topbar(this);
+    	addMouseListener(topbar);
     	//set terrainbackground
     	switch(terrain){
 		case BEACH: 
@@ -189,7 +191,9 @@ public class Terrain extends JPanel {
         			setCursor(new Cursor(Cursor.HAND_CURSOR));
         		}else if(pathgenerate >0){
         			setCursor(pathpoint);
-        		}else{
+        		}else if(topbar.containsMouse(e.getPoint())){
+                	setCursor(new Cursor(Cursor.HAND_CURSOR));
+          		}else{
         			  for(DrawEngine drawObject: entities){
   	                    if(drawObject.contains(lastMovedMousePosition)){
   	                    	setCursor(new Cursor(Cursor.HAND_CURSOR));
@@ -292,12 +296,12 @@ public class Terrain extends JPanel {
         //this.entities.add(new Stage(400, 40, 2, 10));
     }
 
-    @Override
-    public void paint(Graphics g) {
-        super.paint(g);
+    public void paintComponent(Graphics g) {
+        super.paintComponent(g);
         Graphics2D g2 = (Graphics2D) g;
+		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+        topbar.draw(g2, getWidth());
         sidebar.draw(g2);
-        
 
 		//draw simulation field
 		g2.setClip(new Rectangle2D.Double(sideBarWidth, 0, getWidth()-sideBarWidth, getHeight()));
@@ -439,4 +443,7 @@ public class Terrain extends JPanel {
 		image = Images.ImageType.PathCursor;
 		pathpoint = toolkit.createCustomCursor(Images.getImage(image), new Point(14,14), "Pathpoint");  
 	}
+    public void toggleGrid(){
+    	grid = !grid;
+    }
 }

+ 124 - 0
src/gui/simulator/Topbar.java

@@ -0,0 +1,124 @@
+package gui.simulator;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Window;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.geom.GeneralPath;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import javax.imageio.ImageIO;
+
+public class Topbar implements MouseListener {
+	private int oldwidth, people;
+	private GeneralPath background;
+	BufferedImage t1,t2,t3,t4,t5;
+	private GregorianCalendar time;	
+	private Rectangle[] buttons;
+	private Terrain terrain;
+	
+	public Topbar(Terrain terrain){
+		background = new GeneralPath();
+		time = new GregorianCalendar();
+		buttons = new Rectangle[5];
+		this.terrain = terrain;
+		try {
+			t2 = ImageIO.read(Window.class.getResource("/topbar/play.png"));
+			t1 = ImageIO.read(Window.class.getResource("/topbar/stop.png"));
+			t3 = ImageIO.read(Window.class.getResource("/topbar/faster.png"));
+			t4 = ImageIO.read(Window.class.getResource("/topbar/grid.png"));
+			t5 = ImageIO.read(Window.class.getResource("/topbar/people.png"));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public void draw(Graphics2D g2, int screenwidth){
+		screenwidth += 100;
+		if(oldwidth != screenwidth){
+			//only create a new general path when the window is resized
+			background.reset();
+			background.moveTo(screenwidth/4, 0);
+			background.curveTo(screenwidth/4, 0, screenwidth/4 -20, 20, screenwidth/4 +30, 40);
+			background.lineTo(screenwidth/4*3-30, 40);
+			background.curveTo(screenwidth/4*3-30, 40, screenwidth/4*3 + 20, 20, screenwidth/4*3, 0);
+			background.closePath();
+			oldwidth = screenwidth;
+			buttons[0] = new Rectangle(screenwidth/4+40,7,26,26);
+			buttons[1] = new Rectangle(screenwidth/4+90,7,26,26);
+			buttons[2] = new Rectangle(screenwidth/4+130,7,26,30);
+			buttons[3] = new Rectangle(screenwidth/4*3-60,7,26,26);
+			buttons[4] = new Rectangle(screenwidth/4*3-150,7,48,26);
+		}
+		g2.setColor(Color.GRAY);
+		g2.fill(background);
+		g2.setColor(Color.BLACK);
+		g2.setStroke(new BasicStroke(2));
+		g2.draw(background);
+
+		
+		g2.drawImage(t1, screenwidth/4 + 40, 7, null );
+		g2.drawImage(t2, screenwidth/4 + 90, 7, null );
+		g2.drawImage(t3, screenwidth/4 + 130, 7, null );
+		
+        g2.setFont(new Font("Sans-serif", Font.BOLD, 22));
+		g2.drawString(time.get(Calendar.HOUR_OF_DAY) + ":" + time.get(Calendar.MINUTE), screenwidth/2-10 , 28);		
+
+		g2.drawImage(t4, screenwidth/4*3 -60, 7, null );
+		
+		g2.drawImage(t5, screenwidth/4*3 -150, 7, null );
+        g2.setFont(new Font("Sans-serif", Font.PLAIN, 18));
+		g2.drawString(people + "", screenwidth/4*3 - 120, 27);
+	}
+	public void setTime(GregorianCalendar t){
+		time = t;
+	}
+	public void setPeople(int p){
+		people = p;
+	}
+	public Rectangle[] getButtons(){
+		return buttons;
+	}
+
+	@Override
+	public void mouseClicked(MouseEvent e) {
+		int button = clickedButton(e.getPoint());
+		if(button >=0){
+			if(button == 3) terrain.toggleGrid();
+		}
+	}
+	@Override
+	public void mouseEntered(MouseEvent e) {
+	}
+	@Override
+	public void mouseExited(MouseEvent e) {
+	}
+	@Override
+	public void mousePressed(MouseEvent e) {
+	}
+	@Override
+	public void mouseReleased(MouseEvent e) {		
+	}
+	public boolean containsMouse(Point point){
+		if(clickedButton(point)>=0)
+			return true;
+		return false;
+	}
+	private int clickedButton(Point point){
+  		for(int i = 0; i < getButtons().length; i++){
+    		if(getButtons()[i].contains(point)){
+    			return i;
+    		}
+		}
+  		return -1;
+	}
+	
+}