Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / AddLoadBalancerActivity.java @ 96a8e632

History | View | Annotate | Download (6.1 kB)

1 aeff0a62 Adam Menz
package com.rackspacecloud.android;
2 aeff0a62 Adam Menz
3 6ecf99bb Adam Menz
import com.rackspace.cloud.loadbalancer.api.client.Algorithm;
4 aeff0a62 Adam Menz
import com.rackspace.cloud.loadbalancer.api.client.Protocol;
5 96a8e632 Adam Menz
import com.rackspace.cloud.servers.api.client.Server;
6 aeff0a62 Adam Menz
7 aeff0a62 Adam Menz
import android.app.Activity;
8 aeff0a62 Adam Menz
import android.app.AlertDialog;
9 aeff0a62 Adam Menz
import android.content.DialogInterface;
10 639ae8d6 Adam Menz
import android.content.Intent;
11 aeff0a62 Adam Menz
import android.os.Bundle;
12 aeff0a62 Adam Menz
import android.view.View;
13 639ae8d6 Adam Menz
import android.view.View.OnClickListener;
14 aeff0a62 Adam Menz
import android.widget.AdapterView;
15 aeff0a62 Adam Menz
import android.widget.AdapterView.OnItemSelectedListener;
16 aeff0a62 Adam Menz
import android.widget.ArrayAdapter;
17 639ae8d6 Adam Menz
import android.widget.Button;
18 aeff0a62 Adam Menz
import android.widget.EditText;
19 aeff0a62 Adam Menz
import android.widget.Spinner;
20 aeff0a62 Adam Menz
21 aeff0a62 Adam Menz
public class AddLoadBalancerActivity extends Activity implements OnItemSelectedListener {
22 aeff0a62 Adam Menz
23 639ae8d6 Adam Menz
        //TODO Shared Virtual IP (not in API though?)
24 639ae8d6 Adam Menz
        private static final String[] VIP_TYPES = {"Public", "ServiceNet"};
25 639ae8d6 Adam Menz
        private static final String[] REGIONS = {"ORD", "DFW"};
26 639ae8d6 Adam Menz
        
27 aeff0a62 Adam Menz
        private Protocol[] protocols;
28 6ecf99bb Adam Menz
        private Algorithm[] algorithms;
29 aeff0a62 Adam Menz
        private Spinner protocolSpinner;
30 6ecf99bb Adam Menz
        private Spinner algorithmSpinner;
31 639ae8d6 Adam Menz
        private Spinner vipSpinner;
32 639ae8d6 Adam Menz
        private Spinner regionSpinner;
33 aeff0a62 Adam Menz
        private EditText portText;
34 aeff0a62 Adam Menz
        private Protocol selectedProtocol;
35 639ae8d6 Adam Menz
        private Algorithm selectedAlgorithm;
36 639ae8d6 Adam Menz
        private String selectedVipType;
37 639ae8d6 Adam Menz
        private String selectedRegion;
38 639ae8d6 Adam Menz
        private String selectedName;
39 639ae8d6 Adam Menz
        private String selectedPort;
40 aeff0a62 Adam Menz
41 aeff0a62 Adam Menz
        @Override
42 aeff0a62 Adam Menz
        public void onCreate(Bundle savedInstanceState) {
43 aeff0a62 Adam Menz
                super.onCreate(savedInstanceState);
44 aeff0a62 Adam Menz
                setContentView(R.layout.view_add_loadbalancer);
45 aeff0a62 Adam Menz
                restoreState(savedInstanceState);
46 aeff0a62 Adam Menz
        }
47 aeff0a62 Adam Menz
48 aeff0a62 Adam Menz
        private void restoreState(Bundle state) {
49 aeff0a62 Adam Menz
                portText = (EditText)findViewById(R.id.edit_port_text);
50 aeff0a62 Adam Menz
                loadProtocolSpinner();
51 6ecf99bb Adam Menz
                loadAlgorithmSpinner();
52 639ae8d6 Adam Menz
                loadVipSpinner();
53 639ae8d6 Adam Menz
                loadRegionSpinner();
54 639ae8d6 Adam Menz
                setUpButton();
55 aeff0a62 Adam Menz
        }
56 6ecf99bb Adam Menz
57 aeff0a62 Adam Menz
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
58 aeff0a62 Adam Menz
                if (parent == protocolSpinner) {
59 aeff0a62 Adam Menz
                        selectedProtocol = protocols[position];
60 aeff0a62 Adam Menz
                        portText.setText(protocols[position].getPort());
61 aeff0a62 Adam Menz
                } 
62 639ae8d6 Adam Menz
                else if (parent == algorithmSpinner){
63 639ae8d6 Adam Menz
                        selectedAlgorithm = algorithms[position];
64 639ae8d6 Adam Menz
                }
65 639ae8d6 Adam Menz
                else if (parent == vipSpinner){
66 639ae8d6 Adam Menz
                        selectedVipType = VIP_TYPES[position];
67 639ae8d6 Adam Menz
                }
68 639ae8d6 Adam Menz
                else if (parent == regionSpinner){
69 639ae8d6 Adam Menz
                        selectedRegion = REGIONS[position];
70 639ae8d6 Adam Menz
                }
71 aeff0a62 Adam Menz
        }
