package com.example.puree;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.cookpad.puree.Puree;
import com.example.puree.logs.ClickLog;
import com.example.puree.logs.PvLog;
import com.example.puree.logs.plugins.OutBufferedDisplay;
import com.example.puree.logs.plugins.OutDisplay;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView logDisplayTextView;
private Button button1;
private Button button2;
private final OutDisplay.Callback outDisplayCallback = new OutDisplay.Callback() {
@Override
public void onEmit(JsonObject jsonLog) {
preprendOutput(jsonLog.toString());
}
};
private final OutBufferedDisplay.Callback outBufferedDisplayCallback = new OutBufferedDisplay.Callback() {
@Override
public void onEmit(JsonArray jsonLogs) {
preprendOutput(jsonLogs.toString());
}
};
private void preprendOutput(String text) {
logDisplayTextView.setText(new StringBuilder()
.append(text)
.append(System.getProperty("line.separator"))
.append(logDisplayTextView.getText())
.toString());
}
private void clear() {
Puree.discardBufferedLogs();
logDisplayTextView.setText("");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
OutDisplay.register(outDisplayCallback);
OutBufferedDisplay.register(outBufferedDisplayCallback);
Puree.send(new PvLog(this));
setupViews();
}
@Override
protected void onDestroy() {
OutDisplay.unregister();
OutBufferedDisplay.unregister();
super.onDestroy();
}
private void findViews() {
logDisplayTextView = (TextView) findViewById(R.id.log_display);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
}
private void setupViews() {
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Puree.send(new ClickLog("MainActivity", "BUTTON 1"));
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Puree.send(new ClickLog("MainActivity", "BUTTON 2"));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (item.getItemId()) {
case R.id.action_benchmark:
startActivity(new Intent(this, BenchmarkActivity.class));
return true;
case R.id.action_dump:
Puree.dump();
return true;
case R.id.action_clear:
clear();
return true;
case R.id.action_settings:
return true;
default:
// do nothing
}
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}