lose embedded source jars from upstream branch
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / Component.java
1 package net.sf.openrocket.android.rocket;\r
2 \r
3 import net.sf.openrocket.R;\r
4 import net.sf.openrocket.android.Application;\r
5 import net.sf.openrocket.android.rocket.RocketComponentTreeAdapter.RocketComponentWithId;\r
6 import net.sf.openrocket.document.OpenRocketDocument;\r
7 import net.sf.openrocket.rocketcomponent.Rocket;\r
8 import net.sf.openrocket.rocketcomponent.RocketComponent;\r
9 import pl.polidea.treeview.InMemoryTreeStateManager;\r
10 import pl.polidea.treeview.TreeBuilder;\r
11 import pl.polidea.treeview.TreeStateManager;\r
12 import pl.polidea.treeview.TreeViewList;\r
13 import android.os.Bundle;\r
14 import android.support.v4.app.Fragment;\r
15 import android.view.LayoutInflater;\r
16 import android.view.View;\r
17 import android.view.ViewGroup;\r
18 import android.widget.ListAdapter;\r
19 \r
20 public class Component extends Fragment {\r
21 \r
22         private TreeViewList componentTree;\r
23 \r
24         @Override\r
25         public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
26                         Bundle savedInstanceState) {\r
27                 View v = inflater.inflate(R.layout.rocket_component, container, false);\r
28                 componentTree = (TreeViewList) v.findViewById(R.id.openrocketviewerComponentTree);\r
29 \r
30                 return v;\r
31         }\r
32 \r
33         @Override\r
34         public void onActivityCreated(Bundle savedInstanceState) {\r
35                 super.onActivityCreated(savedInstanceState);\r
36 \r
37                 final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
38                 componentTree.setAdapter( buildAdapter( rocketDocument.getRocket() ) );\r
39         }\r
40         \r
41         private ListAdapter buildAdapter( Rocket rocket ) {\r
42 \r
43                 TreeStateManager<RocketComponentWithId> manager = new InMemoryTreeStateManager<RocketComponentWithId>();\r
44                 TreeBuilder<RocketComponentWithId> treeBuilder = new TreeBuilder<RocketComponentWithId>(manager);\r
45 \r
46                 int depth = buildRecursive( rocket, treeBuilder, 0 );\r
47                 return new RocketComponentTreeAdapter(this.getActivity(), manager, depth+1);\r
48         }\r
49 \r
50         long id = 0;\r
51         private int buildRecursive( RocketComponent comp, TreeBuilder<RocketComponentWithId> builder, int depth ) {\r
52 \r
53 \r
54                 int maxDepth = depth;\r
55 \r
56                 RocketComponentWithId rcid = new RocketComponentWithId(comp, id++);\r
57 \r
58                 // Add this component.\r
59                 builder.sequentiallyAddNextNode(rcid, depth);\r
60 \r
61                 if ( comp.allowsChildren() ) {\r
62 \r
63                         for( RocketComponent child : comp.getChildren() ) {\r
64                                 int childDepth = buildRecursive( child, builder, depth+1);\r
65                                 if ( childDepth > maxDepth) {\r
66                                         maxDepth = childDepth;\r
67                                 }\r
68                         }\r
69 \r
70                 }\r
71 \r
72                 return maxDepth;\r
73         }\r
74 \r
75 \r
76 }\r