Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / AddNodeActivity.java @ b722cab3

History | View | Annotate | Download (4.6 kB)

1 96a8e632 Adam Menz
package com.rackspacecloud.android;
2 96a8e632 Adam Menz
3 96a8e632 Adam Menz
import android.content.Intent;
4 96a8e632 Adam Menz
import android.os.Bundle;
5 b722cab3 Adam Menz
import android.util.Log;
6 96a8e632 Adam Menz
import android.view.View;
7 96a8e632 Adam Menz
import android.view.View.OnClickListener;
8 96a8e632 Adam Menz
import android.view.Window;
9 96a8e632 Adam Menz
import android.widget.AdapterView;
10 96a8e632 Adam Menz
import android.widget.AdapterView.OnItemSelectedListener;
11 96a8e632 Adam Menz
import android.widget.ArrayAdapter;
12 96a8e632 Adam Menz
import android.widget.Button;
13 96a8e632 Adam Menz
import android.widget.Spinner;
14 96a8e632 Adam Menz
import android.widget.EditText;
15 b722cab3 Adam Menz
import android.widget.TextView;
16 96a8e632 Adam Menz
17 b722cab3 Adam Menz
public class AddNodeActivity extends CloudActivity{
18 96a8e632 Adam Menz
19 96a8e632 Adam Menz
        private final String[] CONDITIONS = {"Enabled", "Disabled", "Draining"};
20 96a8e632 Adam Menz
        private String[] ipAddresses;
21 b722cab3 Adam Menz
        private String name;
22 96a8e632 Adam Menz
        private String selectedPort;
23 96a8e632 Adam Menz
        private String selectedIp;
24 b722cab3 Adam Menz
        private String selectedWeight;
25 b722cab3 Adam Menz
        private boolean weighted;
26 96a8e632 Adam Menz
        private String selectedCondition;
27 b722cab3 Adam Menz
        private Spinner conditionSpinner;
28 b722cab3 Adam Menz
        private Spinner ipAddressSpinner;
29 b722cab3 Adam Menz
        private EditText weightText;
30 96a8e632 Adam Menz
        
31 96a8e632 Adam Menz
        public void onCreate(Bundle savedInstanceState) {
32 96a8e632 Adam Menz
                super.onCreate(savedInstanceState);
33 96a8e632 Adam Menz
                requestWindowFeature(Window.FEATURE_NO_TITLE);
34 96a8e632 Adam Menz
                setContentView(R.layout.addnode);
35 96a8e632 Adam Menz
                ipAddresses = (String[]) this.getIntent().getExtras().get("ipAddresses");
36 b722cab3 Adam Menz
                name = (String) this.getIntent().getExtras().get("name");
37 b722cab3 Adam Menz
                weighted = (Boolean) this.getIntent().getExtras().get("weighted");
38 96a8e632 Adam Menz
                restoreState(savedInstanceState);
39 b722cab3 Adam Menz
        } 
40 b722cab3 Adam Menz
        
41 b722cab3 Adam Menz
        protected void restoreState(Bundle state) {
42 b722cab3 Adam Menz
                super.restoreState(state);
43 b722cab3 Adam Menz
                setupInputs();
44 b722cab3 Adam Menz
        }
45 b722cab3 Adam Menz
        
46 b722cab3 Adam Menz
        private void setupInputs(){
47 b722cab3 Adam Menz
                
48 b722cab3 Adam Menz
                ((TextView)findViewById(R.id.node_name)).setText(name);
49 b722cab3 Adam Menz
                
50 b722cab3 Adam Menz
                weightText = (EditText) findViewById(R.id.node_weight_text);
51 b722cab3 Adam Menz
                
52 b722cab3 Adam Menz
                //if algorithm is not weighted then then node's weight will be null
53 b722cab3 Adam Menz
                if(!weighted){
54 b722cab3 Adam Menz
                        TextView weightLabel = (TextView) findViewById(R.id.node_weight_label);
55 b722cab3 Adam Menz
                        weightLabel.setVisibility(View.GONE);
56 b722cab3 Adam Menz
                        weightText.setVisibility(View.GONE);
57 b722cab3 Adam Menz
                }
58 b722cab3 Adam Menz
                
59 96a8e632 Adam Menz
                loadConditionSpinner();
60 96a8e632 Adam Menz
                loadIpSpinner();
61 96a8e632 Adam Menz
                setUpButton();
62 96a8e632 Adam Menz
                
63 96a8e632 Adam Menz
        }
64 96a8e632 Adam Menz
        
65 96a8e632 Adam Menz
        private void setUpButton(){
66 96a8e632 Adam Menz
                Button submit = (Button) findViewById(R.id.add_node_button);
67 96a8e632 Adam Menz
                submit.setOnClickListener(new OnClickListener() {
68 96a8e632 Adam Menz
                        
69 96a8e632 Adam Menz
                        @Override
70 96a8e632 Adam Menz
                        public void onClick(View v) {
71 96a8e632 Adam Menz
                                selectedPort = ((EditText)findViewById(R.id.node_port_text)).getText().toString();
72 b722cab3 Adam Menz
                                selectedWeight = weightText.getText().toString();
73 96a8e632 Adam Menz
                                if(!validPort()){
74 96a8e632 Adam Menz
                                        showAlert("Error", "Must have a protocol port number that is between 1 and 65535.");
75 b722cab3 Adam Menz
                                } else if(!(weightText.getVisibility() == View.GONE || (weightText.getVisibility() != View.GONE && validWeight(selectedWeight)))){
76 b722cab3 Adam Menz
                                        showAlert("Error", "Weight must be between 1 and 100.");
77 96a8e632 Adam Menz
                                }
78 b722cab3 Adam Menz
                                
79 96a8e632 Adam Menz
                                else{
80 96a8e632 Adam Menz
                                        Intent data = new Intent();
81 96a8e632 Adam Menz
                                        data.putExtra("nodeIp", selectedIp);
82 96a8e632 Adam Menz
                                        data.putExtra("nodePort", selectedPort);
83 96a8e632 Adam Menz
                                        data.putExtra("nodeCondition", selectedCondition);
84 b722cab3 Adam Menz
                                        Log.d("info", "saving the weight as " + selectedWeight);
85 b722cab3 Adam Menz
                                        data.putExtra("nodeWeight", selectedWeight);
86 4f9d1a69 Adam Menz
                                        setResult(RESULT_OK, data);
87 96a8e632 Adam Menz
                                        finish();
88 96a8e632 Adam Menz
                                }
89 96a8e632 Adam Menz
                                
90 96a8e632 Adam Menz
                        }
91 96a8e632 Adam Menz
                });
92 96a8e632 Adam Menz
        }
93 96a8e632 Adam Menz
        
94 96a8e632 Adam Menz
        public void onBackPressed(){
95 4f9d1a69 Adam Menz
                setResult(RESULT_CANCELED);
96 96a8e632 Adam Menz
                finish();
97 96a8e632 Adam Menz
        }
98 96a8e632 Adam Menz
        
99 96a8e632 Adam Menz
        private void loadIpSpinner(){
100 96a8e632 Adam Menz
                ipAddressSpinner = (Spinner) findViewById(R.id.node_ip_spinner);
101 96a8e632 Adam Menz
                ArrayAdapter<String> ipAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ipAddresses);
102 96a8e632 Adam Menz
                ipAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
103 96a8e632 Adam Menz
                ipAddressSpinner.setAdapter(ipAdapter);
104 96a8e632 Adam Menz
                
105 96a8e632 Adam Menz
                ipAddressSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
106 96a8e632 Adam Menz
107 96a8e632 Adam Menz
                        @Override
108 96a8e632 Adam Menz
                        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
109 96a8e632 Adam Menz
                                selectedIp = ipAddresses[pos];        
110 96a8e632 Adam Menz
                        }
