Change OpenRocketViewer to tab layout with three tabs: overview, components, and...
[debian/openrocket] / src / net / sf / openrocket / android / rocket / OpenRocketViewer.java
index aa00834557c5cdd81310fe4f93f7d3f1cb70d322..1037d1b8940f6ed6b7385e4d02ac6aa5e928481a 100644 (file)
@@ -10,11 +10,19 @@ import net.sf.openrocket.android.motor.MotorHierarchicalBrowser;
 import net.sf.openrocket.android.simulation.SimulationViewer;\r
 import net.sf.openrocket.document.OpenRocketDocument;\r
 import net.sf.openrocket.document.Simulation;\r
+import net.sf.openrocket.rocketcomponent.Rocket;\r
+import net.sf.openrocket.rocketcomponent.RocketComponent;\r
+import net.sf.openrocket.rocketcomponent.RocketUtils;\r
+import net.sf.openrocket.unit.Unit;\r
+import net.sf.openrocket.unit.UnitGroup;\r
+import net.sf.openrocket.util.Coordinate;\r
 import android.app.Activity;\r
 import android.app.ProgressDialog;\r
 import android.content.Intent;\r
+import android.content.SharedPreferences;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
 import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.view.Menu;\r
@@ -26,15 +34,18 @@ import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;\r
 import android.widget.ArrayAdapter;\r
 import android.widget.ListView;\r
+import android.widget.TabHost;\r
 import android.widget.TextView;\r
 \r
-public class OpenRocketViewer extends Activity {\r
+public class OpenRocketViewer extends Activity\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
 \r
        private static final String TAG = "OpenRocketViewer";\r
 \r
        private ProgressDialog progress;\r
 \r
-       private TextView header;\r
+       private ListView componentList;\r
        private ListView simulationList;\r
 \r
        private Application app;\r
@@ -54,8 +65,31 @@ public class OpenRocketViewer extends Activity {
 \r
                setContentView(R.layout.openrocketviewer);\r
 \r
-               header = (TextView) findViewById(R.id.heading);\r
-               simulationList = (ListView) findViewById(R.id.rocketSimulations);\r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
+               prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+               TabHost tabs=(TabHost)findViewById(R.id.openrocketviewerTabHost);\r
+\r
+               tabs.setup();\r
+\r
+               TabHost.TabSpec spec=tabs.newTabSpec("tag1");\r
+\r
+               spec.setContent(R.id.openrocketviewerOverview);\r
+               spec.setIndicator("Overview");\r
+               tabs.addTab(spec);\r
+\r
+               spec=tabs.newTabSpec("tag2");\r
+               spec.setContent(R.id.openrocketviewerComponentList);\r
+               spec.setIndicator("Components");\r
+               tabs.addTab(spec);      \r
+\r
+               spec=tabs.newTabSpec("tag3");\r
+               spec.setContent(R.id.openrocketviewerSimulationList);\r
+               spec.setIndicator("Simulations");\r
+               tabs.addTab(spec);      \r
+\r
+               componentList = (ListView) findViewById(R.id.openrocketviewerComponentList);\r
+               simulationList = (ListView) findViewById(R.id.openrocketviewerSimulationList);\r
 \r
                Intent i = getIntent();\r
                Uri file = i.getData();\r
@@ -118,23 +152,48 @@ public class OpenRocketViewer extends Activity {
 \r
        }\r
 \r
-       private void updateContents() {\r
+       /* (non-Javadoc)\r
+        * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)\r
+        */\r
+       @Override\r
+       public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {\r
+               // just in case the user changed the units, we redraw.\r
+               PreferencesActivity.initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));\r
+               updateContents();\r
+       }\r
 \r
-               OpenRocketDocument rocket = app.getRocketDocument();\r
-               header.setText( rocket.getRocket().getName());\r
+       private void updateContents() {\r
 \r
-               ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this,android.R.layout.simple_list_item_1,rocket.getSimulations()) {\r
+               OpenRocketDocument rocketDocument = app.getRocketDocument();\r
+               Rocket rocket = rocketDocument.getRocket();\r
+               \r
+               setTitle(rocket.getName());\r
+               \r
+               Unit LengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();\r
+               Unit MassUnit = UnitGroup.UNITS_MASS.getDefaultUnit();\r
+               \r
+               Coordinate cg = RocketUtils.getCG(rocket);\r
+               double length = RocketUtils.getLength(rocket);\r
+               ((TextView) findViewById(R.id.openrocketviewerRocketName)).setText( rocket.getName());\r
+               ((TextView)findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());\r
+               ((TextView)findViewById(R.id.openrocketviewerCG)).setText(LengthUnit.toStringUnit(cg.x) );\r
+               ((TextView)findViewById(R.id.openrocketviewerLength)).setText(LengthUnit.toStringUnit(length));\r
+               ((TextView)findViewById(R.id.openrocketviewerMass)).setText(MassUnit.toStringUnit(cg.weight));\r
+               ((TextView)findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));\r
+               ((TextView)findViewById(R.id.openrocketviewerComment)).setText(rocket.getComment());\r
+\r
+               ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this,android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {\r
 \r
                        @Override\r
-                       public View getView(int position, View convertView,\r
-                                       ViewGroup parent) {\r
+                       public View getView(int position, View convertView,     ViewGroup parent) {\r
                                View v = convertView;\r
                                if ( v == null ) {\r
                                        LayoutInflater li = getLayoutInflater();\r
-                                       v = li.inflate(android.R.layout.simple_list_item_1,null);\r
+                                       v = li.inflate(android.R.layout.simple_list_item_2,null);\r
                                }\r
                                Simulation sim = this.getItem(position);\r
                                ((TextView)v.findViewById(android.R.id.text1)).setText( sim.getName() );\r
+                               ((TextView)v.findViewById(android.R.id.text2)).setText( "motors: " + sim.getConfiguration().getMotorConfigurationDescription() + " apogee: " + sim.getSimulatedData().getMaxAltitude() + "m  time: " + sim.getSimulatedData().getFlightTime() + "s");\r
                                return v;\r
                        }\r
 \r
@@ -151,6 +210,27 @@ public class OpenRocketViewer extends Activity {
                });\r
                simulationList.setAdapter(sims);\r
 \r
+               ArrayAdapter<RocketComponent> comps = new ArrayAdapter<RocketComponent>(this, android.R.layout.simple_list_item_1,rocket.getChildren()) {\r
+\r
+                       /* (non-Javadoc)\r
+                        * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup)\r
+                        */\r
+                       @Override\r
+                       public View getView(int position, View convertView, ViewGroup parent) {\r
+                               View v = convertView;\r
+                               if ( v == null ) {\r
+                                       LayoutInflater li = getLayoutInflater();\r
+                                       v = li.inflate(android.R.layout.simple_list_item_1,null);\r
+                               }\r
+                               RocketComponent comp = this.getItem(position);\r
+                               ((TextView)v.findViewById(android.R.id.text1)).setText( comp.getName() );\r
+                               return v;\r
+                       }\r
+                       \r
+                       \r
+               };\r
+               componentList.setAdapter(comps);\r
+               \r
                if ( progress.isShowing() ) {\r
                        progress.dismiss();\r
                }\r