Просмотр исходного кода

Added cursors (No idea how this looks on windows and mac!)
Walkingpaths connect to the center of a drawing object

jancoow 10 лет назад
Родитель
Сommit
43f881ddfa
4 измененных файлов с 41 добавлено и 7 удалено
  1. BIN
      res/path.gif
  2. BIN
      res/rotate.gif
  3. 39 5
      src/gui/simulator/Terrain.java
  4. 2 2
      src/gui/simulator/WalkingPath.java

BIN
res/rotate.gif


+ 39 - 5
src/gui/simulator/Terrain.java

@@ -47,6 +47,7 @@ public class Terrain extends JPanel {
 	private boolean grid;
 	private ArrayList<Visitor> visitors;
 	private ArrayList<WalkingPath> paths;
+	Cursor rotate, pathpoint;
 	
 	Point2D lastClickPosition;
 	Point lastMousePosition;
@@ -64,8 +65,7 @@ public class Terrain extends JPanel {
     	visitors = new ArrayList<Visitor>();
     	paths = new ArrayList<WalkingPath>();
 
-
-
+    	createCustomCursors();
     	//initialize sidebar
     	sidebar = new Sidebar(sideBarWidth, 3000, this);
 
@@ -144,12 +144,13 @@ public class Terrain extends JPanel {
 	                    if(drawObject.contains(clickPoint)){
 	                    	if(pathgenerate  == 1){
 	                    		currentpath = new WalkingPath();
-	                    		currentpath.addPoint(new Point((int)drawObject.getX(), (int)drawObject.getY()));
+	                    		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.getX(), (int)drawObject.getY()));
+	                    		
+	                    		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++){
@@ -159,6 +160,7 @@ public class Terrain extends JPanel {
 	                    		pathgenerate = 0;
 	                    		return; 
 	                    	}else{
+	                    		setCursor(new Cursor(Cursor.MOVE_CURSOR));
 	                    		dragObject = drawObject;
 	                    		selectedObject = dragObject;	
 	                    		oldPosition = new Point2D.Double(selectedObject.getX(), selectedObject.getY());
@@ -210,6 +212,7 @@ public class Terrain extends JPanel {
                         }
                     }
                 }
+                setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                 selectedObject = null;
                 dragObject = null;
                 repaint();
@@ -219,20 +222,34 @@ public class Terrain extends JPanel {
         addMouseMotionListener(new MouseMotionAdapter() {
         	public void mouseMoved(MouseEvent e){
         		lastMovedMousePosition = getClickPoint(e.getPoint());
+        		if(pathgenerate >0){
+        			setCursor(pathpoint);
+        		}else{
+        			  for(DrawEngine drawObject: entities){
+  	                    if(drawObject.contains(lastMovedMousePosition)){
+  	                    	setCursor(new Cursor(Cursor.HAND_CURSOR));
+  	                    	return;
+  	                    }
+        			  }
+              		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+        		}
         	}
             @Override
             public void mouseDragged(MouseEvent e) {
             	Point2D clickPoint = getClickPoint(e.getPoint());
                 if(dragObject != null){
                     if(SwingUtilities.isLeftMouseButton(e)){
+                    		setCursor(new Cursor(Cursor.MOVE_CURSOR));
                     		dragObject.setX(dragObject.getX() - (lastClickPosition.getX() - clickPoint.getX()));
                     		dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));
                     }else if(SwingUtilities.isRightMouseButton(e)){
-						dragObject.setRotation(dragObject.getRotation() + (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY()));
+                		setCursor(rotate);
+                    	dragObject.setRotation(dragObject.getRotation() + (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY()));
                     }
                 }
                 else
 				{
+                	setCursor(new Cursor(Cursor.MOVE_CURSOR));
 					cameraPoint = new Point2D.Double(
 							cameraPoint.getX() + (lastMousePosition.getX() - e.getX()),
 							cameraPoint.getY() + (lastMousePosition.getY() - e.getY())
@@ -438,4 +455,21 @@ public class Terrain extends JPanel {
     public void addEntity(DrawEngine dragObject){
     	entities.add(dragObject);
     }
+    
+    public void createCustomCursors(){
+    	Toolkit toolkit = Toolkit.getDefaultToolkit();  
+    	Image image = null;
+		try {
+			image = ImageIO.read(Window.class.getResource("/rotate.gif"));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+    	rotate = toolkit.createCustomCursor(image, new Point(14,14), "Rotate");  
+		try {
+			image = ImageIO.read(Window.class.getResource("/path.gif"));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		pathpoint = toolkit.createCustomCursor(image, new Point(14,14), "Pathpoint");  
+    }
 }

+ 2 - 2
src/gui/simulator/WalkingPath.java

@@ -51,8 +51,8 @@ public class WalkingPath {
 	}
 	public void reCalculate(){
 		if(object1 != null && object2 != null){
-			path.get(0).setLocation(new Point((int)object1.getX(), (int)object1.getY()));
-			path.get(path.size()-1).setLocation(new Point((int)object2.getX(), (int)object2.getY()));
+			path.get(0).setLocation(new Point((int)object1.getCenter().getX(), (int)object1.getCenter().getY()));
+			path.get(path.size()-1).setLocation(new Point((int)object2.getCenter().getX(), (int)object2.getCenter().getY()));
 		}
 	}
 	public void paint(Graphics2D g2){