01: /* ***** BEGIN LICENSE BLOCK *****
02: * Version: MPL 1.1
03: * The contents of this file are subject to the Mozilla Public License Version
04: * 1.1 (the "License"); you may not use this file except in compliance with
05: * the License. You may obtain a copy of the License at
06: * http://www.mozilla.org/MPL/
07: *
08: * Software distributed under the License is distributed on an "AS IS" basis,
09: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10: * for the specific language governing rights and limitations under the
11: * License.
12: *
13: * The Original Code is Riot.
14: *
15: * The Initial Developer of the Original Code is
16: * Neteye GmbH.
17: * Portions created by the Initial Developer are Copyright (C) 2006
18: * the Initial Developer. All Rights Reserved.
19: *
20: * Contributor(s):
21: * Felix Gnass [fgnass at neteye dot de]
22: *
23: * ***** END LICENSE BLOCK ***** */
24: package org.riotfamily.forms.element;
25:
26: import java.io.PrintWriter;
27:
28: import org.riotfamily.common.markup.DocumentWriter;
29: import org.riotfamily.common.markup.Html;
30: import org.riotfamily.forms.DHTMLElement;
31: import org.riotfamily.forms.TemplateUtils;
32:
33: public class PasswordField extends TextField implements DHTMLElement {
34:
35: private static final String DEFAULT_CONFIRM_MESSAGE_KEY = "label.passwordField.confirmInput";
36:
37: private static final String TOGGLE_PLAINTEXT_MESSAGE_KEY = "label.passwordField.togglePlaintext";
38:
39: private boolean togglePlaintext;
40:
41: public PasswordField() {
42: super ("password");
43: }
44:
45: public void setTogglePlaintext(boolean togglePlaintext) {
46: this .togglePlaintext = togglePlaintext;
47: }
48:
49: protected String getDefaultConfirmMessageKey() {
50: return DEFAULT_CONFIRM_MESSAGE_KEY;
51: }
52:
53: public String getButtonId() {
54: return getId() + "-toggleButton";
55: }
56:
57: public void renderInternal(PrintWriter writer) {
58: if (togglePlaintext) {
59: DocumentWriter doc = new DocumentWriter(writer);
60: doc.start(Html.DIV).body();
61: super .renderInternal(writer);
62: doc.start(Html.DIV).attribute(Html.COMMON_CLASS,
63: "toggle-plaintext").body();
64:
65: doc.startEmpty(Html.INPUT).attribute(Html.INPUT_TYPE,
66: "checkbox")
67: .attribute(Html.COMMON_ID, getButtonId()).end();
68:
69: String label = getFormContext().getMessageResolver()
70: .getMessage(TOGGLE_PLAINTEXT_MESSAGE_KEY);
71:
72: doc.start(Html.LABEL).attribute(Html.LABEL_FOR,
73: getButtonId()).body(label).closeAll();
74: } else {
75: super .renderInternal(writer);
76: }
77: }
78:
79: public String getInitScript() {
80: return togglePlaintext ? TemplateUtils.getInitScript(this)
81: : null;
82: }
83:
84: }
|