View Javadoc

1   /**********************************************
2    * Copyright (C) 2011 Lukas Laag
3    * This file is part of svgreal.
4    * 
5    * svgreal is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * svgreal is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   * 
15   * You should have received a copy of the GNU General Public License
16   * along with svgreal.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  package org.vectomatic.svg.edit.client.command.dnd;
19  
20  import java.util.List;
21  
22  import org.vectomatic.svg.edit.client.command.DndCommandFactory.DropGesture;
23  import org.vectomatic.svg.edit.client.model.svg.SVGElementModel;
24  
25  import com.extjs.gxt.ui.client.event.DNDEvent;
26  
27  /**
28   * Interface for classes which interpret drag and drop input
29   * @author laaglu
30   */
31  public interface IDndHandler {
32  	/**
33  	 * Determines the feasibility of creating a command using the
34  	 * specified source elements as drag sources.
35  	 * @param event
36  	 * The drag and drop event
37  	 * @param sourceElements
38  	 * The elements being dragged
39  	 * @return
40  	 * True if the drag and drop operation can proceed, false if
41  	 * it should be completely blocked.
42  	 */
43  	public boolean isValidSource(DNDEvent event, List<SVGElementModel> sourceElements);
44  	/**
45  	 * Determines if dropping on the specified target will result
46  	 * in a successful command creation.
47  	 * @param sourceElements
48  	 * The elements being dragged
49  	 * @param target
50  	 * The hovered target
51  	 * @return
52  	 * True if the target is authorized, false otherwise
53  	 */
54  	public boolean isValidTarget(List<SVGElementModel> sourceElements, SVGElementModel target);
55  	/**
56  	 * Creates the commands which represent the drag and drop operation
57  	 * @param sourceElements
58  	 * The drag source elements
59  	 * @param target
60  	 * The drop target elements
61  	 * @param dropGesture
62  	 * The drop gesture
63  	 */
64  	public void createCommands(List<SVGElementModel> sourceElements, SVGElementModel target, DropGesture dropGesture);
65  	/**
66  	 * Returns the DOM attribute value which trigger the display
67  	 * of the proper icons in the drag ghost using a CSS rule
68  	 * @return a DOM attribute value
69  	 */
70  	public String getOperationCssAttr();
71  	/**
72  	 * Returns the text which appears in the ghost during a
73  	 * drag and drop operation
74  	 * @param sourceElements
75  	 * The elements being dragged
76  	 * @return
77  	 */
78  	public String getMessage(List<SVGElementModel> sourceElements);
79  	/**
80  	 * Returns the key code associated with this handler
81  	 * @return
82  	 */
83  	public int getKeyCode();
84  }