blob: 4a08df110f828e85e08ec2f692b8946ad1a96b77 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2008 IBM Corporation and Others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Masahide WASHIZAWA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.visualization.engines.voicebrowser.internal;
import org.eclipse.actf.visualization.engines.voicebrowser.Context;
import org.eclipse.actf.visualization.engines.voicebrowser.JWATController;
import org.eclipse.actf.visualization.engines.voicebrowser.Packet;
import org.eclipse.actf.visualization.engines.voicebrowser.PacketCollection;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class StaticINPUTRenderer implements IElementRenderer {
/**
* @see org.eclipse.actf.visualization.engines.voicebrowser.internal.IElementRenderer#getPacketCollectionIn(Element, Context)
*/
public PacketCollection getPacketCollectionIn(
Element element,
Context curContext,
String url,
MessageCollection mc) {
try {
setContextIn(element, curContext);
NamedNodeMap attrs = element.getAttributes();
String type = null, result = null;
Node typeNode = attrs.getNamedItem("type");
if (typeNode != null) {
type = typeNode.getNodeValue();
if (type.length() > 0) {
if (type.equals("image")) {
result = inputTypeImage(element, attrs, mc, url);
} else if (type.equals("text")) {
result = inputTypeText(element, attrs, mc, url);
} else if (type.equals("submit")) {
result = inputTypeSubmit(element, attrs, mc, url);
} else if (type.equals("reset")) {
result = inputTypeReset(element, attrs, mc, url);
} else if (type.equals("button")) {
result = inputTypeButton(element, attrs, mc, url);
} else if (type.equals("password")) {
result = inputTypePassword(element, attrs, mc, url);
} else if (type.equals("checkbox")) {
result = inputTypeCheckbox(element, attrs, mc, url);
} else if (type.equals("radio")) {
result = inputTypeRadio(element, attrs, mc, url);
} else if (type.equals("file")) {
result = inputTypeFile(element, attrs, mc, url);
} else if (type.equals("hidden")) {
result = inputTypeHidden(element, attrs, mc, url);
}
}
} else {
result = inputTypeText(element, attrs, mc, url);
}
if (OutLoud.jwat_mode == JWATController.JAWS_MODE) {
curContext.setLineDelimiter(true);
curContext.setStartSelect(true);
}
if (result != null) {
result = result.trim();
return new PacketCollection(
new Packet(element, result, curContext, true));
} else {
return null;
}
} catch (NullPointerException npe) {
return null;
}
}
/**
* Method inputTypeImage.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeImage(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
String value = null;
Node valueNode = attrs.getNamedItem("alt");
if (valueNode != null) {
value = valueNode.getNodeValue();
if (value != null && value.length() > 0) {
result =
OutLoud.buildResultString(
mc,
url,
element,
"image",
"hasstr",
"name=str1",
value);
if (result == null)
result = "[" + value + ": Image button.]";
}
}
if (value == null) {
valueNode = attrs.getNamedItem("src");
if (valueNode != null) {
value = valueNode.getNodeValue();
int scount = 0;
for (int j = 0; j < value.length(); j++)
if (value.charAt(j) == '/')
scount++;
if (scount >= 2) {
for (int j = 0, cnt = 0; j < value.length(); j++) {
if (value.charAt(j) == '/') {
cnt++;
if (cnt == scount - 1)
value = value.substring(j + 1, value.length());
}
}
}
}
if (value != null && value.length() > 0) {
result =
OutLoud.buildResultString(
mc,
url,
element,
"image",
"hasstr",
"name=str",
value);
if (result == null)
result = "[" + value + ": Image button.]";
} else {
result =
OutLoud.buildResultString(
mc,
url,
element,
"image",
"nostr");
if (result == null)
result = "[Image button.]";
}
}
return result;
}
/**
* Method inputTypeText.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeText(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result =
OutLoud.buildResultString(mc, url, element, "text", null);
if (result == null)
result = "[Text.]";
return result;
}
/**
* Method inputTypeSubmit.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeSubmit(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
String value = null;
Node valueNode = attrs.getNamedItem("VALUE");
if (valueNode != null)
value = valueNode.getNodeValue();
if (value != null && value.length() > 0) {
result =
OutLoud.buildResultString(
mc,
url,
element,
"submit",
"hasstr",
"name=str1",
value);
if (result == null)
result = "[" + value + ": Submit button.]";
} else {
result =
OutLoud.buildResultString(mc, url, element, "submit", "nostr");
if (result == null)
result = "[Submit button.]";
}
return result;
}
/**
* Method inputTypeReset.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeReset(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
String value = null;
Node valueNode = attrs.getNamedItem("VALUE");
if (valueNode != null)
value = valueNode.getNodeValue();
if (value != null && value.length() > 0) {
result =
OutLoud.buildResultString(
mc,
url,
element,
"reset",
"hasstr",
"name=str1",
value);
if (result == null)
result = "[" + value + ": Reset button.]";
} else {
result =
OutLoud.buildResultString(mc, url, element, "reset", "nostr");
if (result == null)
result = "[Reset button.]";
}
return result;
}
/**
* Method inputTypeButton.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeButton(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
String value = null;
Node valueNode = attrs.getNamedItem("VALUE");
if (valueNode != null)
value = valueNode.getNodeValue();
if (value != null && value.length() > 0) {
result =
OutLoud.buildResultString(
mc,
url,
element,
"button",
"hasstr",
"name=str1",
value);
if (result == null)
result = "[" + value + ": Button.]";
} else {
result =
OutLoud.buildResultString(mc, url, element, "button", "nostr");
if (result == null)
result = "[Button.]";
}
return result;
}
/**
* Method inputTypePassword.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypePassword(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result =
OutLoud.buildResultString(mc, url, element, "password", null);
if (result == null)
result = "[Password.]";
return result;
}
/**
* Method inputTypeCheckbox.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeCheckbox(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
Node cnode = attrs.getNamedItem("checked");
if (cnode == null) {
result =
OutLoud.buildResultString(mc, url, element, "checkbox", "off");
if (result == null)
result = "[Not Checked.]";
} else {
result =
OutLoud.buildResultString(mc, url, element, "checkbox", "on");
if (result == null)
result = "[Checked.]";
}
return result;
}
/**
* Method inputTypeRadio.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeRadio(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result = null;
Node cnode = attrs.getNamedItem("checked");
if (cnode == null) {
result =
OutLoud.buildResultString(mc, url, element, "radio", "off");
if (result == null)
result = "[Not Pressed.]";
} else {
result = OutLoud.buildResultString(mc, url, element, "radio", "on");
if (result == null)
result = "[Pressed.]";
}
return result;
}
/**
* Method inputTypeFile.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeFile(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
String result =
OutLoud.buildResultString(mc, url, element, "file", null);
if (result == null)
result = "[Browse button.]";
return result;
}
/**
* Method inputTypeHidden.
* @param nodeName
* @param attrs
* @param mc
* @return String
*/
private String inputTypeHidden(
Element element,
NamedNodeMap attrs,
MessageCollection mc,
String url) {
return null;
}
/**
* @see org.eclipse.actf.visualization.engines.voicebrowser.internal.IElementRenderer#getPacketCollectionOut(Element, Context)
*/
public PacketCollection getPacketCollectionOut(
Element element,
Context curContext,
String url,
MessageCollection mc) {
setContextOut(element, curContext);
return null;
}
/**
* @see org.eclipse.actf.visualization.engines.voicebrowser.internal.IElementRenderer#setContextIn(Context)
*/
public void setContextIn(Element element, Context curContext) {
curContext.setGoChild(true);
try {
NamedNodeMap attrs = element.getAttributes();
String type = null;
Node typeNode = attrs.getNamedItem("type");
if (typeNode != null) {
type = typeNode.getNodeValue();
if (type.length() > 0) {
if (type.equals("submit") || type.equals("reset")) {
curContext.setLineDelimiter(true);
} else {
curContext.setLineDelimiter(false);
}
} else {
curContext.setLineDelimiter(false);
}
} else {
curContext.setLineDelimiter(false);
}
} catch (NullPointerException npe) {
npe.printStackTrace();
}
curContext.setLinkTag(true);
}
/**
* @see org.eclipse.actf.visualization.engines.voicebrowser.internal.IElementRenderer#setContextOut(Context)
*/
public void setContextOut(Element element, Context curContext) {
curContext.setGoChild(true);
curContext.setLineDelimiter(true);
curContext.setLinkTag(false);
}
}