1/*
2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package sun.awt.dnd;
27
28import java.awt.Component;
29import java.awt.event.MouseEvent;
30
31@SuppressWarnings("serial") // JDK-implementation class
32public final class SunDropTargetEvent extends MouseEvent {
33
34    public static final int MOUSE_DROPPED = MouseEvent.MOUSE_RELEASED;
35
36    private final SunDropTargetContextPeer.EventDispatcher dispatcher;
37
38    public SunDropTargetEvent(Component source, int id, int x, int y,
39                              SunDropTargetContextPeer.EventDispatcher d) {
40        super(source, id, System.currentTimeMillis(), 0, x, y, 0, 0, 0,
41              false,  MouseEvent.NOBUTTON);
42        dispatcher = d;
43        dispatcher.registerEvent(this);
44    }
45
46    public void dispatch() {
47        try {
48            dispatcher.dispatchEvent(this);
49        } finally {
50            dispose();
51        }
52    }
53
54    public void consume() {
55        boolean was_consumed = isConsumed();
56        super.consume();
57        if (!was_consumed && isConsumed()) {
58            dispose();
59        }
60    }
61
62    public void dispose() {
63        dispatcher.unregisterEvent(this);
64    }
65
66    public SunDropTargetContextPeer.EventDispatcher getDispatcher() {
67        return dispatcher;
68    }
69
70    public String paramString() {
71        String typeStr = null;
72
73        switch (id) {
74        case MOUSE_DROPPED:
75            typeStr = "MOUSE_DROPPED"; break;
76        default:
77            return super.paramString();
78        }
79        return typeStr + ",(" + getX() + "," + getY() + ")";
80    }
81}
82