Add support for multiline text fields.

This commit is contained in:
Michael Jumper
2013-10-30 23:43:30 -07:00
parent afb8474c28
commit a920199ab7
6 changed files with 75 additions and 6 deletions

View File

@@ -58,7 +58,13 @@ public class ProtocolParameter {
* An enumerated parameter, whose legal values are fully enumerated
* by a provided, finite list.
*/
ENUM
ENUM,
/**
* A text parameter that can span more than one line.
*/
MULTILINE
}
/**

View File

@@ -166,6 +166,11 @@ public class List extends AuthenticatingHttpServlet {
xml.writeAttribute("type", "enum");
break;
// Multiline parameter
case MULTILINE:
xml.writeAttribute("type", "multiline");
break;
// If unknown, fail explicitly
default:
throw new UnsupportedOperationException(

View File

@@ -61,6 +61,10 @@ public class ParamTagHandler implements TagHandler {
else if ("enum".equals(type))
protocolParameter.setType(ProtocolParameter.Type.ENUM);
// Multiline field
else if ("multiline".equals(type))
protocolParameter.setType(ProtocolParameter.Type.MULTILINE);
// Boolean field
else if ("boolean".equals(type)) {
protocolParameter.setType(ProtocolParameter.Type.BOOLEAN);

View File

@@ -121,6 +121,36 @@ GuacAdmin.Field.TEXT = function() {
GuacAdmin.Field.TEXT.prototype = new GuacAdmin.Field._HTML_INPUT();
/**
* A basic multiline text field.
*
* @augments GuacAdmin.Field
*/
GuacAdmin.Field.MULTILINE = function() {
// Call parent constructor
GuacAdmin.Field.apply(this);
// Create backing element
var element = GuacUI.createElement("textarea");
this.getValue = function() {
return element.value;
};
this.getElement = function() {
return element;
};
this.setValue = function(value) {
element.value = value;
};
};
GuacAdmin.Field.MULTILINE.prototype = new GuacAdmin.Field();
/**
* A basic password field.
*
@@ -882,6 +912,11 @@ GuacAdmin.ConnectionEditor = function(connection, parameters) {
field = new GuacAdmin.Field.ENUM(parameter.options);
break;
// Multiline text field
case GuacamoleService.Protocol.Parameter.MULTILINE:
field = new GuacAdmin.Field.MULTILINE();
break;
default:
continue;

View File

@@ -1250,7 +1250,7 @@ GuacamoleService.Protocol.Parameter.Option = function(value, title) {
/**
* A free-form text field.
*/
GuacamoleService.Protocol.Parameter.TEXT = 0;
GuacamoleService.Protocol.Parameter.TEXT = 0;
/**
* A password field.
@@ -1260,17 +1260,22 @@ GuacamoleService.Protocol.Parameter.PASSWORD = 1;
/**
* A numeric field.
*/
GuacamoleService.Protocol.Parameter.NUMERIC = 2;
GuacamoleService.Protocol.Parameter.NUMERIC = 2;
/**
* A boolean (checkbox) field.
*/
GuacamoleService.Protocol.Parameter.BOOLEAN = 3;
GuacamoleService.Protocol.Parameter.BOOLEAN = 3;
/**
* An enumerated (select) field.
*/
GuacamoleService.Protocol.Parameter.ENUM = 4;
GuacamoleService.Protocol.Parameter.ENUM = 4;
/**
* A free-form, multi-line text field.
*/
GuacamoleService.Protocol.Parameter.MULTILINE = 5;
/**
* Collection of service functions which deal with protocols. Each function
@@ -1364,6 +1369,11 @@ GuacamoleService.Protocols = {
parameter.type = GuacamoleService.Protocol.Parameter.ENUM;
break;
// Multiline text parameter
case "multiline":
parameter.type = GuacamoleService.Protocol.Parameter.MULTILINE;
break;
}
// Parse all options

View File

@@ -31,19 +31,28 @@ input[type=submit], button {
-webkit-appearance: none;
}
div.location, input[type=text], input[type=number], input[type=password] {
div.location, input[type=text], input[type=number], input[type=password], textarea {
border: 1px solid #777;
-moz-border-radius: 0.2em;
-webkit-border-radius: 0.2em;
-khtml-border-radius: 0.2em;
border-radius: 0.2em;
width: 100%;
max-width: 16em;
padding: 0.25em;
font-size: 10pt;
background: white;
cursor: text;
}
textarea {
max-width: none;
width: 30em;
height: 10em;
white-space: nowrap;
overflow: auto;
}
button {
background: #8A6;