package interdroid.swan.ui;
import interdroid.swan.R;
import interdroid.swan.swansong.Comparator;
import interdroid.swan.swansong.ComparisonExpression;
import interdroid.swan.swansong.Expression;
import interdroid.swan.swansong.ExpressionFactory;
import interdroid.swan.swansong.ExpressionParseException;
import interdroid.swan.swansong.ValueExpression;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class NewExpressionDialog extends Activity {
public static final int LEFT = 1;
public static final int RIGHT = 2;
public static final int COMPARATOR = 3;
boolean leftActive = false;
boolean rightActive = false;
boolean comparatorActive = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setResult(RESULT_CANCELED);
setContentView(R.layout.expression_builder_new_dialog);
findViewById(R.id.left).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(getApplicationContext(),
SelectTypedValueDialog.class), LEFT);
}
});
findViewById(R.id.right).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(getApplicationContext(),
SelectTypedValueDialog.class), RIGHT);
}
});
findViewById(R.id.comparator).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(
getApplicationContext(),
SelectComparatorDialog.class), COMPARATOR);
}
});
findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// check whether we have a left and a right
// value and an operator, create a new
// comparator expression out of it, then add
// it to the list of expressions.
try {
Expression left = ExpressionFactory
.parse(((Button) findViewById(R.id.left)).getText()
.toString());
Expression right = ExpressionFactory
.parse(((Button) findViewById(R.id.right))
.getText().toString());
Comparator comparator = Comparator
.parse(((Button) findViewById(R.id.comparator))
.getText().toString());
// String name = ((EditText) findViewById(R.id.name))
// .getText().toString();
Expression newExpression = new ComparisonExpression(
Expression.LOCATION_INFER, (ValueExpression) left,
comparator, (ValueExpression) right);
Intent result = new Intent();
result.putExtra("Expression", newExpression.toParseString());
// if (name != null && !name.equals("")) {
// result.putExtra("name", name);
// }
setResult(RESULT_OK, result);
finish();
} catch (ExpressionParseException e) {
// TODO: improve this
Toast.makeText(getApplicationContext(), "Failed!",
Toast.LENGTH_LONG).show();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case LEFT:
((Button) findViewById(R.id.left)).setText(data
.getStringExtra("Expression"));
leftActive = true;
break;
case RIGHT:
((Button) findViewById(R.id.right)).setText(data
.getStringExtra("Expression"));
rightActive = true;
break;
case COMPARATOR:
((Button) findViewById(R.id.comparator)).setText(data
.getStringExtra("Comparator"));
comparatorActive = true;
break;
default:
break;
}
findViewById(R.id.ok).setEnabled(
leftActive && rightActive && comparatorActive);
}
}
}