/[svn]/jsampler/trunk/src/org/jsampler/android/view/std/ChooseBackendActivity.java
ViewVC logotype

Contents of /jsampler/trunk/src/org/jsampler/android/view/std/ChooseBackendActivity.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2302 - (show annotations) (download)
Thu Dec 15 23:13:30 2011 UTC (12 years, 4 months ago) by iliev
File size: 6443 byte(s)
* Initial support for Android platforms (only sampler channel
  manipulation for now - see the screenshots on the website)

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 }

  ViewVC Help
Powered by ViewVC