DragLayer.java revision 0e26059548e429e5d1c973bebe4c561bead2926f
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/*
231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License.
631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at
731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and
1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License.
1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */
1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
17a5902524d4403885eb4c50360bf3465c6be796efJoe Onoratopackage com.android.launcher2;
1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.Context;
2031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.util.AttributeSet;
2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.view.KeyEvent;
220e26059548e429e5d1c973bebe4c561bead2926fMichael Jurkaimport android.view.MotionEvent;
23ea3763c2672f77539538af8cdd395ad97058eaabRomain Guyimport android.view.View;
2431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.widget.FrameLayout;
2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/**
270e26059548e429e5d1c973bebe4c561bead2926fMichael Jurka * A ViewGroup that coordinates dragging across its descendants
2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */
2900acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onoratopublic class DragLayer extends FrameLayout {
3000acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onorato    DragController mDragController;
3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    /**
3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     * Used to create a new DragLayer from XML.
3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     *
3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     * @param context The application's context.
360e26059548e429e5d1c973bebe4c561bead2926fMichael Jurka     * @param attrs The attributes set containing the Workspace's customization values.
3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     */
3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public DragLayer(Context context, AttributeSet attrs) {
3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        super(context, attrs);
4031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
4200acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onorato    public void setDragController(DragController controller) {
4300acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onorato        mDragController = controller;
4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
4500acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onorato
4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    @Override
4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public boolean dispatchKeyEvent(KeyEvent event) {
4800acb123c5100f06b8e89e8ec8978ebafc6f6d26Joe Onorato        return mDragController.dispatchKeyEvent(event) || super.dispatchKeyEvent(event);
4931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    @Override
5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public boolean onInterceptTouchEvent(MotionEvent ev) {
534db52312c10e822162a21c60404f06f6e507f0d6Joe Onorato        return mDragController.onInterceptTouchEvent(ev);
5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    @Override
5731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public boolean onTouchEvent(MotionEvent ev) {
584db52312c10e822162a21c60404f06f6e507f0d6Joe Onorato        return mDragController.onTouchEvent(ev);
5991a9c9636f10f1e12cd1f660b2e330634fbdc7dcRomain Guy    }
60ea3763c2672f77539538af8cdd395ad97058eaabRomain Guy
61ea3763c2672f77539538af8cdd395ad97058eaabRomain Guy    @Override
62ea3763c2672f77539538af8cdd395ad97058eaabRomain Guy    public boolean dispatchUnhandledMove(View focused, int direction) {
63ea3763c2672f77539538af8cdd395ad97058eaabRomain Guy        return mDragController.dispatchUnhandledMove(focused, direction);
64ea3763c2672f77539538af8cdd395ad97058eaabRomain Guy    }
6531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project}
66