View Javadoc

1   /**
2    *  BlueCove - Java library for Bluetooth
3    *  Copyright (C) 2006-2007 Vlad Skarzhevskyy
4    * 
5    *  Licensed to the Apache Software Foundation (ASF) under one
6    *  or more contributor license agreements.  See the NOTICE file
7    *  distributed with this work for additional information
8    *  regarding copyright ownership.  The ASF licenses this file
9    *  to you under the Apache License, Version 2.0 (the
10   *  "License"); you may not use this file except in compliance
11   *  with the License.  You may obtain a copy of the License at
12   *
13   *    http://www.apache.org/licenses/LICENSE-2.0
14   *
15   *  Unless required by applicable law or agreed to in writing,
16   *  software distributed under the License is distributed on an
17   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18   *  KIND, either express or implied.  See the License for the
19   *  specific language governing permissions and limitations
20   *  under the License.
21   *
22   *  @author vlads
23   *  @version $Id: BlueCoveTestConfigurationForm.java 2607 2008-12-17 23:51:33Z skarzhevskyy $
24   */
25  package net.sf.bluecove;
26  
27  import java.util.Enumeration;
28  import java.util.Vector;
29  
30  import javax.microedition.lcdui.Choice;
31  import javax.microedition.lcdui.ChoiceGroup;
32  import javax.microedition.lcdui.Command;
33  import javax.microedition.lcdui.CommandListener;
34  import javax.microedition.lcdui.Displayable;
35  import javax.microedition.lcdui.Form;
36  import javax.microedition.lcdui.Item;
37  import javax.microedition.lcdui.TextField;
38  
39  import org.bluecove.tester.log.Logger;
40  
41  import net.sf.bluecove.util.BooleanVar;
42  import net.sf.bluecove.util.IntVar;
43  import net.sf.bluecove.util.StringVar;
44  
45  public class BlueCoveTestConfigurationForm extends Form implements CommandListener {
46  
47  	Command okCommand = new Command("Ok", Command.OK, 2);
48  
49  	Command cancelCommand = new Command("Cancel", Command.CANCEL, 3);
50  
51  	Vector configItems = new Vector();
52  
53  	private static final String[] booleanStrings = new String[] { "on" };
54  
55  	private class ConfigurationComponent {
56  		String name;
57  
58  		Item guiComponent;
59  
60  		Object configField;
61  	}
62  
63  	BlueCoveTestConfigurationForm() {
64  		super("Configuration");
65  
66  		addCommand(okCommand);
67  		addCommand(cancelCommand);
68  		setCommandListener(this);
69  
70  		buildFields();
71  
72  	}
73  
74  	public void commandAction(Command c, Displayable d) {
75  		if (c == okCommand) {
76  			saveConfig();
77  			BlueCoveTestMIDlet.showMain();
78  		} else if (c == cancelCommand) {
79  			BlueCoveTestMIDlet.showMain();
80  		}
81  
82  	}
83  
84  	private void buildFields() {
85  		addConfig("deviceClassFilter", Configuration.deviceClassFilter);
86  		addConfig("discoverDevicesComputers", Configuration.discoverDevicesComputers);
87  		addConfig("discoverDevicesPhones", Configuration.discoverDevicesPhones);
88  		addConfig("getDeviceFriendlyName", Configuration.discoveryGetDeviceFriendlyName);
89  		addConfig("listedDevicesOnly", Configuration.listedDevicesOnly);
90  		// addConfig("discoveryUUID");
91  
92  		addConfig("useShortUUID", Configuration.useShortUUID);
93  		addConfig("useServiceClassExtUUID", Configuration.useServiceClassExtUUID);
94  		addConfig("clientContinuous", Configuration.clientContinuous);
95  		addConfig("clientContinuousDiscovery", Configuration.clientContinuousDiscovery);
96  		// addConfig("clientContinuousDiscoveryDevices");
97  		// addConfig("clientContinuousServicesSearch");
98  		// addConfig("clientTestConnections");
99  
100 		addConfig("srvConnectedAccept", Configuration.serverAcceptWhileConnected);
101 
102 		addConfig("authenticate", Configuration.authenticate);
103 		addConfig("encrypt", Configuration.encrypt);
104 		// addConfig("authorize");
105 		addConfig("RFCOMM", Configuration.testRFCOMM);
106 		addConfig("TEST_CASE_FIRST", Configuration.TEST_CASE_FIRST);
107 		addConfig("TEST_CASE_LAST", Configuration.TEST_CASE_LAST);
108 		addConfig("STERSS_TEST_CASE", Configuration.STERSS_TEST_CASE);
109 		addConfig("L2CAP", Configuration.testL2CAP);
110 		addConfig("authenticateOBEX", Configuration.authenticateOBEX);
111 		addConfig("tcp obex", Configuration.testServerOBEX_TCP);
112 		addConfig("test Srvc Attr", Configuration.testServiceAttributes);
113 		addConfig("test Ignore Broken Srv Attr", Configuration.testIgnoreNotWorkingServiceAttributes);
114 		addConfig("test All Srv Attr", Configuration.testAllServiceAttributes);
115 
116 	}
117 
118 	private void addConfig(String name, Object var) {
119 		ConfigurationComponent cc = new ConfigurationComponent();
120 		cc.configField = var;
121 		cc.name = name;
122 		if (var instanceof BooleanVar) {
123 			ChoiceGroup c = new ChoiceGroup(name, Choice.MULTIPLE, booleanStrings, null);
124 			c.setSelectedIndex(0, ((BooleanVar) var).booleanValue());
125 			cc.guiComponent = c;
126 		} else if (var instanceof StringVar) {
127 			cc.guiComponent = new TextField(name, var.toString(), 128, TextField.ANY);
128 		} else if (var instanceof IntVar) {
129 			cc.guiComponent = new TextField(name, var.toString(), 5, TextField.DECIMAL);
130 		} else {
131 			Logger.error("Unsupported type " + cc.name + " " + var.getClass().getName());
132 			return;
133 		}
134 		configItems.addElement(cc);
135 		append(cc.guiComponent);
136 	}
137 
138 	private void saveConfig() {
139 		for (Enumeration en = configItems.elements(); en.hasMoreElements();) {
140 			ConfigurationComponent cc = (ConfigurationComponent) en.nextElement();
141 			if (cc.configField instanceof BooleanVar) {
142 				((BooleanVar) cc.configField).setValue(((ChoiceGroup) cc.guiComponent).isSelected(0));
143 			} else if (cc.configField instanceof StringVar) {
144 				((StringVar) cc.configField).setValue(((TextField) cc.guiComponent).getString());
145 			} else if (cc.configField instanceof IntVar) {
146 				((IntVar) cc.configField).setValue(((TextField) cc.guiComponent).getString());
147 			}
148 		}
149 	}
150 
151 }