111 96a8e632 Adam Menz
112 96a8e632 Adam Menz
                        @Override
113 96a8e632 Adam Menz
                        public void onNothingSelected(AdapterView<?> arg0) {
114 96a8e632 Adam Menz
                                                        
115 96a8e632 Adam Menz
                        }
116 96a8e632 Adam Menz
                        
117 96a8e632 Adam Menz
                });
118 96a8e632 Adam Menz
        }
119 96a8e632 Adam Menz
        
120 96a8e632 Adam Menz
        private void loadConditionSpinner(){
121 96a8e632 Adam Menz
                conditionSpinner = (Spinner) findViewById(R.id.node_condition_spinner);
122 96a8e632 Adam Menz
                
123 96a8e632 Adam Menz
                ArrayAdapter<String> conditionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, CONDITIONS);
124 96a8e632 Adam Menz
                conditionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
125 96a8e632 Adam Menz
                conditionSpinner.setAdapter(conditionAdapter);
126 96a8e632 Adam Menz
                
127 96a8e632 Adam Menz
                conditionSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
128 96a8e632 Adam Menz
129 96a8e632 Adam Menz
                        @Override
130 96a8e632 Adam Menz
                        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
131 96a8e632 Adam Menz
                                selectedCondition = CONDITIONS[pos];        
132 96a8e632 Adam Menz
                        }
133 96a8e632 Adam Menz
134 96a8e632 Adam Menz
                        @Override
135 96a8e632 Adam Menz
                        public void onNothingSelected(AdapterView<?> arg0) {
136 96a8e632 Adam Menz
                                                        
137 96a8e632 Adam Menz
                        }
138 96a8e632 Adam Menz
                        
139 96a8e632 Adam Menz
                });
140 96a8e632 Adam Menz
        }
141 96a8e632 Adam Menz
        
142 96a8e632 Adam Menz
        private boolean validPort(){
143 96a8e632 Adam Menz
                return !selectedPort.equals("") && Integer.valueOf(selectedPort) > 0 && Integer.valueOf(selectedPort) < 65536;
144 96a8e632 Adam Menz
        }
145 96a8e632 Adam Menz
        
146 b722cab3 Adam Menz
        private Boolean validWeight(String weight){
147 b722cab3 Adam Menz
                if(weight.equals("")){
148 b722cab3 Adam Menz
                        return false;
149 b722cab3 Adam Menz
                }
150 b722cab3 Adam Menz
                else{
151 b722cab3 Adam Menz
                        int w = Integer.valueOf(weight);
152 b722cab3 Adam Menz
                        return w >= 1 && w <= 100 ;
153 b722cab3 Adam Menz
                }
154 96a8e632 Adam Menz
        }
155 96a8e632 Adam Menz
156 96a8e632 Adam Menz
}