[Picross-commit] SF.net SVN: picross:[126] branches/engine_split
Status: Pre-Alpha
Brought to you by:
yvan_norsa
From: <yva...@us...> - 2013-01-16 13:19:32
|
Revision: 126 http://sourceforge.net/p/picross/code/126 Author: yvan_norsa Date: 2013-01-16 13:19:28 +0000 (Wed, 16 Jan 2013) Log Message: ----------- input handling Modified Paths: -------------- branches/engine_split/android/src/picross/specific/grid/ui/GridController.java branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java branches/engine_split/common/src/picross/common/grid/ui/AbstractGridMediator.java Modified: branches/engine_split/android/src/picross/specific/grid/ui/GridController.java =================================================================== --- branches/engine_split/android/src/picross/specific/grid/ui/GridController.java 2013-01-16 11:56:03 UTC (rev 125) +++ branches/engine_split/android/src/picross/specific/grid/ui/GridController.java 2013-01-16 13:19:28 UTC (rev 126) @@ -47,15 +47,23 @@ import android.view.View; import android.view.MotionEvent; +import android.view.GestureDetector; +import android.content.Context; + +import picross.engine.PicrossLogger; +import picross.engine.PicrossLogHelper; + /** * Grid controller. * * @author Y. Norsa */ public final class GridController extends Controller -implements View.OnTouchListener { + implements View.OnTouchListener { + private static PicrossLogger log = PicrossLogHelper.getLogger(GridController.class); + /*** Fields ***/ /** The view to which the controller is attached. */ @@ -64,6 +72,13 @@ /** Indicates wether the erase mode is "on" or not. */ private boolean eraseMode; + private GestureDetector gestureDetector; + + public GridController(Context context) { + this.gestureDetector = new GestureDetector(context, new GridGestureListener()); + } + + /*** Method overloaded from the class Controller ***/ /** {@inheritDoc} */ @@ -106,6 +121,8 @@ @Override public boolean onTouch(View view, MotionEvent event) { + return this.gestureDetector.onTouchEvent(event); + /* if (event.getAction() != MotionEvent.ACTION_DOWN) { return false; } @@ -116,6 +133,7 @@ // FIXME return true; + */ } @@ -137,17 +155,7 @@ * @param e mouse event to handle */ - private void checkAndFill(MotionEvent e) { - // FIXME - /* - int modifiers = e.getModifiers(); - - if (modifiers != MouseEvent.BUTTON1_MASK - && modifiers != MouseEvent.BUTTON3_MASK) { - - return; - } - */ + private void checkAndFill(MotionEvent e, boolean doubleTap) { Point point = new Point(e.getX(), e.getY()); if (this.view.isInGrid(point)) { @@ -159,9 +167,11 @@ if (this.eraseMode) { type = GridAction.EMPTY; } else { - // FIXME - //type = GridController.modifiersToType(modifiers); - type = GridAction.CHECK; + if (!doubleTap) { + type = GridAction.CHECK; + } else { + type = GridAction.CROSS; + } } this.fireEventPerformed(GridCommands.FILL_CMD, @@ -169,27 +179,6 @@ } } - /** - * Converts a mouse click to an action. - * - * @param modifiers mouse event modifiers - * @return corresponding action, or -1 - */ - // FIXME - /* - private static GridAction modifiersToType(int modifiers) { - switch (modifiers) { - case MouseEvent.BUTTON1_MASK: - return GridAction.CHECK; - - case MouseEvent.BUTTON3_MASK: - return GridAction.CROSS; - - default: - return GridAction.UNKNOWN; - } - } - */ /*** Accessor ***/ /** @@ -200,5 +189,46 @@ public void setView(GridUI view) { this.view = view; } + + private class GridGestureListener extends GestureDetector.SimpleOnGestureListener { + @Override + public boolean onSingleTapConfirmed(MotionEvent event) { + GridController.log.debug("onSingleTapConfirmed()"); + + GridController.this.checkAndFill(event, false); + GridController.this.eraseMode = false; + GridController.this.fireEventPerformed(GridCommands.END_ACTION_CMD); + + return true; + } + + @Override + public boolean onDoubleTap(MotionEvent event) { + GridController.log.debug("onDoubleTap()"); + + GridController.this.checkAndFill(event, true); + GridController.this.eraseMode = false; + GridController.this.fireEventPerformed(GridCommands.END_ACTION_CMD); + + return true; + } + /* + @Override + public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { + GridController.log.debug("onScroll()"); + GridController.this.checkAndFill(e2, false); + return true; + } + + @Override + public boolean onDoubleTapEvent(MotionEvent e) { + GridController.log.debug("onDoubleTapEvent()"); + GridController.this.checkAndFill(e, true); + GridController.this.eraseMode = false; + GridController.this.fireEventPerformed(GridCommands.END_ACTION_CMD); + return true; + } + */ + } } Modified: branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java 2013-01-16 11:56:03 UTC (rev 125) +++ branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java 2013-01-16 13:19:28 UTC (rev 126) @@ -57,6 +57,11 @@ this.doInit(width, height); } +@Override + protected GridController initController() { + return new GridController(this.context); + } + @Override protected void initGrid(final int width, final int height, final UIBox[][] boxes, final int[][] colData, final int[][] rowData, final CompletedHints hints, final GridController controller) { //new Thread() { Modified: branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java 2013-01-16 11:56:03 UTC (rev 125) +++ branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java 2013-01-16 13:19:28 UTC (rev 126) @@ -105,7 +105,6 @@ @Override protected void gameLoaded(final GameMediator game) { - this.view.displayMessage("TODO gameLoaded()"); game.addSimpleListener(this); //new Thread() { Modified: branches/engine_split/common/src/picross/common/grid/ui/AbstractGridMediator.java =================================================================== --- branches/engine_split/common/src/picross/common/grid/ui/AbstractGridMediator.java 2013-01-16 11:56:03 UTC (rev 125) +++ branches/engine_split/common/src/picross/common/grid/ui/AbstractGridMediator.java 2013-01-16 13:19:28 UTC (rev 126) @@ -97,8 +97,12 @@ } } + protected GridController initController() { + return new GridController(); + } + protected void doInit(final int width, final int height) throws PicrossException { - final GridController controller = new GridController(); + final GridController controller = this.initController(); controller.addSimpleListener(this); this.addSimpleListener(controller); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |