Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / ListServersActivity.java @ 35e7942d

History | View | Annotate | Download (4.9 kB)

1
/**
2
 * 
3
 */
4
package com.rackspacecloud.android;
5

    
6
import java.util.ArrayList;
7

    
8
import com.rackspace.cloud.servers.api.client.EntityList;
9
import com.rackspace.cloud.servers.api.client.Server;
10
import com.rackspace.cloud.servers.api.client.ServerManager;
11
import com.rackspace.cloud.servers.api.client.http.Authentication;
12

    
13
import android.app.ListActivity;
14
import android.os.AsyncTask;
15
import android.os.Bundle;
16
import android.view.LayoutInflater;
17
import android.view.View;
18
import android.view.ViewGroup;
19
import android.widget.ArrayAdapter;
20
import android.widget.ImageView;
21
import android.widget.ListView;
22
import android.widget.TextView;
23

    
24
/**
25
 * @author mike
26
 *
27
 */
28
public class ListServersActivity extends ListActivity {
29

    
30
        private Server[] servers;
31
        
32
        @Override
33
    public void onCreate(Bundle savedInstanceState) {
34
        super.onCreate(savedInstanceState);
35
        loadServers();        
36
    }
37

    
38
        
39
    protected void onListItemClick(ListView l, View v, int position, long id) {        
40
            //startActivity(new Intent(this, ViewSliceActivity.class));
41
    }
42
    
43
    private void loadServers() {
44
            displayLoadingCell();
45
            new LoadServersTask().execute((Void[]) null);
46
    }
47
    
48
    private void setServerList(ArrayList<Server> servers) {
49
            String[] serverNames = new String[servers.size()];
50
            this.servers = new Server[servers.size()];
51
            
52
                if (servers != null) {
53
                        for (int i = 0; i < servers.size(); i++) {
54
                                Server server = servers.get(i);
55
                                this.servers[i] = server;
56
                                serverNames[i] = server.getName();
57
                        }
58
                }
59
                
60
                // TODO: throws ClassCastException with empty list
61
                if (serverNames.length == 0) {
62
                        displayNoServersCell();
63
                } else {
64
                        
65
                        getListView().setDividerHeight(1); // restore divider linesan 
66
                        //setListAdapter(new ArrayAdapter<String>(this, R.layout.listservercell, R.id.label, serverNames));
67
                        setListAdapter(new ServerAdapter());
68
                }
69
    }
70
    
71
    private void displayLoadingCell() {
72
            String a[] = new String[1];
73
            a[0] = "Loading...";
74
        setListAdapter(new ArrayAdapter<String>(this, R.layout.loadingcell, R.id.loading_label, a));
75
        getListView().setTextFilterEnabled(true);
76
        getListView().setDividerHeight(0); // hide the dividers so it won't look like a list row
77
        getListView().setItemsCanFocus(false);
78
        //getListView().setClickable(false); // TODO: so it will never be highlighted on touch
79
    }
80
    
81
    private void displayNoServersCell() {
82
            String a[] = new String[1];
83
            a[0] = "No Servers";
84
        setListAdapter(new ArrayAdapter<String>(this, R.layout.noserverscell, R.id.no_servers_label, a));
85
        getListView().setTextFilterEnabled(true);
86
        getListView().setDividerHeight(0); // hide the dividers so it won't look like a list row
87
        //getListView().setClickable(false); // so it will never be highlighted on touch
88
        getListView().setItemsCanFocus(false);
89
    }
90
    
91
    private class LoadServersTask extends AsyncTask<Void, Void, ArrayList<Server>> {
92
            
93
                @Override
94
                protected ArrayList<Server> doInBackground(Void... arg0) {
95
                        return (new ServerManager()).createList(true);
96
                }
97
            
98
                @Override
99
                protected void onPostExecute(ArrayList<Server> result) {
100
                        setServerList(result);
101
                }
102
    }
103
    
104
    
105
    //public void setList() {
106
            //guiThread.post(new RefreshSlicesListTask(this));
107
    //}
108
        
109
    /*
110
    @Override 
111
    public boolean onCreateOptionsMenu(Menu menu) {
112
                super.onCreateOptionsMenu(menu);
113
                MenuInflater inflater = getMenuInflater();
114
                inflater.inflate(R.menu.slices_list_menu, menu);
115
                return true;
116
        } 
117
    
118
    @Override 
119
    public boolean onOptionsItemSelected(MenuItem item) {
120
                switch (item.getItemId()) {
121
                case R.id.settings:
122
                        startActivity(new Intent(this, SettingsActivity.class));
123
                        return true;
124
                        // More items go here (if any) ...
125
                case R.id.refresh:
126
                        Slicehost.setSlices(null);
127
                        initThreading();
128
                guiThread.post(updateTask);        
129
                displayLoadingCell();
130
                return true;
131
                case R.id.dns_menu_add_zone:
132
                        startActivity(new Intent(this, AddZoneActivity.class));
133
                        return true;
134
                        // More items go here (if any) ...
135
                }
136
                return false;
137
        } 
138
        */
139
    
140
        class ServerAdapter extends ArrayAdapter<Server> {
141
                ServerAdapter() {
142
                        super(ListServersActivity.this, R.layout.listservercell, servers);
143
                }
144
                
145
                public View getView(int position, View convertView, ViewGroup parent) {
146
                        
147
                        Server server = servers[position];
148
                        LayoutInflater inflater = getLayoutInflater();
149
                        View row = inflater.inflate(R.layout.listservercell, parent, false);
150

    
151
                        TextView label = (TextView) row.findViewById(R.id.label);
152
                        label.setText(server.getName());
153
                        
154
                        TextView sublabel = (TextView) row.findViewById(R.id.sublabel);
155
                        sublabel.setText(server.getFlavorId() + " - " + server.getImageId());
156
                        
157
                        ImageView icon = (ImageView) row.findViewById(R.id.icon);
158
                        if (position == 0) {
159
                                icon.setImageResource(R.drawable.ubuntu_icon);
160
                        } else {
161
                                icon.setImageResource(R.drawable.centos_icon);
162
                        }
163
                        return(row);
164
                }
165
        }
166
    
167
}