Using pl.polidea.treeview for the component tree list. This code is under 2-clause...
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / RocketComponentTreeAdapter.java
1 package net.sf.openrocket.android.rocket;
2
3 import net.sf.openrocket.R;
4 import net.sf.openrocket.android.rocket.RocketComponentTreeAdapter.RocketComponentWithId;
5 import net.sf.openrocket.rocketcomponent.RocketComponent;
6 import pl.polidea.treeview.AbstractTreeViewAdapter;
7 import pl.polidea.treeview.InMemoryTreeStateManager;
8 import pl.polidea.treeview.TreeNodeInfo;
9 import pl.polidea.treeview.TreeStateManager;
10 import android.app.Activity;
11 import android.view.View;
12 import android.view.ViewGroup;
13 import android.widget.LinearLayout;
14 import android.widget.TextView;
15
16 /**
17  * This is a very simple adapter that provides very basic tree view with a
18  * checkboxes and simple item description.
19  * 
20  */
21 public class RocketComponentTreeAdapter extends AbstractTreeViewAdapter<RocketComponentWithId> {
22
23         static class RocketComponentWithId {
24                 RocketComponent component;
25                 long id;
26                 public RocketComponentWithId( RocketComponent c, long id ) {
27                         this.component = c;
28                         this.id = id;
29                 }
30         }
31         
32         public RocketComponentTreeAdapter(final Activity treeViewListDemo,
33                         TreeStateManager<RocketComponentWithId> manager,
34                         final int numberOfLevels) {
35                 super(treeViewListDemo, manager, numberOfLevels);
36         }
37
38         private String getDescription(final RocketComponentWithId id) {
39                 return  id.component.getName();
40         }
41
42         @Override
43         public View getNewChildView(final TreeNodeInfo<RocketComponentWithId> treeNodeInfo) {
44                 final View viewLayout = getActivity().getLayoutInflater().inflate(R.layout.component_list_item, null);
45                 return updateView(viewLayout, treeNodeInfo);
46         }
47
48         @Override
49         public View updateView(final View view,
50                         final TreeNodeInfo<RocketComponentWithId> treeNodeInfo) {
51                 final View viewLayout = view;
52                 final TextView descriptionView = (TextView) viewLayout.findViewById(android.R.id.text1);
53                 descriptionView.setText(getDescription(treeNodeInfo.getId()));
54                 return viewLayout;
55         }
56
57         @Override
58         public void handleItemClick(final View view, final Object id) {
59                 final RocketComponentWithId longId = (RocketComponentWithId) id;
60                 final TreeNodeInfo<RocketComponentWithId> info = getManager().getNodeInfo(longId);
61                 if (info.isWithChildren()) {
62                         super.handleItemClick(view, id);
63                 } else {
64                         final ViewGroup vg = (ViewGroup) view;
65                         // perform click on child item
66                 }
67         }
68
69         @Override
70         public long getItemId(final int position) {
71                 RocketComponentWithId rcid = getTreeId(position);
72                 return rcid.id;
73         }
74 }