(Box root, Window.Event<Window.MouseState> event)
| 54 | int click = 0; |
| 55 | |
| 56 | public void dispatch(Box root, Window.Event<Window.MouseState> event) { |
| 57 | |
| 58 | Optional<Drawing> drawing = root.find(Drawing.drawing, root.both()) |
| 59 | .findFirst(); |
| 60 | if (drawing.isPresent()) |
| 61 | { |
| 62 | fixDrawingSpace(drawing, event.after); |
| 63 | fixDrawingSpace(drawing, event.before); |
| 64 | } |
| 65 | |
| 66 | Box startAt = Intersects.startAt(event.after, root); |
| 67 | |
| 68 | event.properties.put(originatesAt, startAt); |
| 69 | |
| 70 | Set<Integer> pressed = Window.MouseState.buttonsPressed(event.before, event.after); |
| 71 | Set<Integer> released = Window.MouseState.buttonsReleased(event.before, event.after); |
| 72 | Set<Integer> down = event.after.buttonsDown; |
| 73 | |
| 74 | if (pressed.size()==1) { |
| 75 | if (startAt == lastStartAt && System.currentTimeMillis() - lastStartAtTime < 300) { |
| 76 | event.properties.put(clickNumber, ++click); |
| 77 | |
| 78 | } else { |
| 79 | event.properties.put(clickNumber, click=1); |
| 80 | lastStartAt = startAt; |
| 81 | } |
| 82 | |
| 83 | lastStartAtTime = System.currentTimeMillis(); |
| 84 | } |
| 85 | |
| 86 | released.stream() |
| 87 | .map(r -> ongoingDrags.remove(r)) |
| 88 | .filter(x -> x != null) |
| 89 | .forEach(drags -> { |
| 90 | drags.stream() |
| 91 | .filter(d -> d != null) |
| 92 | .forEach(dragger -> dragger.update(event, true)); |
| 93 | drags.clear(); |
| 94 | }); |
| 95 | |
| 96 | for (Collection<Dragger> d : ongoingDrags.values()) { |
| 97 | Iterator<Dragger> dd = d.iterator(); |
| 98 | while (dd.hasNext()) { |
| 99 | Dragger dragger = dd.next(); |
| 100 | boolean cont = false; |
| 101 | try { |
| 102 | cont = dragger.update(event, false); |
| 103 | } catch (Throwable t) { |
| 104 | System.err.println(" Exception thrown in dragger update :" + t); |
| 105 | System.err.println(" dragger will not be called again"); |
| 106 | t.printStackTrace(); |
| 107 | cont = false; |
| 108 | } |
| 109 | if (!cont) dd.remove(); |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | Util.Errors errors = new Util.Errors(); |
no test coverage detected