Android Open Source - anode Anode Activity






From Project

Back to project page anode.

License

The source code is released under:

Apache License

If you think the Android project anode listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011-2012 Paddy Byers/*from   w  w  w .jav  a 2  s .co  m*/
 *
 *   Licensed 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.meshpoint.anode;

import org.meshpoint.anode.Runtime;
import org.meshpoint.anode.Runtime.IllegalStateException;
import org.meshpoint.anode.Runtime.InitialisationException;
import org.meshpoint.anode.Runtime.NodeException;
import org.meshpoint.anode.Runtime.StateListener;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class AnodeActivity extends Activity implements StateListener {

  private static String TAG = "anode::AnodeActivity";
  private Context ctx;
  private Button startButton;
  private Button stopButton;
  private EditText argsText;
  private TextView stateText;
  private Handler viewHandler = new Handler();
  private long uiThread;
  private String instance;
  private Isolate isolate;

  /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ctx = getApplicationContext();
        initUI();
        uiThread = viewHandler.getLooper().getThread().getId();
    }
    
    private void initUI() {
      startButton = (Button)findViewById(R.id.start_button);
      startButton.setOnClickListener(new StartClickListener());
      stopButton = (Button)findViewById(R.id.stop_button);
      stopButton.setOnClickListener(new StopClickListener());
      argsText = (EditText)findViewById(R.id.args_editText);
      stateText = (TextView)findViewById(R.id.args_stateText);
      argsText.setOnKeyListener(new OnKeyListener() {
          public boolean onKey(View v, int keyCode, KeyEvent event) {
              /* If the event is a key-down event on the "enter" button */
              if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                  (keyCode == KeyEvent.KEYCODE_ENTER)) {
                startAction();
                return true;
              }
              return false;
          }
      });
      __stateChanged(Runtime.STATE_CREATED);
    }
    
    private void initRuntime(String[] opts) {
      try {
        Runtime.initRuntime(ctx, opts);
    } catch (InitialisationException e) {
      Log.v(TAG, "initRuntime: exception: " + e + "; cause: " + e.getCause());
    }
    }
    
    private void startAction() {
    String options = getIntent().getStringExtra(AnodeReceiver.OPTS);
    String instance = getIntent().getStringExtra(AnodeReceiver.INST);
    String[] opts = options == null ? null : options.split("\\s");
    initRuntime(opts);
    String args = argsText.getText().toString();
    try {
      isolate = Runtime.createIsolate();
      isolate.addStateListener(this);
      this.instance = AnodeService.addInstance(instance, isolate);
      isolate.start(args.split("\\s"));
    } catch (IllegalStateException e) {
      Log.v(TAG, "isolate start: exception: " + e + "; cause: " + e.getCause());
    } catch (NodeException e) {
      Log.v(TAG, "isolate start: exception: " + e);
    }
    }
    
    private void stopAction() {
      if(instance == null) {
      Log.v(TAG, "AnodeReceiver.onReceive::stop: no instance currently running for this activity");
      return;
    }
    try {
      isolate.stop();
    } catch (IllegalStateException e) {
      Log.v(TAG, "isolate stop : exception: " + e + "; cause: " + e.getCause());
    } catch (NodeException e) {
      Log.v(TAG, "isolate stop: exception: " + e);
    }
    }
    
    class StartClickListener implements OnClickListener {
    public void onClick(View arg0) {
      startAction();
    }
    }

    class StopClickListener implements OnClickListener {
    public void onClick(View arg0) {
      stopAction();
    }
    }

  @Override
  public void stateChanged(final int state) {
    if(Thread.currentThread().getId() == uiThread) {
      __stateChanged(state);
    } else {
      viewHandler.post(new Runnable() {
        public void run() {
          __stateChanged(state);
        }
      });
    }
  }
  
  private void __stateChanged(final int state) {
    stateText.setText(getStateString(state));
    startButton.setEnabled(state == Runtime.STATE_CREATED);
    stopButton.setEnabled(state == Runtime.STATE_STARTED);
    /* exit the activity if the runtime has exited */
    if(state == Runtime.STATE_STOPPED) {
      finish();
    }
  }
  
  private String getStateString(int state) {
    Resources res = ctx.getResources();
    String result = null;
    switch(state) {
    case Runtime.STATE_CREATED:
      result = res.getString(R.string.created);
      break;
    case Runtime.STATE_STARTED:
      result = res.getString(R.string.started);
      break;
    case Runtime.STATE_STOPPING:
      result = res.getString(R.string.stopping);
      break;
    case Runtime.STATE_STOPPED:
      result = res.getString(R.string.stopped);
      break;
    }
    return result;
  }
}




