From 426a7919b3a3b4db94354da455354f48ce69f4e8 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 12 Jun 2018 12:37:07 -0700 Subject: [PATCH] GUACAMOLE-470: Allow TEXT fields to be associated with predefined sets of known-good values. --- .../org/apache/guacamole/form/TextField.java | 17 ++++++++ .../form/controllers/textFieldController.js | 40 +++++++++++++++++++ .../webapp/app/form/services/formService.js | 2 + .../webapp/app/form/templates/textField.html | 8 +++- 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 guacamole/src/main/webapp/app/form/controllers/textFieldController.js diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java b/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java index 2751e1403..990ad73c5 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java @@ -19,6 +19,8 @@ package org.apache.guacamole.form; +import java.util.Collection; + /** * Represents a basic text field. The field may generally contain any data, but * may not contain multiple lines. @@ -35,6 +37,21 @@ public class TextField extends Field { super(name, Field.Type.TEXT); } + /** + * Creates a new TextField with the given name and possible values. As a + * text field may contain any data by definition, any provided options are + * simply known-good values. + * + * @param name + * The unique name to associate with this field. + * + * @param options + * A set of known legal options for this field. + */ + public TextField(String name, Collection options) { + super(name, Field.Type.TEXT, options); + } + /** * Parses the given string, interpreting empty strings as equivalent to * null. For all other cases, the given string is returned verbatim. diff --git a/guacamole/src/main/webapp/app/form/controllers/textFieldController.js b/guacamole/src/main/webapp/app/form/controllers/textFieldController.js new file mode 100644 index 000000000..b5bc7538f --- /dev/null +++ b/guacamole/src/main/webapp/app/form/controllers/textFieldController.js @@ -0,0 +1,40 @@ +/* + * 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. + */ + + +/** + * Controller for text fields. + */ +angular.module('form').controller('textFieldController', ['$scope', '$injector', + function textFieldController($scope, $injector) { + + /** + * The ID of the datalist element that should be associated with the text + * field, providing a set of known-good values. If no such values are + * defined, this will be null. + * + * @type String + */ + $scope.dataListId = null; + + // Generate unique ID for datalist, if applicable + if ($scope.field.options && $scope.field.options.length) + $scope.dataListId = $scope.field.name + '-datalist'; + +}]); diff --git a/guacamole/src/main/webapp/app/form/services/formService.js b/guacamole/src/main/webapp/app/form/services/formService.js index 64a171310..168a1efa7 100644 --- a/guacamole/src/main/webapp/app/form/services/formService.js +++ b/guacamole/src/main/webapp/app/form/services/formService.js @@ -44,6 +44,8 @@ angular.module('form').provider('formService', function formServiceProvider() { * @type FieldType */ 'TEXT' : { + module : 'form', + controller : 'textFieldController', templateUrl : 'app/form/templates/textField.html' }, diff --git a/guacamole/src/main/webapp/app/form/templates/textField.html b/guacamole/src/main/webapp/app/form/templates/textField.html index e213bc20e..a338db4cd 100644 --- a/guacamole/src/main/webapp/app/form/templates/textField.html +++ b/guacamole/src/main/webapp/app/form/templates/textField.html @@ -1 +1,7 @@ - \ No newline at end of file +
+ + + + +
\ No newline at end of file