1 package net.sf.openrocket.android.rocket;
\r
6 import net.sf.openrocket.R;
\r
7 import net.sf.openrocket.android.Application;
\r
8 import net.sf.openrocket.android.PreferencesActivity;
\r
9 import net.sf.openrocket.android.motor.MotorHierarchicalBrowser;
\r
10 import net.sf.openrocket.android.simulation.SimulationViewer;
\r
11 import net.sf.openrocket.document.OpenRocketDocument;
\r
12 import net.sf.openrocket.document.Simulation;
\r
13 import net.sf.openrocket.rocketcomponent.Rocket;
\r
14 import net.sf.openrocket.rocketcomponent.RocketComponent;
\r
15 import net.sf.openrocket.rocketcomponent.RocketUtils;
\r
16 import net.sf.openrocket.unit.Unit;
\r
17 import net.sf.openrocket.unit.UnitGroup;
\r
18 import net.sf.openrocket.util.Coordinate;
\r
19 import android.app.Activity;
\r
20 import android.app.ProgressDialog;
\r
21 import android.content.Intent;
\r
22 import android.content.SharedPreferences;
\r
23 import android.net.Uri;
\r
24 import android.os.Bundle;
\r
25 import android.preference.PreferenceManager;
\r
26 import android.util.Log;
\r
27 import android.view.LayoutInflater;
\r
28 import android.view.Menu;
\r
29 import android.view.MenuInflater;
\r
30 import android.view.MenuItem;
\r
31 import android.view.View;
\r
32 import android.view.ViewGroup;
\r
33 import android.widget.AdapterView;
\r
34 import android.widget.AdapterView.OnItemClickListener;
\r
35 import android.widget.ArrayAdapter;
\r
36 import android.widget.ListView;
\r
37 import android.widget.TabHost;
\r
38 import android.widget.TextView;
\r
40 public class OpenRocketViewer extends Activity
\r
41 implements SharedPreferences.OnSharedPreferenceChangeListener
\r
44 private static final String TAG = "OpenRocketViewer";
\r
46 private ProgressDialog progress;
\r
48 private ListView componentList;
\r
49 private ListView simulationList;
\r
51 private Application app;
\r
53 private final static int PICK_ORK_FILE_RESULT = 1;
\r
56 * @see android.app.Activity#onCreate(android.os.Bundle)
\r
59 protected void onCreate(Bundle savedInstanceState) {
\r
60 super.onCreate(savedInstanceState);
\r
62 Log.d(TAG,"In onCreate");
\r
64 app = (Application) this.getApplication();
\r
66 setContentView(R.layout.openrocketviewer);
\r
68 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
\r
69 prefs.registerOnSharedPreferenceChangeListener(this);
\r
71 TabHost tabs=(TabHost)findViewById(R.id.openrocketviewerTabHost);
\r
75 TabHost.TabSpec spec=tabs.newTabSpec("tag1");
\r
77 spec.setContent(R.id.openrocketviewerOverview);
\r
78 spec.setIndicator("Overview");
\r
81 spec=tabs.newTabSpec("tag2");
\r
82 spec.setContent(R.id.openrocketviewerComponentList);
\r
83 spec.setIndicator("Components");
\r
86 spec=tabs.newTabSpec("tag3");
\r
87 spec.setContent(R.id.openrocketviewerSimulationList);
\r
88 spec.setIndicator("Simulations");
\r
91 componentList = (ListView) findViewById(R.id.openrocketviewerComponentList);
\r
92 simulationList = (ListView) findViewById(R.id.openrocketviewerSimulationList);
\r
94 Intent i = getIntent();
\r
95 Uri file = i.getData();
\r
97 if ( file == null ) {
\r
98 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
\r
99 intent.setType("file/*");
\r
100 startActivityForResult(intent,PICK_ORK_FILE_RESULT);
\r
108 protected void onDestroy() {
\r
109 if ( progress != null ) {
\r
110 if ( progress.isShowing() ) {
\r
111 progress.dismiss();
\r
119 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
\r
120 // TODO Auto-generated method stub
\r
121 switch(requestCode){
\r
122 case PICK_ORK_FILE_RESULT:
\r
123 if(resultCode==RESULT_OK){
\r
124 Uri file = data.getData();
\r
131 private void loadOrkFile( Uri file ) {
\r
132 Log.d(TAG,"Use ork file: " + file);
\r
133 String path = file.getPath();
\r
134 File orkFile = new File(path);
\r
135 progress = ProgressDialog.show(this, "Loading file", "");
\r
137 final OpenRocketLoaderTask task = new OpenRocketLoaderTask() {
\r
140 * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
\r
143 protected void onPostExecute(OpenRocketDocument result) {
\r
144 super.onPostExecute(result);
\r
145 app.setRocketDocument( result );
\r
151 task.execute(orkFile);
\r
156 * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)
\r
159 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
\r
160 // just in case the user changed the units, we redraw.
\r
161 PreferencesActivity.initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));
\r
165 private void updateContents() {
\r
167 OpenRocketDocument rocketDocument = app.getRocketDocument();
\r
168 Rocket rocket = rocketDocument.getRocket();
\r
170 setTitle(rocket.getName());
\r
172 Unit LengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();
\r
173 Unit MassUnit = UnitGroup.UNITS_MASS.getDefaultUnit();
\r
175 Coordinate cg = RocketUtils.getCG(rocket);
\r
176 double length = RocketUtils.getLength(rocket);
\r
177 ((TextView) findViewById(R.id.openrocketviewerRocketName)).setText( rocket.getName());
\r
178 ((TextView)findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());
\r
179 ((TextView)findViewById(R.id.openrocketviewerCG)).setText(LengthUnit.toStringUnit(cg.x) );
\r
180 ((TextView)findViewById(R.id.openrocketviewerLength)).setText(LengthUnit.toStringUnit(length));
\r
181 ((TextView)findViewById(R.id.openrocketviewerMass)).setText(MassUnit.toStringUnit(cg.weight));
\r
182 ((TextView)findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));
\r
183 ((TextView)findViewById(R.id.openrocketviewerComment)).setText(rocket.getComment());
\r
185 ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this,android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {
\r
188 public View getView(int position, View convertView, ViewGroup parent) {
\r
189 View v = convertView;
\r
191 LayoutInflater li = getLayoutInflater();
\r
192 v = li.inflate(android.R.layout.simple_list_item_2,null);
\r
194 Simulation sim = this.getItem(position);
\r
195 ((TextView)v.findViewById(android.R.id.text1)).setText( sim.getName() );
\r
196 ((TextView)v.findViewById(android.R.id.text2)).setText( "motors: " + sim.getConfiguration().getMotorConfigurationDescription() + " apogee: " + sim.getSimulatedData().getMaxAltitude() + "m time: " + sim.getSimulatedData().getFlightTime() + "s");
\r
201 simulationList.setOnItemClickListener( new OnItemClickListener() {
\r
203 public void onItemClick(AdapterView l, View v, int position, long id) {
\r
204 Intent i = new Intent(OpenRocketViewer.this, SimulationViewer.class);
\r
205 Log.d(TAG,"onItemClick simulation number " + id );
\r
206 i.putExtra("Simulation",(int)id);
\r
207 startActivityForResult(i, 1/*magic*/);
\r
211 simulationList.setAdapter(sims);
\r
213 ArrayAdapter<RocketComponent> comps = new ArrayAdapter<RocketComponent>(this, android.R.layout.simple_list_item_1,rocket.getChildren()) {
\r
216 * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup)
\r
219 public View getView(int position, View convertView, ViewGroup parent) {
\r
220 View v = convertView;
\r
222 LayoutInflater li = getLayoutInflater();
\r
223 v = li.inflate(android.R.layout.simple_list_item_1,null);
\r
225 RocketComponent comp = this.getItem(position);
\r
226 ((TextView)v.findViewById(android.R.id.text1)).setText( comp.getName() );
\r
232 componentList.setAdapter(comps);
\r
234 if ( progress.isShowing() ) {
\r
235 progress.dismiss();
\r
241 public boolean onCreateOptionsMenu(Menu menu) {
\r
242 MenuInflater inflater = getMenuInflater();
\r
243 inflater.inflate(R.menu.rocket_viewer_option_menu, menu);
\r
248 public boolean onMenuItemSelected(int featureId, MenuItem item) {
\r
249 Log.d(TAG,"onMenuItemSelected" + item.getItemId());
\r
250 switch(item.getItemId()) {
\r
251 case R.id.motor_list_menu_option:
\r
252 startMotorBrowser();
\r
254 case R.id.preference_menu_option:
\r
255 Intent intent = new Intent().setClass(this, PreferencesActivity.class);
\r
256 this.startActivity(intent);
\r
259 return super.onMenuItemSelected(featureId, item);
\r
262 public void startMotorBrowser() {
\r
263 Log.d(TAG,"motorBrowserButton clicked");
\r
264 Intent i = new Intent(OpenRocketViewer.this, MotorHierarchicalBrowser.class);
\r