Merge lp:~yrke/tapaal/cleanup-drawingsurface-mouseEvents into lp:tapaal/dev

Proposed by Kenneth Yrke Jørgensen
Status: Merged
Merged at revision: 1023
Proposed branch: lp:~yrke/tapaal/cleanup-drawingsurface-mouseEvents
Merge into: lp:tapaal/dev
Diff against target: 382 lines (+138/-151)
1 file modified
src/pipe/gui/DrawingSurfaceImpl.java (+138/-151)
To merge this branch: bzr merge lp:~yrke/tapaal/cleanup-drawingsurface-mouseEvents
Reviewer Review Type Date Requested Status
Kenneth Yrke Jørgensen Approve
Review via email: mp+368857@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Kenneth Yrke Jørgensen (yrke) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/pipe/gui/DrawingSurfaceImpl.java'
--- src/pipe/gui/DrawingSurfaceImpl.java 2019-04-24 07:11:25 +0000
+++ src/pipe/gui/DrawingSurfaceImpl.java 2019-06-15 08:31:30 +0000
@@ -37,7 +37,7 @@
37 private boolean animationmode = false;37 private boolean animationmode = false;
3838
39 public Arc createArc; // no longer static39 public Arc createArc; // no longer static
40 40
41 private static final int DRAWING_SURFACE_GROW = 100;41 private static final int DRAWING_SURFACE_GROW = 100;
4242
43 private SelectionManager selection;43 private SelectionManager selection;
@@ -225,10 +225,10 @@
225 private void calculateNewBoundsForScrollPane(Rectangle rect) {225 private void calculateNewBoundsForScrollPane(Rectangle rect) {
226 boolean changed = false;226 boolean changed = false;
227 Dimension current = getPreferredSize();227 Dimension current = getPreferredSize();
228 228
229 int this_width = (rect.x + rect.width + 2);229 int this_width = (rect.x + rect.width + 2);
230 int this_height = (rect.y + rect.height+ 2);230 int this_height = (rect.y + rect.height+ 2);
231 231
232 if (this_width > current.width) {232 if (this_width > current.width) {
233 current.width = this_width; changed=true;233 current.width = this_width; changed=true;
234 }234 }
@@ -270,7 +270,7 @@
270 public ArrayList<PetriNetObject> getPNObjects() {270 public ArrayList<PetriNetObject> getPNObjects() {
271 return petriNetObjects;271 return petriNetObjects;
272 }272 }
273 273
274 public ArrayList<PetriNetObject> getPlaceTransitionObjects(){274 public ArrayList<PetriNetObject> getPlaceTransitionObjects(){
275 ArrayList<PetriNetObject> result = new ArrayList<PetriNetObject>();275 ArrayList<PetriNetObject> result = new ArrayList<PetriNetObject>();
276 for (PetriNetObject pnObject : petriNetObjects) {276 for (PetriNetObject pnObject : petriNetObjects) {
@@ -340,7 +340,7 @@
340340
341 int zoomPercent = getZoom();341 int zoomPercent = getZoom();
342342
343 JViewport viewport = (JViewport) getParent(); 343 JViewport viewport = (JViewport) getParent();
344344
345 Component[] children = getComponents();345 Component[] children = getComponents();
346346
@@ -350,7 +350,7 @@
350 ((Zoomable) child).zoomUpdate(zoomPercent);350 ((Zoomable) child).zoomUpdate(zoomPercent);
351 }351 }
352 }352 }
353 353
354 // Calculate new position of the Drawing Surface.354 // Calculate new position of the Drawing Surface.
355 double newZoomedX = Zoomer.getZoomedValue(point.x, zoomPercent);355 double newZoomedX = Zoomer.getZoomedValue(point.x, zoomPercent);
356 double newZoomedY = Zoomer.getZoomedValue(point.y, zoomPercent);356 double newZoomedY = Zoomer.getZoomedValue(point.y, zoomPercent);
@@ -377,8 +377,6 @@
377377
378 class MouseHandler extends MouseInputAdapter {378 class MouseHandler extends MouseInputAdapter {
379379
380 private PetriNetObject pnObject;
381
382 private DrawingSurfaceImpl view;380 private DrawingSurfaceImpl view;
383381
384 private DataLayer guiModel;382 private DataLayer guiModel;
@@ -398,7 +396,7 @@
398 guiModel = _model;396 guiModel = _model;
399 }397 }
400398
401 private Point adjustPoint(Point p, int zoom) {399 private Point adjustPointToZoom(Point p, int zoom) {
402 int offset = (int) (Zoomer.getScaleFactor(zoom)400 int offset = (int) (Zoomer.getScaleFactor(zoom)
403 * Pipe.PLACE_TRANSITION_HEIGHT / 2);401 * Pipe.PLACE_TRANSITION_HEIGHT / 2);
404402
@@ -408,34 +406,71 @@
408 p.setLocation(x, y);406 p.setLocation(x, y);
409 return p;407 return p;
410 }408 }
411409 private Point adjustPointToGrid(Point p) {
412 private PlaceTransitionObject newTimedPlace(Point p) {410 int x = Grid.getModifiedX(p.x);
413 p = adjustPoint(p, view.getZoom());411 int y = Grid.getModifiedY(p.y);
412
413 return new Point(x, y);
414 }
415
416 private Point adjustPointToGridAndZoom(Point p, int zoom) {
417 Point newP = adjustPointToZoom(p, zoom);
418 newP = adjustPointToGrid(newP);
419
420 return newP;
421 }
422
423 private void addPetriNetObjectToModelandView(PetriNetObject pnObject) {
424 guiModel.addPetriNetObject(pnObject);
425 view.addNewPetriNetObject(pnObject);
426 }
427
428 private PlaceTransitionObject newTimedPlaceAddToModelView(Point p) {
429 p = adjustPointToGridAndZoom(p, view.getZoom());
430
414 dk.aau.cs.model.tapn.LocalTimedPlace tp = new dk.aau.cs.model.tapn.LocalTimedPlace(nameGenerator.getNewPlaceName(model));431 dk.aau.cs.model.tapn.LocalTimedPlace tp = new dk.aau.cs.model.tapn.LocalTimedPlace(nameGenerator.getNewPlaceName(model));
415 pnObject = new TimedPlaceComponent(Grid.getModifiedX(p.x), Grid432 TimedPlaceComponent pnObject = new TimedPlaceComponent(p.x, p.y, tp);
416 .getModifiedY(p.y), tp);
417 model.add(tp);433 model.add(tp);
418 guiModel.addPetriNetObject(pnObject);434 addPetriNetObjectToModelandView(pnObject);
419 view.addNewPetriNetObject(pnObject);435
420 return (PlaceTransitionObject) pnObject;436 getUndoManager().addNewEdit(new AddTimedPlaceCommand(pnObject, model, guiModel, view));
437
438 return pnObject;
421 }439 }
422440
423 private PlaceTransitionObject newTAPNTransition(Point p, boolean timed) {441 private PlaceTransitionObject newTAPNTransitionAddToModelView(Point p) {
424 p = adjustPoint(p, view.getZoom());442 p = adjustPointToGridAndZoom(p, view.getZoom());
425 dk.aau.cs.model.tapn.TimedTransition transition = new dk.aau.cs.model.tapn.TimedTransition(443
426 nameGenerator.getNewTransitionName(model));444 dk.aau.cs.model.tapn.TimedTransition transition = new dk.aau.cs.model.tapn.TimedTransition(nameGenerator.getNewTransitionName(model));
427445
428 pnObject = new TimedTransitionComponent(Grid.getModifiedX(p.x),446 TimedTransitionComponent pnObject = new TimedTransitionComponent(p.x, p.y, transition);
429 Grid.getModifiedY(p.y), transition);447
430
431 model.add(transition);448 model.add(transition);
432 guiModel.addPetriNetObject(pnObject);449 addPetriNetObjectToModelandView(pnObject);
433 view.addNewPetriNetObject(pnObject);450
434 return (PlaceTransitionObject) pnObject;451 getUndoManager().addNewEdit(new AddTimedTransitionCommand(pnObject, model, guiModel, view));
452 return pnObject;
435 }453 }
436454
437 private PlaceTransitionObject newTAPNTransition(Point p) {455 private AnnotationNote newAnnotationNoteAddToModelView(Point clickPoint) {
438 return newTAPNTransition(p, false);456 Point p = adjustPointToGridAndZoom(clickPoint, view.getZoom());
457
458 AnnotationNote pnObject = new AnnotationNote(p.x, p.y, true);
459 addPetriNetObjectToModelandView(pnObject);
460
461 getUndoManager().addNewEdit(new AddPetriNetObjectEdit(pnObject, view, guiModel));
462 pnObject.enableEditMode();
463 return pnObject;
464 }
465
466 private void continueFastMode(MouseEvent e, PlaceTransitionObject pto, ElementType nextMode) {
467 // connect arc
468 app.setMode(ElementType.TAPNARC);
469 pto.getMouseHandler().mousePressed(e);
470 pto.getMouseHandler().mouseReleased(e);
471 app.setMode(nextMode);
472 // enter fast mode
473 pto.dispatchEvent(e);
439 }474 }
440475
441 @Override476 @Override
@@ -444,135 +479,89 @@
444479
445 // check for control down here enables it to attach the arc being drawn to an existing place/transition480 // check for control down here enables it to attach the arc being drawn to an existing place/transition
446481
447 Point start = e.getPoint();482
448 Point p;483 Point clickPoint = e.getPoint();
484
449 if (SwingUtilities.isLeftMouseButton(e)) {485 if (SwingUtilities.isLeftMouseButton(e)) {
450486
451 Pipe.ElementType mode = app.getMode();487 Pipe.ElementType mode = app.getMode();
452 PlaceTransitionObject pto;488 PlaceTransitionObject newpto; //declared here as switch is one big scope
489
453 switch (mode) {490 switch (mode) {
454491 case TAPNPLACE:
455 case TAPNPLACE:492 // create place
456 // create place493 newpto = newTimedPlaceAddToModelView(clickPoint);
457 PlaceTransitionObject pto2 = newTimedPlace(e.getPoint());494
458 getUndoManager().addNewEdit(495 if (e.isControlDown()) {
459 new AddTimedPlaceCommand(496 continueFastMode(e, newpto, ElementType.FAST_TRANSITION);
460 (TimedPlaceComponent) pto2, model,497 }
461 guiModel, view));498 break;
462 if (e.isControlDown()) {499
463 // connect arc500 case TAPNTRANS:
464 app.setMode(ElementType.TAPNARC);501 // create transition
465 pto2.getMouseHandler().mousePressed(e);502 newpto = newTAPNTransitionAddToModelView(clickPoint);
466 pto2.getMouseHandler().mouseReleased(e);503
467 app.setMode(ElementType.FAST_TRANSITION);504 if (e.isControlDown()) {
468 // enter fast mode505 continueFastMode(e, newpto, ElementType.FAST_PLACE);
469 pnObject.dispatchEvent(e);506 }
470 }507 break;
471 break;508
472509 case ANNOTATION:
473 case TAPNTRANS:510 newAnnotationNoteAddToModelView(clickPoint);
474 // create transition511 break;
475 pto = newTAPNTransition(e.getPoint());512
476 getUndoManager().addNewEdit(513 case ARC:
477 new AddTimedTransitionCommand(514 case TAPNARC:
478 (TimedTransitionComponent) pto, model,515 case INHIBARC:
479 guiModel, view));516 case TRANSPORTARC:
480 if (e.isControlDown()) {517 case TAPNINHIBITOR_ARC:
481 // connect arc518 // Add point to arc in creation
482 app.setMode(ElementType.TAPNARC);519 if (createArc != null) {
483 pto.getMouseHandler().mousePressed(e);520 addArcPathPoint(createArc, e);
484 pto.getMouseHandler().mouseReleased(e);521 }
485 // enter fast mode522 break;
486 app.setMode(ElementType.FAST_PLACE);523
487 pnObject.dispatchEvent(e);524
488 }525 case DRAG:
489 break;526 dragStart = new Point(clickPoint);
490527 break;
491 case ARC:528
492 case TAPNARC:529 case FAST_TRANSITION:
493 case INHIBARC:530 // create transition
494 // Add point to arc in creation531 newpto = newTAPNTransitionAddToModelView(e.getPoint());
495 if (createArc != null) {532
496 addPoint(createArc, e);533 fastDrawAction(e, newpto, ElementType.FAST_PLACE);
497 }534 break;
498 break;535
499536 case FAST_PLACE:
500 case ANNOTATION:537 // create place
501 p = adjustPoint(e.getPoint(), view.getZoom());538 newpto = newTimedPlaceAddToModelView(e.getPoint());
502539
503 pnObject = new AnnotationNote(p.x, p.y, true);540 fastDrawAction(e, newpto, ElementType.FAST_TRANSITION);
504 guiModel.addPetriNetObject(pnObject);541 break;
505 view.addNewPetriNetObject(pnObject);542
506 getUndoManager()543 default:
507 .addNewEdit(544 break;
508 new AddPetriNetObjectEdit(pnObject, view,
509 guiModel));
510 ((AnnotationNote) pnObject).enableEditMode();
511 break;
512 case TRANSPORTARC:
513 if (createArc != null) {
514 addPoint(createArc, e);
515 }
516 break;
517 case TAPNINHIBITOR_ARC:
518 // Add point to arc in creation
519 if (createArc != null) {
520 addPoint(createArc, e);
521 }
522 break;
523 case DRAG:
524 dragStart = new Point(start);
525 break;
526
527 case FAST_TRANSITION:
528 // create transition
529 pto = newTAPNTransition(e.getPoint());
530 getUndoManager().addNewEdit(new AddTimedTransitionCommand((TimedTransitionComponent) pto, model, guiModel, view));
531 app.setMode(ElementType.TAPNARC);
532 pto.getMouseHandler().mouseReleased(e);
533
534 if (e.isControlDown()) {
535 // connect arc
536 pnObject.dispatchEvent(e);
537 app.setMode(ElementType.TAPNARC);
538 pto.getMouseHandler().mousePressed(e);
539 pto.getMouseHandler().mouseReleased(e);
540 // enter fast mode
541 app.setMode(ElementType.FAST_PLACE);
542 } else{
543 app.endFastMode();
544 }
545 break;
546 case FAST_PLACE:
547 // create place
548 PlaceTransitionObject pto3 = newTimedPlace(e.getPoint());
549 getUndoManager().addNewEdit(new AddTimedPlaceCommand((TimedPlaceComponent) pto3, model, guiModel, view));
550 app.setMode(ElementType.TAPNARC);
551 pto3.getMouseHandler().mouseReleased(e);
552
553 if (e.isControlDown()) {
554 // connect arc
555 pnObject.dispatchEvent(e);
556 app.setMode(ElementType.TAPNARC);
557 pto3.getMouseHandler().mousePressed(e);
558 pto3.getMouseHandler().mouseReleased(e);
559 // enter fast mode
560 app.setMode(ElementType.FAST_TRANSITION);
561 } else{
562 app.endFastMode();
563 }
564 break;
565 default:
566 break;
567 }545 }
568 } else {546 } else {
569 setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));547 setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
570 dragStart = new Point(start);548 dragStart = new Point(clickPoint);
571 }549 }
572 updatePreferredSize();550 updatePreferredSize();
573 }551 }
574552
575 private void addPoint(final Arc createArc, final MouseEvent e) {553 private void fastDrawAction(MouseEvent e, PlaceTransitionObject newpto, ElementType fastTransition) {
554 app.setMode(ElementType.TAPNARC);
555 newpto.getMouseHandler().mouseReleased(e);
556
557 if (e.isControlDown()) {
558 continueFastMode(e, newpto, fastTransition);
559 } else {
560 app.endFastMode();
561 }
562 }
563
564 private void addArcPathPoint(final Arc createArc, final MouseEvent e) {
576 int x = Grid.getModifiedX(e.getX());565 int x = Grid.getModifiedX(e.getX());
577 int y = Grid.getModifiedY(e.getY());566 int y = Grid.getModifiedY(e.getY());
578567
@@ -594,9 +583,7 @@
594 }583 }
595 }584 }
596585
597 /**586
598 * @see javax.swing.event.MouseInputAdapter#mouseDragged(java.awt.event.MouseEvent)
599 */
600 @Override587 @Override
601 public void mouseDragged(MouseEvent e) {588 public void mouseDragged(MouseEvent e) {
602 // if (CreateGui.getApp().getMode() == Pipe.DRAG){589 // if (CreateGui.getApp().getMode() == Pipe.DRAG){

Subscribers

People subscribed via source and target branches

to all changes: