123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- // Copyright 2008 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed 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.
- /**
- * @fileoverview An example of how to write a dialog to be opened by a plugin.
- *
- */
- goog.provide('goog.demos.editor.HelloWorldDialog');
- goog.provide('goog.demos.editor.HelloWorldDialog.OkEvent');
- goog.require('goog.dom.TagName');
- goog.require('goog.events.Event');
- goog.require('goog.string');
- goog.require('goog.ui.editor.AbstractDialog');
- // *** Public interface ***************************************************** //
- /**
- * Creates a dialog to let the user enter a customized hello world message.
- * @param {goog.dom.DomHelper} domHelper DomHelper to be used to create the
- * dialog's dom structure.
- * @constructor
- * @extends {goog.ui.editor.AbstractDialog}
- * @final
- */
- goog.demos.editor.HelloWorldDialog = function(domHelper) {
- goog.ui.editor.AbstractDialog.call(this, domHelper);
- };
- goog.inherits(
- goog.demos.editor.HelloWorldDialog, goog.ui.editor.AbstractDialog);
- // *** Event **************************************************************** //
- /**
- * OK event object for the hello world dialog.
- * @param {string} message Customized hello world message chosen by the user.
- * @constructor
- * @extends {goog.events.Event}
- * @final
- */
- goog.demos.editor.HelloWorldDialog.OkEvent = function(message) {
- this.message = message;
- };
- goog.inherits(goog.demos.editor.HelloWorldDialog.OkEvent, goog.events.Event);
- /**
- * Event type.
- * @type {goog.ui.editor.AbstractDialog.EventType}
- * @override
- */
- goog.demos.editor.HelloWorldDialog.OkEvent.prototype.type =
- goog.ui.editor.AbstractDialog.EventType.OK;
- /**
- * Customized hello world message chosen by the user.
- * @type {string}
- */
- goog.demos.editor.HelloWorldDialog.OkEvent.prototype.message;
- // *** Protected interface ************************************************** //
- /** @override */
- goog.demos.editor.HelloWorldDialog.prototype.createDialogControl = function() {
- var builder = new goog.ui.editor.AbstractDialog.Builder(this);
- /** @desc Title of the hello world dialog. */
- var MSG_HELLO_WORLD_DIALOG_TITLE = goog.getMsg('Add a Hello World message');
- builder.setTitle(MSG_HELLO_WORLD_DIALOG_TITLE)
- .setContent(this.createContent_());
- return builder.build();
- };
- /**
- * Creates and returns the event object to be used when dispatching the OK
- * event to listeners, or returns null to prevent the dialog from closing.
- * @param {goog.events.Event} e The event object dispatched by the wrapped
- * dialog.
- * @return {goog.demos.editor.HelloWorldDialog.OkEvent} The event object to be
- * used when dispatching the OK event to listeners.
- * @protected
- * @override
- */
- goog.demos.editor.HelloWorldDialog.prototype.createOkEvent = function(e) {
- var message = this.getMessage_();
- if (message &&
- goog.demos.editor.HelloWorldDialog.isValidHelloWorld_(message)) {
- return new goog.demos.editor.HelloWorldDialog.OkEvent(message);
- } else {
- /** @desc Error message telling the user why their message was rejected. */
- var MSG_HELLO_WORLD_DIALOG_ERROR =
- goog.getMsg('Your message must contain the words "hello" and "world".');
- this.dom.getWindow().alert(MSG_HELLO_WORLD_DIALOG_ERROR);
- return null; // Prevents the dialog from closing.
- }
- };
- // *** Private implementation *********************************************** //
- /**
- * Input element where the user will type their hello world message.
- * @type {Element}
- * @private
- */
- goog.demos.editor.HelloWorldDialog.prototype.input_;
- /**
- * Creates the DOM structure that makes up the dialog's content area.
- * @return {Element} The DOM structure that makes up the dialog's content area.
- * @private
- */
- goog.demos.editor.HelloWorldDialog.prototype.createContent_ = function() {
- /** @desc Sample hello world message to prepopulate the dialog with. */
- var MSG_HELLO_WORLD_DIALOG_SAMPLE = goog.getMsg('Hello, world!');
- this.input_ = this.dom.createDom(
- goog.dom.TagName.INPUT, {size: 25, value: MSG_HELLO_WORLD_DIALOG_SAMPLE});
- /** @desc Prompt telling the user to enter a hello world message. */
- var MSG_HELLO_WORLD_DIALOG_PROMPT =
- goog.getMsg('Enter your Hello World message');
- return this.dom.createDom(
- goog.dom.TagName.DIV, null, [MSG_HELLO_WORLD_DIALOG_PROMPT, this.input_]);
- };
- /**
- * Returns the hello world message currently typed into the dialog's input.
- * @return {?string} The hello world message currently typed into the dialog's
- * input, or null if called before the input is created.
- * @private
- */
- goog.demos.editor.HelloWorldDialog.prototype.getMessage_ = function() {
- return this.input_ && this.input_.value;
- };
- /**
- * Returns whether or not the given message contains the strings "hello" and
- * "world". Case-insensitive and order doesn't matter.
- * @param {string} message The message to be checked.
- * @return {boolean} Whether or not the given message contains the strings
- * "hello" and "world".
- * @private
- */
- goog.demos.editor.HelloWorldDialog.isValidHelloWorld_ = function(message) {
- message = message.toLowerCase();
- return goog.string.contains(message, 'hello') &&
- goog.string.contains(message, 'world');
- };
|