package org.kvj.lima1.android.ui;
import org.kvj.bravo7.SuperActivity;
import org.kvj.lima1.android.ui.controller.Lima1App;
import org.kvj.lima1.android.ui.controller.Lima1Controller;
import org.kvj.lima1.android.ui.controller.Lima1Service;
import org.kvj.lima1.android.ui.manager.EditorInfo;
import org.kvj.lima1.android.ui.widget.PageFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class PageActivity extends
SuperActivity<Lima1App, Lima1Controller, Lima1Service> {
public PageActivity() {
super(Lima1Service.class);
}
private static final String TAG = "UI";
PageFragment page0 = null;
PageFragment current = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page_viewer);
page0 = (PageFragment) getFragmentManager().findFragmentById(
R.id.page_0);
current = page0;
try {
// UIManager ui = new UIManager(layout, _loadTemplate("/todo.json",
// "1"), _loadTemplate("/template.json", "2"));
// ui.openLink("dt:20111115", null);
// Renderer renderer = new Renderer(null, ui, layout, object, new
// JSONObject(), new JSONObject());
// renderer.render();
} catch (Exception e) {
Log.e(TAG, "Error loading test template", e);
}
}
@Override
public void onController(Lima1Controller controller) {
if (null == this.controller) {
Log.i(TAG,
"Show page size: " + page0.getView().getHeight() + ", "
+ page0.getRoot().getHeight() + ", "
+ findViewById(R.id.page_viewer_root).getHeight());
page0.setController(controller,
getIntent().getLongExtra("sheet_id", 0));
}
super.onController(controller);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.page_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_save_edit:
saveCurrentTextEdit();
break;
case R.id.menu_toggle_archived:
current.toggleArchived();
break;
case R.id.menu_redraw:
redraw();
break;
}
return true;
}
private void saveCurrentTextEdit() {
if (null == current) {
notifyUser("No page selected");
return;
}
EditorInfo info = current.getEditorInfo();
if (null == info) {
notifyUser("No editor is active");
return;
}
Log.i(TAG, "Edit: " + info.type + "::" + info.field + ", "
+ info.newEntry + ", " + info.editor.getText());
try {
info.object.put(info.field, info.editor.getText().toString());
String message = controller.save(info.type, info.object);
if (null != message) {
notifyUser(message);
} else {
redraw();
}
} catch (Exception e) {
e.printStackTrace();
notifyUser(e.getMessage());
}
}
private void redraw() {
if (null != current) {
current.redraw();
}
}
}