root / src / com / rackspacecloud / android / ListServersActivity.java @ 35e7942d
History | View | Annotate | Download (4.9 kB)
1 | 35e7942d | Michael Mayo | /**
|
---|---|---|---|
2 | 35e7942d | Michael Mayo | *
|
3 | 35e7942d | Michael Mayo | */
|
4 | 35e7942d | Michael Mayo | package com.rackspacecloud.android; |
5 | 35e7942d | Michael Mayo | |
6 | 35e7942d | Michael Mayo | import java.util.ArrayList; |
7 | 35e7942d | Michael Mayo | |
8 | 35e7942d | Michael Mayo | import com.rackspace.cloud.servers.api.client.EntityList; |
9 | 35e7942d | Michael Mayo | import com.rackspace.cloud.servers.api.client.Server; |
10 | 35e7942d | Michael Mayo | import com.rackspace.cloud.servers.api.client.ServerManager; |
11 | 35e7942d | Michael Mayo | import com.rackspace.cloud.servers.api.client.http.Authentication; |
12 | 35e7942d | Michael Mayo | |
13 | 35e7942d | Michael Mayo | import android.app.ListActivity; |
14 | 35e7942d | Michael Mayo | import android.os.AsyncTask; |
15 | 35e7942d | Michael Mayo | import android.os.Bundle; |
16 | 35e7942d | Michael Mayo | import android.view.LayoutInflater; |
17 | 35e7942d | Michael Mayo | import android.view.View; |
18 | 35e7942d | Michael Mayo | import android.view.ViewGroup; |
19 | 35e7942d | Michael Mayo | import android.widget.ArrayAdapter; |
20 | 35e7942d | Michael Mayo | import android.widget.ImageView; |
21 | 35e7942d | Michael Mayo | import android.widget.ListView; |
22 | 35e7942d | Michael Mayo | import android.widget.TextView; |
23 | 35e7942d | Michael Mayo | |
24 | 35e7942d | Michael Mayo | /**
|
25 | 35e7942d | Michael Mayo | * @author mike
|
26 | 35e7942d | Michael Mayo | *
|
27 | 35e7942d | Michael Mayo | */
|
28 | 35e7942d | Michael Mayo | public class ListServersActivity extends ListActivity { |
29 | 35e7942d | Michael Mayo | |
30 | 35e7942d | Michael Mayo | private Server[] servers; |
31 | 35e7942d | Michael Mayo | |
32 | 35e7942d | Michael Mayo | @Override
|
33 | 35e7942d | Michael Mayo | public void onCreate(Bundle savedInstanceState) { |
34 | 35e7942d | Michael Mayo | super.onCreate(savedInstanceState);
|
35 | 35e7942d | Michael Mayo | loadServers(); |
36 | 35e7942d | Michael Mayo | } |
37 | 35e7942d | Michael Mayo | |
38 | 35e7942d | Michael Mayo | |
39 | 35e7942d | Michael Mayo | protected void onListItemClick(ListView l, View v, int position, long id) { |
40 | 35e7942d | Michael Mayo | //startActivity(new Intent(this, ViewSliceActivity.class));
|
41 | 35e7942d | Michael Mayo | } |
42 | 35e7942d | Michael Mayo | |
43 | 35e7942d | Michael Mayo | private void loadServers() { |
44 | 35e7942d | Michael Mayo | displayLoadingCell(); |
45 | 35e7942d | Michael Mayo | new LoadServersTask().execute((Void[]) null); |
46 | 35e7942d | Michael Mayo | } |
47 | 35e7942d | Michael Mayo | |
48 | 35e7942d | Michael Mayo | private void setServerList(ArrayList<Server> servers) { |
49 | 35e7942d | Michael Mayo | String[] serverNames = new String[servers.size()]; |
50 | 35e7942d | Michael Mayo | this.servers = new Server[servers.size()]; |
51 | 35e7942d | Michael Mayo | |
52 | 35e7942d | Michael Mayo | if (servers != null) { |
53 | 35e7942d | Michael Mayo | for (int i = 0; i < servers.size(); i++) { |
54 | 35e7942d | Michael Mayo | Server server = servers.get(i); |
55 | 35e7942d | Michael Mayo | this.servers[i] = server;
|
56 | 35e7942d | Michael Mayo | serverNames[i] = server.getName(); |
57 | 35e7942d | Michael Mayo | } |
58 | 35e7942d | Michael Mayo | } |
59 | 35e7942d | Michael Mayo | |
60 | 35e7942d | Michael Mayo | // TODO: throws ClassCastException with empty list
|
61 | 35e7942d | Michael Mayo | if (serverNames.length == 0) { |
62 | 35e7942d | Michael Mayo | displayNoServersCell(); |
63 | 35e7942d | Michael Mayo | } else {
|
64 | 35e7942d | Michael Mayo | |
65 | 35e7942d | Michael Mayo | getListView().setDividerHeight(1); // restore divider linesan |
66 | 35e7942d | Michael Mayo | //setListAdapter(new ArrayAdapter<String>(this, R.layout.listservercell, R.id.label, serverNames));
|
67 | 35e7942d | Michael Mayo | setListAdapter(new ServerAdapter());
|
68 | 35e7942d | Michael Mayo | } |
69 | 35e7942d | Michael Mayo | } |
70 | 35e7942d | Michael Mayo | |
71 | 35e7942d | Michael Mayo | private void displayLoadingCell() { |
72 | 35e7942d | Michael Mayo | String a[] = new String[1]; |
73 | 35e7942d | Michael Mayo | a[0] = "Loading..."; |
74 | 35e7942d | Michael Mayo | setListAdapter(new ArrayAdapter<String>(this, R.layout.loadingcell, R.id.loading_label, a)); |
75 | 35e7942d | Michael Mayo | getListView().setTextFilterEnabled(true);
|
76 | 35e7942d | Michael Mayo | getListView().setDividerHeight(0); // hide the dividers so it won't look like a list row |
77 | 35e7942d | Michael Mayo | getListView().setItemsCanFocus(false);
|
78 | 35e7942d | Michael Mayo | //getListView().setClickable(false); // TODO: so it will never be highlighted on touch
|
79 | 35e7942d | Michael Mayo | } |
80 | 35e7942d | Michael Mayo | |
81 | 35e7942d | Michael Mayo | private void displayNoServersCell() { |
82 | 35e7942d | Michael Mayo | String a[] = new String[1]; |
83 | 35e7942d | Michael Mayo | a[0] = "No Servers"; |
84 | 35e7942d | Michael Mayo | setListAdapter(new ArrayAdapter<String>(this, R.layout.noserverscell, R.id.no_servers_label, a)); |
85 | 35e7942d | Michael Mayo | getListView().setTextFilterEnabled(true);
|
86 | 35e7942d | Michael Mayo | getListView().setDividerHeight(0); // hide the dividers so it won't look like a list row |
87 | 35e7942d | Michael Mayo | //getListView().setClickable(false); // so it will never be highlighted on touch
|
88 | 35e7942d | Michael Mayo | getListView().setItemsCanFocus(false);
|
89 | 35e7942d | Michael Mayo | } |
90 | 35e7942d | Michael Mayo | |
91 | 35e7942d | Michael Mayo | private class LoadServersTask extends AsyncTask<Void, Void, ArrayList<Server>> { |
92 | 35e7942d | Michael Mayo | |
93 | 35e7942d | Michael Mayo | @Override
|
94 | 35e7942d | Michael Mayo | protected ArrayList<Server> doInBackground(Void... arg0) { |
95 | 35e7942d | Michael Mayo | return (new ServerManager()).createList(true); |
96 | 35e7942d | Michael Mayo | } |
97 | 35e7942d | Michael Mayo | |
98 | 35e7942d | Michael Mayo | @Override
|
99 | 35e7942d | Michael Mayo | protected void onPostExecute(ArrayList<Server> result) { |
100 | 35e7942d | Michael Mayo | setServerList(result); |
101 | 35e7942d | Michael Mayo | } |
102 | 35e7942d | Michael Mayo | } |
103 | 35e7942d | Michael Mayo | |
104 | 35e7942d | Michael Mayo | |
105 | 35e7942d | Michael Mayo | //public void setList() {
|
106 | 35e7942d | Michael Mayo | //guiThread.post(new RefreshSlicesListTask(this));
|
107 | 35e7942d | Michael Mayo | //}
|
108 | 35e7942d | Michael Mayo | |
109 | 35e7942d | Michael Mayo | /*
|
110 | 35e7942d | Michael Mayo | @Override
|
111 | 35e7942d | Michael Mayo | public boolean onCreateOptionsMenu(Menu menu) {
|
112 | 35e7942d | Michael Mayo | super.onCreateOptionsMenu(menu);
|
113 | 35e7942d | Michael Mayo | MenuInflater inflater = getMenuInflater();
|
114 | 35e7942d | Michael Mayo | inflater.inflate(R.menu.slices_list_menu, menu);
|
115 | 35e7942d | Michael Mayo | return true;
|
116 | 35e7942d | Michael Mayo | }
|
117 | 35e7942d | Michael Mayo |
|
118 | 35e7942d | Michael Mayo | @Override
|
119 | 35e7942d | Michael Mayo | public boolean onOptionsItemSelected(MenuItem item) {
|
120 | 35e7942d | Michael Mayo | switch (item.getItemId()) {
|
121 | 35e7942d | Michael Mayo | case R.id.settings:
|
122 | 35e7942d | Michael Mayo | startActivity(new Intent(this, SettingsActivity.class));
|
123 | 35e7942d | Michael Mayo | return true;
|
124 | 35e7942d | Michael Mayo | // More items go here (if any) ...
|
125 | 35e7942d | Michael Mayo | case R.id.refresh:
|
126 | 35e7942d | Michael Mayo | Slicehost.setSlices(null);
|
127 | 35e7942d | Michael Mayo | initThreading();
|
128 | 35e7942d | Michael Mayo | guiThread.post(updateTask);
|
129 | 35e7942d | Michael Mayo | displayLoadingCell();
|
130 | 35e7942d | Michael Mayo | return true;
|
131 | 35e7942d | Michael Mayo | case R.id.dns_menu_add_zone:
|
132 | 35e7942d | Michael Mayo | startActivity(new Intent(this, AddZoneActivity.class));
|
133 | 35e7942d | Michael Mayo | return true;
|
134 | 35e7942d | Michael Mayo | // More items go here (if any) ...
|
135 | 35e7942d | Michael Mayo | }
|
136 | 35e7942d | Michael Mayo | return false;
|
137 | 35e7942d | Michael Mayo | }
|
138 | 35e7942d | Michael Mayo | */
|
139 | 35e7942d | Michael Mayo | |
140 | 35e7942d | Michael Mayo | class ServerAdapter extends ArrayAdapter<Server> { |
141 | 35e7942d | Michael Mayo | ServerAdapter() { |
142 | 35e7942d | Michael Mayo | super(ListServersActivity.this, R.layout.listservercell, servers);
|
143 | 35e7942d | Michael Mayo | } |
144 | 35e7942d | Michael Mayo | |
145 | 35e7942d | Michael Mayo | public View getView(int position, View convertView, ViewGroup parent) { |
146 | 35e7942d | Michael Mayo | |
147 | 35e7942d | Michael Mayo | Server server = servers[position]; |
148 | 35e7942d | Michael Mayo | LayoutInflater inflater = getLayoutInflater(); |
149 | 35e7942d | Michael Mayo | View row = inflater.inflate(R.layout.listservercell, parent, false); |
150 | 35e7942d | Michael Mayo | |
151 | 35e7942d | Michael Mayo | TextView label = (TextView) row.findViewById(R.id.label); |
152 | 35e7942d | Michael Mayo | label.setText(server.getName()); |
153 | 35e7942d | Michael Mayo | |
154 | 35e7942d | Michael Mayo | TextView sublabel = (TextView) row.findViewById(R.id.sublabel); |
155 | 35e7942d | Michael Mayo | sublabel.setText(server.getFlavorId() + " - " + server.getImageId());
|
156 | 35e7942d | Michael Mayo | |
157 | 35e7942d | Michael Mayo | ImageView icon = (ImageView) row.findViewById(R.id.icon); |
158 | 35e7942d | Michael Mayo | if (position == 0) { |
159 | 35e7942d | Michael Mayo | icon.setImageResource(R.drawable.ubuntu_icon); |
160 | 35e7942d | Michael Mayo | } else {
|
161 | 35e7942d | Michael Mayo | icon.setImageResource(R.drawable.centos_icon); |
162 | 35e7942d | Michael Mayo | } |
163 | 35e7942d | Michael Mayo | return(row);
|
164 | 35e7942d | Michael Mayo | } |
165 | 35e7942d | Michael Mayo | } |
166 | 35e7942d | Michael Mayo | |
167 | 35e7942d | Michael Mayo | } |