/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-10 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ package com.juce; import android.content.Context; import android.view.*; import android.graphics.*; //============================================================================== public class ComponentPeerView extends View implements View.OnFocusChangeListener { public ComponentPeerView (Context context, boolean opaque_) { super (context); opaque = opaque_; setFocusable (true); setFocusableInTouchMode (true); setOnFocusChangeListener (this); requestFocus(); } //============================================================================== private native void handlePaint (Canvas canvas); @Override public void draw (Canvas canvas) { handlePaint (canvas); } @Override public boolean isOpaque() { return opaque; } private boolean opaque; //============================================================================== private native void handleMouseDown (float x, float y, long time); private native void handleMouseDrag (float x, float y, long time); private native void handleMouseUp (float x, float y, long time); @Override public boolean onTouchEvent (MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: handleMouseDown (event.getX(), event.getY(), event.getEventTime()); return true; case MotionEvent.ACTION_MOVE: handleMouseDrag (event.getX(), event.getY(), event.getEventTime()); return true; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: handleMouseUp (event.getX(), event.getY(), event.getEventTime()); return true; default: break; } return false; } //============================================================================== @Override protected void onSizeChanged (int w, int h, int oldw, int oldh) { viewSizeChanged(); } @Override protected void onLayout (boolean changed, int left, int top, int right, int bottom) { } private native void viewSizeChanged(); @Override public void onFocusChange (View v, boolean hasFocus) { if (v == this) focusChanged (hasFocus); } private native void focusChanged (boolean hasFocus); public void setViewName (String newName) { } public boolean isVisible() { return getVisibility() == VISIBLE; } public void setVisible (boolean b) { setVisibility (b ? VISIBLE : INVISIBLE); } public boolean containsPoint (int x, int y) { return true; //xxx needs to check overlapping views } }