mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-03 22:19:46 +00:00
109 lines
3.3 KiB
Java
109 lines
3.3 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.goanna.gfx;
|
|
|
|
import org.mozilla.goanna.GoannaEvent;
|
|
import org.mozilla.goanna.GoannaThread;
|
|
import org.mozilla.goanna.mozglue.generatorannotations.WrapElementForJNI;
|
|
import org.mozilla.goanna.EventDispatcher;
|
|
import org.mozilla.goanna.util.GoannaEventListener;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import android.graphics.PointF;
|
|
import android.view.KeyEvent;
|
|
import android.view.MotionEvent;
|
|
import android.view.View;
|
|
|
|
class NativePanZoomController implements PanZoomController, GoannaEventListener {
|
|
private final PanZoomTarget mTarget;
|
|
private final EventDispatcher mDispatcher;
|
|
|
|
NativePanZoomController(PanZoomTarget target, View view, EventDispatcher dispatcher) {
|
|
mTarget = target;
|
|
mDispatcher = dispatcher;
|
|
if (GoannaThread.checkLaunchState(GoannaThread.LaunchState.GoannaRunning)) {
|
|
init();
|
|
} else {
|
|
mDispatcher.registerGoannaThreadListener(this, "Goanna:Ready");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void handleMessage(String event, JSONObject message) {
|
|
if ("Goanna:Ready".equals(event)) {
|
|
mDispatcher.unregisterGoannaThreadListener(this, "Goanna:Ready");
|
|
init();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
GoannaEvent wrapped = GoannaEvent.createMotionEvent(event, true);
|
|
return handleTouchEvent(wrapped);
|
|
}
|
|
|
|
@Override
|
|
public boolean onMotionEvent(MotionEvent event) {
|
|
// FIXME implement this
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean onKeyEvent(KeyEvent event) {
|
|
// FIXME implement this
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public PointF getVelocityVector() {
|
|
// FIXME implement this
|
|
return new PointF(0, 0);
|
|
}
|
|
|
|
@Override
|
|
public void pageRectUpdated() {
|
|
// no-op in APZC, I think
|
|
}
|
|
|
|
@Override
|
|
public void abortPanning() {
|
|
// no-op in APZC, I think
|
|
}
|
|
|
|
@Override
|
|
public void notifyDefaultActionPrevented(boolean prevented) {
|
|
// This should never get called; there is a different
|
|
// codepath that notifies the APZ code of this.
|
|
throw new IllegalStateException("APZCCallbackHandler::NotifyDefaultPrevented should be getting called, not this!");
|
|
}
|
|
|
|
@Override
|
|
public native void abortAnimation();
|
|
|
|
private native void init();
|
|
private native boolean handleTouchEvent(GoannaEvent event);
|
|
private native void handleMotionEvent(GoannaEvent event);
|
|
|
|
@Override
|
|
public native void destroy();
|
|
@Override
|
|
public native boolean getRedrawHint();
|
|
@Override
|
|
public native void setOverScrollMode(int overscrollMode);
|
|
@Override
|
|
public native int getOverScrollMode();
|
|
|
|
@WrapElementForJNI(allowMultithread = true, stubName = "RequestContentRepaintWrapper")
|
|
private void requestContentRepaint(float x, float y, float width, float height, float resolution) {
|
|
mTarget.forceRedraw(new DisplayPortMetrics(x, y, x + width, y + height, resolution));
|
|
}
|
|
|
|
@Override
|
|
public void setOverscrollHandler(final Overscroll listener) {
|
|
}
|
|
}
|