/** * BlueCove - Java library for Bluetooth * Copyright (C) 2006-2007 Vlad Skarzhevskyy * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * * @author vlads * @version $Id$ */ package net.sf.bluecove; import java.util.Enumeration; import java.util.Vector; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.TextField; import org.bluecove.tester.log.Logger; import net.sf.bluecove.util.BooleanVar; import net.sf.bluecove.util.IntVar; import net.sf.bluecove.util.StringVar; public class BlueCoveTestConfigurationForm extends Form implements CommandListener { Command okCommand = new Command("Ok", Command.OK, 2); Command cancelCommand = new Command("Cancel", Command.CANCEL, 3); Vector configItems = new Vector(); private static final String[] booleanStrings = new String[] { "on" }; private class ConfigurationComponent { String name; Item guiComponent; Object configField; } BlueCoveTestConfigurationForm() { super("Configuration"); addCommand(okCommand); addCommand(cancelCommand); setCommandListener(this); buildFields(); } public void commandAction(Command c, Displayable d) { if (c == okCommand) { saveConfig(); BlueCoveTestMIDlet.showMain(); } else if (c == cancelCommand) { BlueCoveTestMIDlet.showMain(); } } private void buildFields() { addConfig("deviceClassFilter", Configuration.deviceClassFilter); addConfig("discoverDevicesComputers", Configuration.discoverDevicesComputers); addConfig("discoverDevicesPhones", Configuration.discoverDevicesPhones); addConfig("getDeviceFriendlyName", Configuration.discoveryGetDeviceFriendlyName); addConfig("listedDevicesOnly", Configuration.listedDevicesOnly); // addConfig("discoveryUUID"); addConfig("useShortUUID", Configuration.useShortUUID); addConfig("useServiceClassExtUUID", Configuration.useServiceClassExtUUID); addConfig("clientContinuous", Configuration.clientContinuous); addConfig("clientContinuousDiscovery", Configuration.clientContinuousDiscovery); // addConfig("clientContinuousDiscoveryDevices"); // addConfig("clientContinuousServicesSearch"); // addConfig("clientTestConnections"); addConfig("srvConnectedAccept", Configuration.serverAcceptWhileConnected); addConfig("authenticate", Configuration.authenticate); addConfig("encrypt", Configuration.encrypt); // addConfig("authorize"); addConfig("RFCOMM", Configuration.testRFCOMM); addConfig("TEST_CASE_FIRST", Configuration.TEST_CASE_FIRST); addConfig("TEST_CASE_LAST", Configuration.TEST_CASE_LAST); addConfig("STERSS_TEST_CASE", Configuration.STERSS_TEST_CASE); addConfig("L2CAP", Configuration.testL2CAP); addConfig("authenticateOBEX", Configuration.authenticateOBEX); addConfig("tcp obex", Configuration.testServerOBEX_TCP); addConfig("test Srvc Attr", Configuration.testServiceAttributes); addConfig("test Ignore Broken Srv Attr", Configuration.testIgnoreNotWorkingServiceAttributes); addConfig("test All Srv Attr", Configuration.testAllServiceAttributes); } private void addConfig(String name, Object var) { ConfigurationComponent cc = new ConfigurationComponent(); cc.configField = var; cc.name = name; if (var instanceof BooleanVar) { ChoiceGroup c = new ChoiceGroup(name, Choice.MULTIPLE, booleanStrings, null); c.setSelectedIndex(0, ((BooleanVar) var).booleanValue()); cc.guiComponent = c; } else if (var instanceof StringVar) { cc.guiComponent = new TextField(name, var.toString(), 128, TextField.ANY); } else if (var instanceof IntVar) { cc.guiComponent = new TextField(name, var.toString(), 5, TextField.DECIMAL); } else { Logger.error("Unsupported type " + cc.name + " " + var.getClass().getName()); return; } configItems.addElement(cc); append(cc.guiComponent); } private void saveConfig() { for (Enumeration en = configItems.elements(); en.hasMoreElements();) { ConfigurationComponent cc = (ConfigurationComponent) en.nextElement(); if (cc.configField instanceof BooleanVar) { ((BooleanVar) cc.configField).setValue(((ChoiceGroup) cc.guiComponent).isSelected(0)); } else if (cc.configField instanceof StringVar) { ((StringVar) cc.configField).setValue(((TextField) cc.guiComponent).getString()); } else if (cc.configField instanceof IntVar) { ((IntVar) cc.configField).setValue(((TextField) cc.guiComponent).getString()); } } } }