72 aeff0a62 Adam Menz
73 aeff0a62 Adam Menz
        public void onNothingSelected(AdapterView<?> parent) {
74 6ecf99bb Adam Menz
75 6ecf99bb Adam Menz
        }
76 639ae8d6 Adam Menz
        
77 639ae8d6 Adam Menz
        private void setUpButton(){
78 639ae8d6 Adam Menz
                Button addNodes = (Button) findViewById(R.id.add_nodes_button);
79 639ae8d6 Adam Menz
                addNodes.setOnClickListener(new OnClickListener() {
80 639ae8d6 Adam Menz
                        
81 639ae8d6 Adam Menz
                        @Override
82 639ae8d6 Adam Menz
                        public void onClick(View v) {
83 639ae8d6 Adam Menz
                                selectedName = ((EditText)findViewById(R.id.edit_lb_name_text)).getText().toString();
84 639ae8d6 Adam Menz
                                selectedPort = ((EditText)findViewById(R.id.edit_port_text)).getText().toString();
85 639ae8d6 Adam Menz
                                if(!validName()){
86 639ae8d6 Adam Menz
                                        showAlert("Error", "Load balancer name cannot be blank.");
87 639ae8d6 Adam Menz
                                }
88 639ae8d6 Adam Menz
                                else if(!validPort()){
89 639ae8d6 Adam Menz
                                        showAlert("Error", "Must have a protocol port number that is between 1 and 65535.");
90 639ae8d6 Adam Menz
                                }
91 639ae8d6 Adam Menz
                                else{
92 639ae8d6 Adam Menz
                                        Intent viewIntent = new Intent(getApplicationContext(), AddNodesActivity.class);
93 639ae8d6 Adam Menz
                                        viewIntent.putExtra("name", selectedName);
94 639ae8d6 Adam Menz
                                        viewIntent.putExtra("protocol", selectedProtocol);
95 639ae8d6 Adam Menz
                                        viewIntent.putExtra("port", selectedPort);
96 639ae8d6 Adam Menz
                                        viewIntent.putExtra("vip", selectedVipType);
97 639ae8d6 Adam Menz
                                        viewIntent.putExtra("algorithm", selectedAlgorithm);
98 639ae8d6 Adam Menz
                                        viewIntent.putExtra("region", selectedRegion);
99 639ae8d6 Adam Menz
                                        startActivity(viewIntent);
100 639ae8d6 Adam Menz
                                }
101 639ae8d6 Adam Menz
                        }
102 639ae8d6 Adam Menz
                });
103 639ae8d6 Adam Menz
        }
104 639ae8d6 Adam Menz
        
105 639ae8d6 Adam Menz
        private boolean validName(){
106 639ae8d6 Adam Menz
                return !selectedName.equals("");
107 639ae8d6 Adam Menz
        }
108 639ae8d6 Adam Menz
        
109 639ae8d6 Adam Menz
        private boolean validPort(){
110 639ae8d6 Adam Menz
                return !selectedPort.equals("") && Integer.valueOf(selectedPort) > 0 && Integer.valueOf(selectedPort) < 65536;
111 639ae8d6 Adam Menz
        }
112 639ae8d6 Adam Menz
        
113 639ae8d6 Adam Menz
        private void loadRegionSpinner() {
114 639ae8d6 Adam Menz
                regionSpinner = (Spinner) findViewById(R.id.edit_region_spinner);
115 639ae8d6 Adam Menz
                regionSpinner.setOnItemSelectedListener(this);
116 639ae8d6 Adam Menz
117 639ae8d6 Adam Menz
                ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, REGIONS);
118 639ae8d6 Adam Menz
                regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
