| /* |
| * 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); |
| } |
| } |
| }; |
| |
| } |