1 |
/* |
2 |
* JSampler - a java front-end for LinuxSampler |
3 |
* |
4 |
* Copyright (C) 2011 Grigor Iliev <grigor@grigoriliev.com> |
5 |
* |
6 |
* This file is part of JSampler. |
7 |
* |
8 |
* JSampler is free software; you can redistribute it and/or modify |
9 |
* it under the terms of the GNU General Public License version 2 |
10 |
* as published by the Free Software Foundation. |
11 |
* |
12 |
* JSampler is distributed in the hope that it will be useful, |
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
* GNU General Public License for more details. |
16 |
* |
17 |
* You should have received a copy of the GNU General Public License |
18 |
* along with JSampler; if not, write to the Free Software |
19 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
20 |
* MA 02111-1307 USA |
21 |
*/ |
22 |
|
23 |
package org.jsampler.android.view.std; |
24 |
|
25 |
import org.jsampler.CC; |
26 |
import org.jsampler.JSPrefs; |
27 |
import org.jsampler.Server; |
28 |
import org.jsampler.android.R; |
29 |
import org.jsampler.android.view.ServerListAdapter; |
30 |
|
31 |
import android.app.Activity; |
32 |
import android.app.Dialog; |
33 |
import android.content.Intent; |
34 |
import android.database.DataSetObserver; |
35 |
import android.os.Bundle; |
36 |
import android.view.View; |
37 |
import android.widget.AdapterView; |
38 |
import android.widget.Button; |
39 |
import android.widget.ListView; |
40 |
|
41 |
import static org.jsampler.JSPrefs.SERVER_INDEX; |
42 |
|
43 |
public class ChooseBackendActivity extends Activity { |
44 |
public static final int DLG_ADD_BACKEND = 1; |
45 |
|
46 |
/** Called when the activity is first created. */ |
47 |
@Override |
48 |
public void onCreate(Bundle savedInstanceState) { |
49 |
super.onCreate(savedInstanceState); |
50 |
setContentView(R.layout.choose_backend); |
51 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
52 |
lv.setItemsCanFocus(false); |
53 |
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); |
54 |
ServerListAdapter sla = new ServerListAdapter(); |
55 |
lv.setAdapter(sla); |
56 |
|
57 |
sla.registerDataSetObserver(new DataSetObserver() { |
58 |
public void onChanged() { updateButtonStates(); } |
59 |
public void onInvalidated() { updateButtonStates(); } |
60 |
}); |
61 |
|
62 |
lv.setOnItemClickListener(new ListView.OnItemClickListener() { |
63 |
@Override |
64 |
public void |
65 |
onItemClick(AdapterView<?> parent, View view, int position, long id) { |
66 |
updateButtonStates(); |
67 |
} |
68 |
}); |
69 |
|
70 |
/*lv.setOnItemSelectedListener(new ListView.OnItemSelectedListener() { |
71 |
public void |
72 |
onItemSelected(AdapterView<?> parent, View view, int position, long id) { |
73 |
|
74 |
} |
75 |
|
76 |
public void |
77 |
onNothingSelected (AdapterView<?> parent) { |
78 |
|
79 |
} |
80 |
});*/ |
81 |
|
82 |
int i = preferences().getIntProperty(JSPrefs.SERVER_INDEX); |
83 |
if(i >= 0 && i < CC.getServerList().getServerCount()) { |
84 |
lv.setItemChecked(i, true); |
85 |
} |
86 |
|
87 |
updateButtonStates(); |
88 |
|
89 |
installButtonListeners(); |
90 |
} |
91 |
|
92 |
private void |
93 |
installButtonListeners() { |
94 |
Button btn = (Button)findViewById(R.id.choose_backend_btn_add); |
95 |
btn.setOnClickListener(new View.OnClickListener() { |
96 |
public void onClick(View v) { |
97 |
showDialog(DLG_ADD_BACKEND); |
98 |
} |
99 |
}); |
100 |
|
101 |
btn = (Button)findViewById(R.id.choose_backend_btn_remove); |
102 |
btn.setOnClickListener(new View.OnClickListener() { |
103 |
public void onClick(View v) { |
104 |
removeSelectedBackend(); |
105 |
} |
106 |
}); |
107 |
|
108 |
btn = (Button)findViewById(R.id.choose_backend_btn_up); |
109 |
btn.setOnClickListener(new View.OnClickListener() { |
110 |
public void onClick(View v) { |
111 |
moveSelectedBackendUp(); |
112 |
} |
113 |
}); |
114 |
|
115 |
btn = (Button)findViewById(R.id.choose_backend_btn_down); |
116 |
btn.setOnClickListener(new View.OnClickListener() { |
117 |
public void onClick(View v) { |
118 |
moveSelectedBackendDown(); |
119 |
} |
120 |
}); |
121 |
|
122 |
btn = (Button)findViewById(R.id.choose_backend_btn_connect); |
123 |
btn.setOnClickListener(new View.OnClickListener() { |
124 |
public void onClick(View v) { |
125 |
connect(); |
126 |
} |
127 |
}); |
128 |
} |
129 |
|
130 |
private void |
131 |
removeSelectedBackend() { |
132 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
133 |
int pos = lv.getCheckedItemPosition(); |
134 |
if (pos == ListView.INVALID_POSITION) return; |
135 |
lv.setItemChecked(pos, false); |
136 |
CC.getServerList().removeServer(pos); |
137 |
((ServerListAdapter)lv.getAdapter()).notifyDataSetChanged(); |
138 |
} |
139 |
|
140 |
private void |
141 |
moveSelectedBackendUp() { |
142 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
143 |
int pos = lv.getCheckedItemPosition(); |
144 |
if (pos == ListView.INVALID_POSITION || pos < 1) return; |
145 |
lv.setItemChecked(pos, false); |
146 |
CC.getServerList().moveServerUp(CC.getServerList().getServer(pos)); |
147 |
lv.setItemChecked(pos - 1, true); |
148 |
((ServerListAdapter)lv.getAdapter()).notifyDataSetChanged(); |
149 |
} |
150 |
|
151 |
private void |
152 |
moveSelectedBackendDown() { |
153 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
154 |
int pos = lv.getCheckedItemPosition(); |
155 |
if (pos == ListView.INVALID_POSITION || pos >= lv.getAdapter().getCount() - 1) return; |
156 |
CC.getServerList().moveServerDown(CC.getServerList().getServer(pos)); |
157 |
lv.setItemChecked(pos + 1, true); |
158 |
((ServerListAdapter)lv.getAdapter()).notifyDataSetChanged(); |
159 |
} |
160 |
|
161 |
private void |
162 |
connect() { |
163 |
Server server = null; |
164 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
165 |
int pos = lv.getCheckedItemPosition(); |
166 |
if (pos != ListView.INVALID_POSITION) { |
167 |
preferences().setIntProperty(SERVER_INDEX, pos); |
168 |
server = CC.getServerList().getServer(pos); |
169 |
} |
170 |
|
171 |
Intent i = getIntent(); |
172 |
i.putExtra("org.jsampler.SomeSerializableObject", server); |
173 |
setResult(RESULT_OK, i); |
174 |
finish(); |
175 |
} |
176 |
|
177 |
private void |
178 |
updateButtonStates() { |
179 |
ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
180 |
boolean b = lv.getCheckedItemCount() > 0; |
181 |
((Button)findViewById(R.id.choose_backend_btn_connect)).setEnabled(b); |
182 |
|
183 |
boolean b2 = b && lv.getAdapter().getCount() > 1; |
184 |
((Button)findViewById(R.id.choose_backend_btn_remove)).setEnabled(b2); |
185 |
|
186 |
b2 = b && lv.getCheckedItemPosition() != 0; |
187 |
((Button)findViewById(R.id.choose_backend_btn_up)).setEnabled(b2); |
188 |
|
189 |
b2 = b && lv.getCheckedItemPosition() < lv.getAdapter().getCount() - 1; |
190 |
((Button)findViewById(R.id.choose_backend_btn_down)).setEnabled(b2); |
191 |
} |
192 |
|
193 |
private static JSPrefs |
194 |
preferences() { return CC.getViewConfig().preferences(); } |
195 |
|
196 |
protected Dialog onCreateDialog(int id) { |
197 |
Dialog dialog; |
198 |
|
199 |
switch(id) { |
200 |
case DLG_ADD_BACKEND: |
201 |
dialog = new AddBackendDlg(this); |
202 |
break; |
203 |
default: |
204 |
dialog = null; |
205 |
} |
206 |
|
207 |
return dialog; |
208 |
} |
209 |
|
210 |
@Override |
211 |
protected void |
212 |
onDestroy() { |
213 |
final ListView lv = (ListView)findViewById(R.id.choose_backend_list); |
214 |
((ServerListAdapter)lv.getAdapter()).uninstall(); |
215 |
super.onDestroy(); |
216 |
|
217 |
} |
218 |
} |