119 639ae8d6 Adam Menz
                regionSpinner.setAdapter(regionAdapter);
120 639ae8d6 Adam Menz
        }
121 639ae8d6 Adam Menz
        
122 639ae8d6 Adam Menz
        private void loadVipSpinner() {
123 639ae8d6 Adam Menz
                vipSpinner = (Spinner) findViewById(R.id.edit_vip_spinner);
124 639ae8d6 Adam Menz
                vipSpinner.setOnItemSelectedListener(this);
125 639ae8d6 Adam Menz
126 639ae8d6 Adam Menz
                ArrayAdapter<String> vipAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, VIP_TYPES);
127 639ae8d6 Adam Menz
                vipAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
128 639ae8d6 Adam Menz
                vipSpinner.setAdapter(vipAdapter);
129 639ae8d6 Adam Menz
        }
130 6ecf99bb Adam Menz
131 6ecf99bb Adam Menz
        private void loadProtocolSpinner() {
132 6ecf99bb Adam Menz
                protocolSpinner = (Spinner) findViewById(R.id.edit_protocol_spinner);
133 6ecf99bb Adam Menz
                protocolSpinner.setOnItemSelectedListener(this);
134 6ecf99bb Adam Menz
                String protocolNames[] = new String[Protocol.getProtocols().size()]; 
135 6ecf99bb Adam Menz
                protocols = new Protocol[Protocol.getProtocols().size()];
136 6ecf99bb Adam Menz
137 6ecf99bb Adam Menz
                for(int i = 0; i < Protocol.getProtocols().size(); i++){
138 6ecf99bb Adam Menz
                        protocols[i] = Protocol.getProtocols().get(i);
139 6ecf99bb Adam Menz
                        protocolNames[i] = Protocol.getProtocols().get(i).getName();
140 6ecf99bb Adam Menz
                }
141 6ecf99bb Adam Menz
142 6ecf99bb Adam Menz
                ArrayAdapter<String> protocolAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, protocolNames);
143 6ecf99bb Adam Menz
                protocolAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
144 6ecf99bb Adam Menz
                protocolSpinner.setAdapter(protocolAdapter);
145 aeff0a62 Adam Menz
        }
146 aeff0a62 Adam Menz
        
147 6ecf99bb Adam Menz
        private void loadAlgorithmSpinner() {
148 6ecf99bb Adam Menz
                algorithmSpinner = (Spinner) findViewById(R.id.edit_algorithm_spinner);
149 6ecf99bb Adam Menz
                algorithmSpinner.setOnItemSelectedListener(this);
150 6ecf99bb Adam Menz
                String algorithmNames[] = new String[Algorithm.getAlgorithms().size()]; 
151 6ecf99bb Adam Menz
                algorithms = new Algorithm[Algorithm.getAlgorithms().size()];
152 6ecf99bb Adam Menz
                
153 6ecf99bb Adam Menz
                for(int i = 0; i < Algorithm.getAlgorithms().size(); i++){
154 6ecf99bb Adam Menz
                        algorithms[i] = Algorithm.getAlgorithms().get(i);
155 6ecf99bb Adam Menz
                        algorithmNames[i] = Algorithm.getAlgorithms().get(i).getName();
156 6ecf99bb Adam Menz
                }
157 6ecf99bb Adam Menz
158 6ecf99bb Adam Menz
                ArrayAdapter<String> algorithmAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, algorithmNames);
159 6ecf99bb Adam Menz
                algorithmAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
160 6ecf99bb Adam Menz
                algorithmSpinner.setAdapter(algorithmAdapter);
161 6ecf99bb Adam Menz
        }
162 aeff0a62 Adam Menz
163 aeff0a62 Adam Menz
        private void showAlert(String title, String message) {
164 aeff0a62 Adam Menz
                AlertDialog alert = new AlertDialog.Builder(this).create();
165 aeff0a62 Adam Menz
                alert.setTitle(title);
166 aeff0a62 Adam Menz
                alert.setMessage(message);
167 aeff0a62 Adam Menz
                alert.setButton("OK", new DialogInterface.OnClickListener() {
168 aeff0a62 Adam Menz
                        public void onClick(DialogInterface dialog, int which) {
169 aeff0a62 Adam Menz
                                return;
170 aeff0a62 Adam Menz
                        } }); 
171 aeff0a62 Adam Menz
                alert.show();
172 aeff0a62 Adam Menz
        }
173 aeff0a62 Adam Menz
}