package net.sf.openrocket.android.simulation;
import net.sf.openrocket.R;
import net.sf.openrocket.android.CurrentRocketHolder;
import net.sf.openrocket.document.OpenRocketDocument;
import org.achartengine.GraphicalView;
import org.achartengine.chart.XYChart;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
/**
* An activity that encapsulates a graphical view of the chart.
*/
public class SimulationViewFragment extends SherlockFragment implements SimulationPlotConfigDialog.OnConfirmListener {
SimulationChart chart;
ViewGroup container;
/** The encapsulated graphical view. */
private GraphicalView mView;
/** The chart to be drawn. */
private XYChart mChart;
public static SimulationViewFragment newInstance( SimulationChart chart ) {
SimulationViewFragment frag = new SimulationViewFragment();
frag.chart = chart;
return frag;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setRetainInstance(true);
setHasOptionsMenu(true);
OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();
this.container = container;
if (savedInstanceState != null ) {
chart = (SimulationChart) savedInstanceState.getSerializable("chart");
}
mChart = chart.buildChart(rocketDocument);
mView = new GraphicalView(container.getContext(), mChart);
return mView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.simulation_option_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.simulation_config_plot_menu_option:
SimulationPlotConfigDialog seriesDialog = SimulationPlotConfigDialog.newInstance(chart);
seriesDialog.show(getFragmentManager(), "AbraCadaver");
seriesDialog.setOnConfirmListener(this);
return true;
case R.id.simulation_view_events_menu_option:
SimulationEventsDialog eventsDialog = SimulationEventsDialog.newInstance(chart);
eventsDialog.show(getFragmentManager(), "AbraCadaver");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onConfirm() {
OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();
mChart = chart.buildChart(rocketDocument);
ViewGroup parent = (ViewGroup) mView.getParent();
parent.removeView(mView);
mView = new GraphicalView(container.getContext(), mChart);
parent.addView(mView);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("chart", chart);
}
}