ExchangeCmd.java
上传用户:sdzznc
上传日期:2022-07-23
资源大小:51k
文件大小:1k
源码类别:

绘图程序

开发平台:

Java

  1. // Copyright by Scot Drysdale
  2. package cn.edu.nju.software.grapheditor.cmd;
  3. import java.awt.Point;
  4. import cn.edu.nju.software.grapheditor.Drawing;
  5. import cn.edu.nju.software.grapheditor.shape.Shape;
  6. public class ExchangeCmd extends Command {
  7. private Shape firstShape; // the first Shape clicked
  8. /**
  9.  * When the mouse is clicked, find the frontmost Shape in the drawing that
  10.  * contains the mouse position. If there is such a Shape, then if this is
  11.  * the first click in the pair of clicks (indicated by firstShape being
  12.  * null), save it in firstShape. Otherwise, exchange the centers of this
  13.  * newly clicked Shape and firstShape.
  14.  */
  15. public void executeClick(Point p, Drawing dwg) {
  16. // Find the frontmost shape containing p.
  17. Shape s = dwg.getFrontmostContainer(p);
  18. if (s != null) { // was there a Shape containing p?
  19. if (firstShape == null)
  20. firstShape = s; // save this Shape for when there's another
  21. // click
  22. else {
  23. // We have two Shapes to exchange. Get their centers.
  24. Point firstCenter = firstShape.getCenter();
  25. Point secondCenter = s.getCenter();
  26. // Exchange their centers.
  27. firstShape.setCenter(secondCenter);
  28. s.setCenter(firstCenter);
  29. // Now we get to start all over.
  30. firstShape = null;
  31. }
  32. }
  33. }
  34. }