Android Open Source - interdroid-swan Expression Builder Activity






From Project

Back to project page interdroid-swan.

License

The source code is released under:

Copyright (c) 2008-2011 Vrije Universiteit, The Netherlands All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the follo...

If you think the Android project interdroid-swan 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

package interdroid.swan.ui;
//  w  w  w  . ja v  a 2 s  . c  o m
import interdroid.swan.R;
import interdroid.swan.swansong.Expression;
import interdroid.swan.swansong.ExpressionFactory;
import interdroid.swan.swansong.ExpressionParseException;
import interdroid.swan.swansong.LogicExpression;
import interdroid.swan.swansong.TriStateExpression;
import interdroid.swan.swansong.UnaryLogicOperator;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class ExpressionBuilderActivity extends Activity {

  private final List<Expression> expressions = new ArrayList<Expression>();

  private final BaseAdapter expressionlistAdapter = new BaseAdapter() {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      if (convertView == null) {
        convertView = new TextView(ExpressionBuilderActivity.this);
        ((TextView) convertView).setTextSize(14.0f);
      }
      ((TextView) convertView).setText(expressions.get(position)
          .toString());
      if (position == currentPosition) {
        convertView.setBackgroundColor(Color.RED);
      } else {
        convertView.setBackgroundColor(Color.TRANSPARENT);
      }
      return convertView;
    }

    @Override
    public long getItemId(int position) {
      return 0;
    }

    @Override
    public Object getItem(int position) {
      return expressions.get(position);
    }

    @Override
    public int getCount() {
      return expressions.size();
    }
  };

  private final static String TAG = "Expression Builder";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setResult(RESULT_CANCELED);
    setContentView(R.layout.expression_builder);

    findViewById(R.id.new_expression).setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            startActivityForResult(new Intent(
                getApplicationContext(),
                NewExpressionDialog.class), 0);
          }
        });

    findViewById(R.id.merge_expression).setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            if (expressions.size() >= 2) {
              // we need at least two expression to merge
              ArrayList<String> expressionList = new ArrayList<String>();
              for (Expression expression : expressions) {
                expressionList.add(expression.toParseString());
              }
              Intent request = new Intent(
                  getApplicationContext(),
                  MergeExpressionDialog.class);
              request.putStringArrayListExtra("Expressions",
                  expressionList);

              startActivityForResult(request, 0);
            } else {
              Toast.makeText(
                  getApplicationContext(),
                  "At least 2 expressions needed for merging. Create them with the new button",
                  Toast.LENGTH_LONG).show();
            }
          }
        });

    findViewById(R.id.negate_expression).setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // showDialog(DIALOG_NEGATE_EXPRESSION);
          }
        });

    ((ListView) findViewById(R.id.expression_list))
        .setAdapter(expressionlistAdapter);
    ((ListView) findViewById(R.id.expression_list))
        .setOnItemClickListener(new OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
            currentPosition = position;
            findViewById(R.id.expression_finished).setEnabled(true);
            parent.invalidate();
          }
        });

    registerForContextMenu(findViewById(R.id.expression_list));

    findViewById(R.id.expression_finished).setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            if (currentPosition >= 0
                && currentPosition < expressions.size()) {
              String expression = expressions
                  .get(currentPosition).toParseString();
              setResult(RESULT_OK, new Intent().putExtra(
                  "Expression", expression));
              finish();
            } else {
              Toast.makeText(getApplicationContext(),
                  "Please Select an Expression",
                  Toast.LENGTH_SHORT).show();
            }

          }
        });

  }

  private int currentPosition = -1;

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
      if (data.hasExtra("Expression")) {
        try {
          expressions.add(ExpressionFactory.parse(data
              .getStringExtra("Expression")));
          expressionlistAdapter.notifyDataSetChanged();
        } catch (ExpressionParseException e) {
          // should not happen, already checked for in new expression
          // dialog

          Log.e(TAG, "should not happen: " + e);
        }
      } else if (data.hasExtra("Expressions")) {
        expressions.clear();
        for (String expression : data
            .getStringArrayListExtra("Expressions")) {
          try {
            expressions.add(ExpressionFactory.parse(expression));
          } catch (ExpressionParseException e) {
            // should not happen
            e.printStackTrace();
          }
        }
        expressionlistAdapter.notifyDataSetChanged();
      }
    }
    super.onActivityResult(requestCode, resultCode, data);
  }

  @Override
  public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo) {
    menu.add("Negate");
    menu.add("Delete");

    super.onCreateContextMenu(menu, v, menuInfo);
  }

  @Override
  public boolean onContextItemSelected(MenuItem item) {
    int position = ((AdapterContextMenuInfo) item.getMenuInfo()).position;
    if (item.getTitle().toString().equals("Negate")) {
      expressions.set(position, new LogicExpression(
          Expression.LOCATION_INFER, UnaryLogicOperator.NOT,
          (TriStateExpression) expressions.get(position)));
      expressionlistAdapter.notifyDataSetChanged();
    } else if (item.getTitle().toString().equals("Delete")) {
      expressions.remove(position);
      expressionlistAdapter.notifyDataSetChanged();
    }
    return super.onContextItemSelected(item);
  }
  /*** OLD STUFF ***/
}




