Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (6.1 kB)

1
package com.rackspacecloud.android;
2

    
3
import com.rackspace.cloud.loadbalancer.api.client.Algorithm;
4
import com.rackspace.cloud.loadbalancer.api.client.Protocol;
5
import com.rackspace.cloud.servers.api.client.Server;
6

    
7
import android.app.Activity;
8
import android.app.AlertDialog;
9
import android.content.DialogInterface;
10
import android.content.Intent;
11
import android.os.Bundle;
12
import android.view.View;
13
import android.view.View.OnClickListener;
14
import android.widget.AdapterView;
15
import android.widget.AdapterView.OnItemSelectedListener;
16
import android.widget.ArrayAdapter;
17
import android.widget.Button;
18
import android.widget.EditText;
19
import android.widget.Spinner;
20

    
21
public class AddLoadBalancerActivity extends Activity implements OnItemSelectedListener {
22

    
23
        //TODO Shared Virtual IP (not in API though?)
24
        private static final String[] VIP_TYPES = {"Public", "ServiceNet"};
25
        private static final String[] REGIONS = {"ORD", "DFW"};
26
        
27
        private Protocol[] protocols;
28
        private Algorithm[] algorithms;
29
        private Spinner protocolSpinner;
30
        private Spinner algorithmSpinner;
31
        private Spinner vipSpinner;
32
        private Spinner regionSpinner;
33
        private EditText portText;
34
        private Protocol selectedProtocol;
35
        private Algorithm selectedAlgorithm;
36
        private String selectedVipType;
37
        private String selectedRegion;
38
        private String selectedName;
39
        private String selectedPort;
40

    
41
        @Override
42
        public void onCreate(Bundle savedInstanceState) {
43
                super.onCreate(savedInstanceState);
44
                setContentView(R.layout.view_add_loadbalancer);
45
                restoreState(savedInstanceState);
46
        }
47

    
48
        private void restoreState(Bundle state) {
49
                portText = (EditText)findViewById(R.id.edit_port_text);
50
                loadProtocolSpinner();
51
                loadAlgorithmSpinner();
52
                loadVipSpinner();
53
                loadRegionSpinner();
54
                setUpButton();
55
        }
56

    
57
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
58
                if (parent == protocolSpinner) {
59
                        selectedProtocol = protocols[position];
60
                        portText.setText(protocols[position].getPort());
61
                } 
62
                else if (parent == algorithmSpinner){
63
                        selectedAlgorithm = algorithms[position];
64
                }
65
                else if (parent == vipSpinner){
66
                        selectedVipType = VIP_TYPES[position];
67
                }
68
                else if (parent == regionSpinner){
69
                        selectedRegion = REGIONS[position];
70
                }
71
        }
72

    
73
        public void onNothingSelected(AdapterView<?> parent) {
74

    
75
        }
76
        
77
        private void setUpButton(){
78
                Button addNodes = (Button) findViewById(R.id.add_nodes_button);
79
                addNodes.setOnClickListener(new OnClickListener() {
80
                        
81
                        @Override
82
                        public void onClick(View v) {
83
                                selectedName = ((EditText)findViewById(R.id.edit_lb_name_text)).getText().toString();
84
                                selectedPort = ((EditText)findViewById(R.id.edit_port_text)).getText().toString();
85
                                if(!validName()){
86
                                        showAlert("Error", "Load balancer name cannot be blank.");
87
                                }
88
                                else if(!validPort()){
89
                                        showAlert("Error", "Must have a protocol port number that is between 1 and 65535.");
90
                                }
91
                                else{
92
                                        Intent viewIntent = new Intent(getApplicationContext(), AddNodesActivity.class);
93
                                        viewIntent.putExtra("name", selectedName);
94
                                        viewIntent.putExtra("protocol", selectedProtocol);
95
                                        viewIntent.putExtra("port", selectedPort);
96
                                        viewIntent.putExtra("vip", selectedVipType);
97
                                        viewIntent.putExtra("algorithm", selectedAlgorithm);
98
                                        viewIntent.putExtra("region", selectedRegion);
99
                                        startActivity(viewIntent);
100
                                }
101
                        }
102
                });
103
        }
104
        
105
        private boolean validName(){
106
                return !selectedName.equals("");
107
        }
108
        
109
        private boolean validPort(){
110
                return !selectedPort.equals("") && Integer.valueOf(selectedPort) > 0 && Integer.valueOf(selectedPort) < 65536;
111
        }
112
        
113
        private void loadRegionSpinner() {
114
                regionSpinner = (Spinner) findViewById(R.id.edit_region_spinner);
115
                regionSpinner.setOnItemSelectedListener(this);
116

    
117
                ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, REGIONS);
118
                regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
119
                regionSpinner.setAdapter(regionAdapter);
120
        }
121
        
122
        private void loadVipSpinner() {
123
                vipSpinner = (Spinner) findViewById(R.id.edit_vip_spinner);
124
                vipSpinner.setOnItemSelectedListener(this);
125

    
126
                ArrayAdapter<String> vipAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, VIP_TYPES);
127
                vipAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
128
                vipSpinner.setAdapter(vipAdapter);
129
        }
130

    
131
        private void loadProtocolSpinner() {
132
                protocolSpinner = (Spinner) findViewById(R.id.edit_protocol_spinner);
133
                protocolSpinner.setOnItemSelectedListener(this);
134
                String protocolNames[] = new String[Protocol.getProtocols().size()]; 
135
                protocols = new Protocol[Protocol.getProtocols().size()];
136

    
137
                for(int i = 0; i < Protocol.getProtocols().size(); i++){
138
                        protocols[i] = Protocol.getProtocols().get(i);
139
                        protocolNames[i] = Protocol.getProtocols().get(i).getName();
140
                }
141

    
142
                ArrayAdapter<String> protocolAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, protocolNames);
143
                protocolAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
144
                protocolSpinner.setAdapter(protocolAdapter);
145
        }
146
        
147
        private void loadAlgorithmSpinner() {
148
                algorithmSpinner = (Spinner) findViewById(R.id.edit_algorithm_spinner);
149
                algorithmSpinner.setOnItemSelectedListener(this);
150
                String algorithmNames[] = new String[Algorithm.getAlgorithms().size()]; 
151
                algorithms = new Algorithm[Algorithm.getAlgorithms().size()];
152
                
153
                for(int i = 0; i < Algorithm.getAlgorithms().size(); i++){
154
                        algorithms[i] = Algorithm.getAlgorithms().get(i);
155
                        algorithmNames[i] = Algorithm.getAlgorithms().get(i).getName();
156
                }
157

    
158
                ArrayAdapter<String> algorithmAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, algorithmNames);
159
                algorithmAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
160
                algorithmSpinner.setAdapter(algorithmAdapter);
161
        }
162

    
163
        private void showAlert(String title, String message) {
164
                AlertDialog alert = new AlertDialog.Builder(this).create();
165
                alert.setTitle(title);
166
                alert.setMessage(message);
167
                alert.setButton("OK", new DialogInterface.OnClickListener() {
168
                        public void onClick(DialogInterface dialog, int which) {
169
                                return;
170
                        } }); 
171
                alert.show();
172
        }
173
}