/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.scxml.samples.android; import java.util.Timer; import java.util.TimerTask; import org.apache.commons.scxml.env.StopWatch; import org.apache.commons.scxml.samples.android.R; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class StopWatchActivity extends Activity { private static final int UPDATE_TIME = 1; private static final int UPDATE_STATE = 2; private StopWatch mStopWatch; private Button mStartButton; private Button mSplitButton; private TextView mState = null; private TextView mTime = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.stopwatch_display); mStartButton = (Button) findViewById(R.id.startstop); mSplitButton = (Button) findViewById(R.id.split); mState = (TextView) findViewById(R.id.status); mTime = (TextView) findViewById(R.id.time); mStopWatch = new StopWatch(); mStartButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Button startButton = (Button) v; Button splitButton = (Button) findViewById(R.id.split); String action = startButton.getText().toString(); if (action == getString(R.string.start)) { mStopWatch.fireEvent(StopWatch.EVENT_START); startButton.setText(R.string.stop); splitButton.setEnabled(true); } else if (action == getString(R.string.stop)) { mStopWatch.fireEvent(StopWatch.EVENT_STOP); startButton.setText(R.string.reset); splitButton.setEnabled(false); } else if (action == getString(R.string.reset)){ mStopWatch.fireEvent(StopWatch.EVENT_RESET); startButton.setText(R.string.start); splitButton.setText(R.string.split); } } }); mSplitButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Button splitButton = (Button) v; String action = splitButton.getText().toString(); if (action == getString(R.string.split)) { mStopWatch.fireEvent(StopWatch.EVENT_SPLIT); splitButton.setText(R.string.unsplit); } else if(action == getString(R.string.unsplit)){ mStopWatch.fireEvent(StopWatch.EVENT_UNSPLIT); splitButton.setText(R.string.split); } } }); Timer displayTimer = new Timer(); displayTimer.scheduleAtFixedRate(new TimerTask() { public void run() { mHandler.sendMessage(mHandler.obtainMessage(UPDATE_STATE, mStopWatch.getCurrentState())); mHandler.sendMessage(mHandler.obtainMessage(UPDATE_TIME, mStopWatch.getDisplay())); } }, 100, 100); } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_STATE: mState.setText((String)msg.obj); break; case UPDATE_TIME: mTime.setText((String)msg.obj); break; default: super.handleMessage(msg); } } }; }