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 | } |