Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / AddServerActivity.java @ 9a4cdbc6

History | View | Annotate | Download (5.4 kB)

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

    
6
import java.util.ArrayList;
7
import java.util.Iterator;
8

    
9
import com.rackspace.cloud.servers.api.client.Flavor;
10
import com.rackspace.cloud.servers.api.client.Image;
11
import com.rackspace.cloud.servers.api.client.Server;
12
import com.rackspace.cloud.servers.api.client.ServerManager;
13
// import com.rackspacecloud.android.RackspaceCloudActivity.LoadFlavorsTask;
14

    
15
import android.app.Activity;
16
import android.app.AlertDialog;
17
import android.content.DialogInterface;
18
import android.content.Intent;
19
import android.os.AsyncTask;
20
import android.os.Bundle;
21
import android.view.View;
22
import android.view.View.OnClickListener;
23
import android.widget.AdapterView;
24
import android.widget.ArrayAdapter;
25
import android.widget.Button;
26
import android.widget.EditText;
27
import android.widget.ProgressBar;
28
import android.widget.Spinner;
29
import android.widget.TextView;
30
import android.widget.AdapterView.OnItemSelectedListener;
31

    
32
/**
33
 * @author mike
34
 *
35
 */
36
public class AddServerActivity extends Activity implements OnItemSelectedListener, OnClickListener {
37

    
38
        private Image[] images;
39
        private Flavor[] flavors;
40
        private String selectedImageId;
41
        private String selectedFlavorId;
42
        private EditText serverName;
43
        private Spinner imageSpinner;
44
        private Spinner flavorSpinner;
45
        private Server server;
46
        
47
    /** Called when the activity is first created. */
48
    @Override
49
    public void onCreate(Bundle savedInstanceState) {
50
        super.onCreate(savedInstanceState);
51
        setContentView(R.layout.createserver);
52
        serverName = (EditText) findViewById(R.id.server_name);
53
        ((Button) findViewById(R.id.save_button)).setOnClickListener(this);
54
        loadImageSpinner();
55
        loadFlavorSpinner();
56
    }
57

    
58
    private void loadImageSpinner() {
59
                imageSpinner = (Spinner) findViewById(R.id.image_spinner);
60
                imageSpinner.setOnItemSelectedListener(this);
61
                String imageNames[] = new String[Image.getImages().size()]; 
62
                images = new Image[Image.getImages().size()];
63

    
64
                Iterator<Image> iter = Image.getImages().values().iterator();
65
                int i = 0;
66
                while (iter.hasNext()) {
67
                        Image image = iter.next();
68
                        images[i] = image;
69
                        imageNames[i] = image.getName();
70
                        i++;
71
                }
72
                selectedImageId = images[0].getId();
73
                ArrayAdapter<String> imageAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, imageNames);
74
                imageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
75
                imageSpinner.setAdapter(imageAdapter);
76
    }
77
    
78
    private void loadFlavorSpinner() {
79
                flavorSpinner = (Spinner) findViewById(R.id.flavor_spinner);
80
                flavorSpinner.setOnItemSelectedListener(this);
81
                String flavorNames[] = new String[Flavor.getFlavors().size()]; 
82
                flavors = new Flavor[Flavor.getFlavors().size()];
83

    
84
                Iterator<Flavor> iter = Flavor.getFlavors().values().iterator();
85
                int i = 0;
86
                while (iter.hasNext()) {
87
                        Flavor flavor = iter.next();
88
                        flavors[i] = flavor;
89
                        flavorNames[i] = flavor.getName() + ", " + flavor.getDisk() + " GB disk";
90
                        i++;
91
                }
92
                selectedFlavorId = flavors[0].getId();
93
                ArrayAdapter<String> flavorAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, flavorNames);
94
                flavorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
95
                flavorSpinner.setAdapter(flavorAdapter);
96
    }
97

    
98
        @Override
99
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
100
                // TODO Auto-generated method stub
101
                if (parent == imageSpinner) {
102
                        selectedImageId = images[position].getId();
103
                } else if (parent == flavorSpinner) {
104
                        selectedFlavorId = flavors[position].getId();
105
                }
106
        }
107

    
108
        @Override
109
        public void onNothingSelected(AdapterView<?> parent) {
110
                // TODO Auto-generated method stub
111
                
112
        }
113

    
114
        @Override
115
        public void onClick(View arg0) {
116
                // TODO Auto-generated method stub
117
                if ("".equals(serverName.getText().toString())) {
118
                        showAlert("Required Fields Missing", "Server name is required.");
119
                } else {
120
                        showActivityIndicators();
121
                        server = new Server();
122
                        server.setName(serverName.getText().toString());
123
                        server.setImageId(selectedImageId);
124
                        server.setFlavorId(selectedFlavorId);
125
                        new SaveServerTask().execute((Void[]) null);
126
                }
127
        }
128
        
129
        // TODO: extract to a util class?
130
    private void showAlert(String title, String message) {
131
                AlertDialog alert = new AlertDialog.Builder(this).create();
132
                alert.setTitle(title);
133
                alert.setMessage(message);
134
                alert.setButton("OK", new DialogInterface.OnClickListener() {
135
              public void onClick(DialogInterface dialog, int which) {
136
                return;
137
            } }); 
138
                alert.show();
139
    }
140
        
141
    private void setActivityIndicatorsVisibility(int visibility) {
142
        ProgressBar pb = (ProgressBar) findViewById(R.id.save_server_progress_bar);
143
            TextView tv = (TextView) findViewById(R.id.saving_server_label);
144
        pb.setVisibility(visibility);
145
        tv.setVisibility(visibility);
146
    }
147

    
148
    private void showActivityIndicators() {
149
            setActivityIndicatorsVisibility(View.VISIBLE);
150
    }
151
    
152
    private void hideActivityIndicators() {
153
            setActivityIndicatorsVisibility(View.INVISIBLE);
154
    }
155
        
156
    private class SaveServerTask extends AsyncTask<Void, Void, Server> {
157
            
158
                @Override
159
                protected Server doInBackground(Void... arg0) {
160
                        (new ServerManager()).create(server);
161
                        return server;
162
                }
163
            
164
                @Override
165
                protected void onPostExecute(Server result) {
166
                        //setServerList(result);
167
                        //this.
168
                        hideActivityIndicators();
169
                        System.out.println("done");
170
                }
171
    }
172
        
173
}