Java Source Code List

org.meshpoint.anode.AndroidContext.java
org.meshpoint.anode.AnodeActivity.java
org.meshpoint.anode.AnodeReceiver.java
org.meshpoint.anode.AnodeService.java
org.meshpoint.anode.Constants.java
org.meshpoint.anode.Isolate.java
org.meshpoint.anode.RuntimeNative.java
org.meshpoint.anode.Runtime.java
org.meshpoint.anode.bridge.BridgeNative.java
org.meshpoint.anode.bridge.Env.java
org.meshpoint.anode.bridge.Env.java
org.meshpoint.anode.bridge.FinalizeQueue.java
org.meshpoint.anode.bridge.ModuleClassLoader.java
org.meshpoint.anode.bridge.ModuleContext.java
org.meshpoint.anode.bridge.SynchronousOperation.java
org.meshpoint.anode.error.GeneralError.java
org.meshpoint.anode.error.InternalError.java
org.meshpoint.anode.error.ReferenceError.java
org.meshpoint.anode.error.ScriptError.java
org.meshpoint.anode.error.TypeError.java
org.meshpoint.anode.idl.BoundInterface.java
org.meshpoint.anode.idl.Callback.java
org.meshpoint.anode.idl.Dictionary.java
org.meshpoint.anode.idl.Dictionary.java
org.meshpoint.anode.idl.IDLInterface.java
org.meshpoint.anode.idl.IDLInterface.java
org.meshpoint.anode.idl.InterfaceManager.java
org.meshpoint.anode.idl.InterfaceManager.java
org.meshpoint.anode.idl.StubUtil.java
org.meshpoint.anode.idl.Types.java
org.meshpoint.anode.java.Array.java
org.meshpoint.anode.java.Base.java
org.meshpoint.anode.java.Base.java
org.meshpoint.anode.java.ByteArray.java
org.meshpoint.anode.java.DoubleArray.java
org.meshpoint.anode.java.IntegerArray.java
org.meshpoint.anode.java.LongArray.java
org.meshpoint.anode.java.ObjectArray.java
org.meshpoint.anode.js.JSArray.java
org.meshpoint.anode.js.JSByteArray.java
org.meshpoint.anode.js.JSDoubleArray.java
org.meshpoint.anode.js.JSFunction.java
org.meshpoint.anode.js.JSIntegerArray.java
org.meshpoint.anode.js.JSInterface.java
org.meshpoint.anode.js.JSLongArray.java
org.meshpoint.anode.js.JSObjectArray.java
org.meshpoint.anode.js.JSObject.java
org.meshpoint.anode.js.JSValue.java
org.meshpoint.anode.module.IModuleContext.java
org.meshpoint.anode.module.IModuleContext.java
org.meshpoint.anode.module.IModule.java
org.meshpoint.anode.module.IModule.java
org.meshpoint.anode.stub.DictionaryStubGenerator.java
org.meshpoint.anode.stub.PlatformStubGenerator.java
org.meshpoint.anode.stub.StubGenerator.java
org.meshpoint.anode.stub.UserStubGenerator.java
org.meshpoint.anode.stub.util.DirectoryClassLoader.java
org.meshpoint.anode.stub.util.StubGen.java
org.meshpoint.anode.type.ICollection.java
org.meshpoint.anode.type.IFunction.java
org.meshpoint.anode.type.IIndexedCollection.java
org.meshpoint.anode.util.AndroidLog.java
org.meshpoint.anode.util.ArgProcessor.java
org.meshpoint.anode.util.Log.java
org.meshpoint.anode.util.ModuleUtils.java
org.meshpoint.anode.util.PrintStreamLog.java
org.meshpoint.anode.util.TarExtractor.java
org.meshpoint.anode.util.ZipExtractor.java
org.w3c.dom.Array.java
org.w3c.dom.Array.java
org.w3c.dom.ByteArray.java
org.w3c.dom.ByteArray.java
org.w3c.dom.DoubleArray.java
org.w3c.dom.DoubleArray.java
org.w3c.dom.IntegerArray.java
org.w3c.dom.IntegerArray.java
org.w3c.dom.LongArray.java
org.w3c.dom.LongArray.java
org.w3c.dom.ObjectArray.java
org.w3c.dom.ObjectArray.java
org.w3c.dom.PrimitiveArray.java
org.w3c.dom.PrimitiveArray.java