DropTarget.java revision cb3382b1bfe1a534b1b44f5c4def9b2db605ac90
1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.launcher2; 18 19import android.graphics.Rect; 20 21/** 22 * Interface defining an object that can receive a drag. 23 * 24 */ 25public interface DropTarget { 26 27 class DragObject { 28 public int x = -1; 29 public int y = -1; 30 31 /** X offset from the upper-left corner of the cell to where we touched. */ 32 public int xOffset = -1; 33 34 /** Y offset from the upper-left corner of the cell to where we touched. */ 35 public int yOffset = -1; 36 37 /** The view that moves around while you drag. */ 38 public DragView dragView = null; 39 40 /** The data associated with the object being dragged */ 41 public Object dragInfo = null; 42 43 /** Where the drag originated */ 44 public DragSource dragSource = null; 45 46 public DragObject() { 47 } 48 } 49 50 /** 51 * Used to temporarily disable certain drop targets 52 * 53 * @return boolean specifying whether this drop target is currently enabled 54 */ 55 boolean isDropEnabled(); 56 57 /** 58 * Handle an object being dropped on the DropTarget 59 * 60 * @param source DragSource where the drag started 61 * @param x X coordinate of the drop location 62 * @param y Y coordinate of the drop location 63 * @param xOffset Horizontal offset with the object being dragged where the original 64 * touch happened 65 * @param yOffset Vertical offset with the object being dragged where the original 66 * touch happened 67 * @param dragView The DragView that's being dragged around on screen. 68 * @param dragInfo Data associated with the object being dragged 69 * 70 */ 71 void onDrop(DragObject dragObject); 72 73 void onDragEnter(DragObject dragObject); 74 75 void onDragOver(DragObject dragObject); 76 77 void onDragExit(DragObject dragObject); 78 79 /** 80 * Allows a DropTarget to delegate drag and drop events to another object. 81 * 82 * Most subclasses will should just return null from this method. 83 * 84 * @param source DragSource where the drag started 85 * @param x X coordinate of the drop location 86 * @param y Y coordinate of the drop location 87 * @param xOffset Horizontal offset with the object being dragged where the original 88 * touch happened 89 * @param yOffset Vertical offset with the object being dragged where the original 90 * touch happened 91 * @param dragView The DragView that's being dragged around on screen. 92 * @param dragInfo Data associated with the object being dragged 93 * 94 * @return The DropTarget to delegate to, or null to not delegate to another object. 95 */ 96 DropTarget getDropTargetDelegate(DragObject dragObject); 97 98 /** 99 * Check if a drop action can occur at, or near, the requested location. 100 * This will be called just before onDrop. 101 * 102 * @param source DragSource where the drag started 103 * @param x X coordinate of the drop location 104 * @param y Y coordinate of the drop location 105 * @param xOffset Horizontal offset with the object being dragged where the 106 * original touch happened 107 * @param yOffset Vertical offset with the object being dragged where the 108 * original touch happened 109 * @param dragView The DragView that's being dragged around on screen. 110 * @param dragInfo Data associated with the object being dragged 111 * @return True if the drop will be accepted, false otherwise. 112 */ 113 boolean acceptDrop(DragObject dragObject); 114 115 // These methods are implemented in Views 116 void getHitRect(Rect outRect); 117 void getLocationOnScreen(int[] loc); 118 int getLeft(); 119 int getTop(); 120} 121