KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > grapheditor > widget > DnDAction


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget;
21
22 import java.awt.Point JavaDoc;
23 import org.netbeans.api.visual.action.WidgetAction;
24 import org.netbeans.api.visual.widget.Widget;
25
26 /**
27  *
28  * @author anjeleevich
29  */

30 public class DnDAction extends WidgetAction.Adapter {
31
32     
33     private DnDHandler currentHandler = null;
34     private long lastId = Long.MIN_VALUE;
35     private long dragEnterTime = -1;
36     
37     public DnDAction() {
38     
39     }
40
41     @Override JavaDoc
42     public WidgetAction.State dragExit(Widget widget,
43             WidgetAction.WidgetDropTargetEvent event)
44     {
45         if (isEventProcessed(event.getEventID())) {
46             return WidgetAction.State.REJECTED;
47         }
48         
49         //remove the icon from drag layer.
50
((PartnerScene) widget.getScene()).getDragOverLayer().resetLayer();
51         
52         if (currentHandler != null) {
53             currentHandler.dragExit();
54             currentHandler = null;
55         }
56
57         return WidgetAction.State.REJECTED;
58     }
59
60     
61     @Override JavaDoc
62     public WidgetAction.State dragOver(Widget widget,
63             WidgetAction.WidgetDropTargetDragEvent event)
64     {
65         if (isEventProcessed(event.getEventID())) {
66             return WidgetAction.State.REJECTED;
67         }
68
69         Point JavaDoc scenePoint = widget.convertLocalToScene(event.getPoint());
70         
71         //Render a icon on the drag layer.
72
((PartnerScene)widget.getScene()).getDragOverLayer().dragOver(scenePoint, event);
73         
74         boolean isEventHandled = false;
75         if (widget == currentHandler) {
76             if (dragEnterTime >= 0) {
77                 if (System.currentTimeMillis() - dragEnterTime
78                         >= EXPAND_TIMEOUT)
79                 {
80                     currentHandler.expandForDragAndDrop();
81                     dragEnterTime = -1;
82                 }
83             }
84             isEventHandled = currentHandler.dragOver(scenePoint, event);
85         } else if (widget instanceof DnDHandler) {
86             if (currentHandler != null) {
87                 currentHandler.dragExit();
88             }
89             
90             currentHandler = (DnDHandler) widget;
91             if (currentHandler.isCollapsed()) {
92                 dragEnterTime = System.currentTimeMillis();
93             } else {
94                 dragEnterTime = -1;
95             }
96             
97             isEventHandled = currentHandler.dragOver(scenePoint, event);
98         } else if (currentHandler != null) {
99             currentHandler.dragExit();
100             currentHandler = null;
101             dragEnterTime = -1;
102         }
103         if (isEventHandled) {
104             event.acceptDrag(event.getDropAction());
105             return WidgetAction.State.CONSUMED;
106         }
107         
108         event.rejectDrag();
109         return WidgetAction.State.REJECTED;
110     }
111
112     
113     @Override JavaDoc
114     public WidgetAction.State dragEnter(Widget widget,
115             WidgetAction.WidgetDropTargetDragEvent event)
116     {
117         return dragOver(widget, event);
118     }
119
120     
121     @Override JavaDoc
122     public WidgetAction.State drop(Widget widget,
123             WidgetAction.WidgetDropTargetDropEvent event)
124     {
125         if (isEventProcessed(event.getEventID())) {
126             return WidgetAction.State.REJECTED;
127         }
128
129         Point JavaDoc scenePoint = widget.convertLocalToScene(event.getPoint());
130         //remove the icon from drag layer.
131
((PartnerScene)widget.getScene()).getDragOverLayer().resetLayer();
132         
133         boolean isEventHandled = false;
134         if (currentHandler != null) {
135             isEventHandled = currentHandler.drop(scenePoint, event);
136             currentHandler = null;
137         }
138         
139         if (isEventHandled) {
140             event.acceptDrop(event.getDropAction());
141             return WidgetAction.State.CONSUMED;
142         }
143         
144         event.rejectDrop();
145         return WidgetAction.State.REJECTED;
146     }
147     
148     
149     private boolean isEventProcessed(long eventId)
150     {
151         if (eventId != lastId) {
152             lastId = eventId;
153             return false;
154         }
155         
156         return true;
157     }
158     
159     private static final long EXPAND_TIMEOUT = 1500;
160 }
161
Popular Tags