]> source.dussan.org Git - gwtquery.git/blob
9a7f22eb3d3b6428119b4851f492f8be092ff50c
[gwtquery.git] /
1 /*
2  * Copyright 2011, The gwtquery team.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.google.gwt.query.client.plugins.widgets;
17
18 import com.google.gwt.dom.client.Element;
19 import com.google.gwt.dom.client.InputElement;
20 import com.google.gwt.user.client.ui.TextBoxBase;
21
22 /**
23  *
24  *
25  */
26 public abstract class TextBoxBaseWidgetFactory<T extends TextBoxBase>
27     implements WidgetFactory<T> {
28
29   public T create(Element e) {
30     T textBox = createWidget();
31
32     if (getEquivalentTagName().equalsIgnoreCase(e.getTagName())) {
33       copyAttributes((InputElement) e.cast(),
34           (InputElement) textBox.getElement().cast());
35     } else {
36       textBox.setValue(e.getInnerText());
37     }
38     WidgetsUtils.replaceOrAppend(e, textBox);
39
40     return (T) textBox;
41   }
42
43   protected String getEquivalentTagName(){
44     return "input";
45   }
46
47   protected void copyAttributes(Element src, Element dest) {
48     InputElement source = src.cast();
49     InputElement destination = dest.cast();
50
51     destination.setAccessKey(source.getAccessKey());
52     destination.setDefaultValue(source.getDefaultValue());
53     destination.setDisabled(source.isDisabled());
54     if (source.getMaxLength() > 0) destination.setMaxLength(source.getMaxLength());
55     destination.setReadOnly(source.isReadOnly());
56     destination.setSize(source.getSize());
57     destination.setName(source.getName());
58     destination.setValue(source.getValue());
59   }
60
61   protected abstract T createWidget();
62 }