Java Source Code List

interdroid.swan.ExpressionListener.java
interdroid.swan.ExpressionManager.java
interdroid.swan.SensorConfigurationException.java
interdroid.swan.SensorInfo.java
interdroid.swan.SwanException.java
interdroid.swan.TriStateExpressionListener.java
interdroid.swan.ValueExpressionListener.java
interdroid.swan.crossdevice.Converter.java
interdroid.swan.crossdevice.CrossDeviceReceiver.java
interdroid.swan.crossdevice.Pusher.java
interdroid.swan.crossdevice.Registry.java
interdroid.swan.crossdevice.SwanGCMConstants.java
interdroid.swan.crossdevice.SwanLakeActivity.java
interdroid.swan.engine.EvaluationEngineReceiver.java
interdroid.swan.engine.EvaluationEngineService.java
interdroid.swan.engine.EvaluationManager.java
interdroid.swan.engine.ExpressionViewerActivity.java
interdroid.swan.engine.QueuedExpression.java
interdroid.swan.engine.SensorSetupFailedException.java
interdroid.swan.engine.SensorViewerActivity.java
interdroid.swan.engine.TextProgressBar.java
interdroid.swan.sensors.AbstractConfigurationActivity.java
interdroid.swan.sensors.AbstractCuckooSensor.java
interdroid.swan.sensors.AbstractMemorySensor.java
interdroid.swan.sensors.AbstractSensorBase.java
interdroid.swan.sensors.AbstractVdbSensor.java
interdroid.swan.sensors.MonitorThread.java
interdroid.swan.sensors.SensorInterface.java
interdroid.swan.sensors.TimeSensor.java
interdroid.swan.sensors.impl.BatterySensor.java
interdroid.swan.sensors.impl.BluetoothSensor.java
interdroid.swan.sensors.impl.CalendarSensor.java
interdroid.swan.sensors.impl.CallSensor.java
interdroid.swan.sensors.impl.GyroscopeSensor.java
interdroid.swan.sensors.impl.IntentSensor.java
interdroid.swan.sensors.impl.LightSensor.java
interdroid.swan.sensors.impl.LocationSensor.java
interdroid.swan.sensors.impl.LogCatSensor.java
interdroid.swan.sensors.impl.MagnetometerSensor.java
interdroid.swan.sensors.impl.MovementSensor.java
interdroid.swan.sensors.impl.PolarHeartRate.java
interdroid.swan.sensors.impl.PressureSensor.java
interdroid.swan.sensors.impl.ProximitySensor.java
interdroid.swan.sensors.impl.ScreenSensor.java
interdroid.swan.sensors.impl.SignalStrengthSensor.java
interdroid.swan.sensors.impl.SmartLocationSensor.java
interdroid.swan.sensors.impl.SoundSensor.java
interdroid.swan.sensors.impl.TemperatureSensor.java
interdroid.swan.sensors.impl.TwitterSensor.java
interdroid.swan.sensors.impl.WifiSensor.java
interdroid.swan.sensors.impl.package-info.java
interdroid.swan.swansong.BinaryLogicOperator.java
interdroid.swan.swansong.ComparatorResult.java
interdroid.swan.swansong.Comparator.java
interdroid.swan.swansong.ComparisonExpression.java
interdroid.swan.swansong.ConstantValueExpression.java
interdroid.swan.swansong.ExpressionFactory.java
interdroid.swan.swansong.ExpressionParseException.java
interdroid.swan.swansong.Expression.java
interdroid.swan.swansong.HistoryReductionMode.java
interdroid.swan.swansong.LogicExpression.java
interdroid.swan.swansong.LogicOperator.java
interdroid.swan.swansong.MathOperator.java
interdroid.swan.swansong.MathValueExpression.java
interdroid.swan.swansong.ParseableEnum.java
interdroid.swan.swansong.Parseable.java
interdroid.swan.swansong.Result.java
interdroid.swan.swansong.SensorValueExpression.java
interdroid.swan.swansong.TimestampedValue.java
interdroid.swan.swansong.TriStateExpression.java
interdroid.swan.swansong.TriState.java
interdroid.swan.swansong.UnaryLogicOperator.java
interdroid.swan.swansong.ValueExpression.java
interdroid.swan.ui.EnterConstantDialog.java
interdroid.swan.ui.ExpressionBuilderActivity.java
interdroid.swan.ui.LaunchService.java
interdroid.swan.ui.MergeExpressionDialog.java
interdroid.swan.ui.NewExpressionDialog.java
interdroid.swan.ui.NewMathExpressionDialog.java
interdroid.swan.ui.SelectComparatorDialog.java
interdroid.swan.ui.SelectExpressionDialog.java
interdroid.swan.ui.SelectOperatorDialog.java
interdroid.swan.ui.SelectSensorDialog.java
interdroid.swan.ui.SelectTypedValueDialog.java
interdroid.swan.ui.package-info.java
interdroid.swan.util.SeekBarPreference.java
interdroid.swan.util.TimePreference.java