]> source.dussan.org Git - gwtquery.git/blob
a3190a956ab192c5a9c58abbd1c1c59e581b03c4
[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.query.client.GQuery;
21 import com.google.gwt.user.client.ui.TextBoxBase;
22
23 /**
24  *
25  *
26  */
27 public abstract class TextBoxBaseWidgetFactory<T extends TextBoxBase>
28     implements WidgetFactory<T> {
29
30   public T create(Element e) {
31     T textBox = createWidget();
32
33     if (getEquivalentTagName().equalsIgnoreCase(e.getTagName())) {
34       copyAttributes((InputElement) e.cast(),
35           (InputElement) textBox.getElement().cast());
36     } else {
37       textBox.setValue(e.getInnerText());
38     }
39     WidgetsUtils.replaceOrAppend(e, textBox);
40
41     return (T) textBox;
42   }
43
44   protected String getEquivalentTagName(){
45     return "input";
46   }
47
48   protected void copyAttributes(Element src, Element dest) {
49     InputElement source = src.cast();
50     InputElement destination = dest.cast();
51
52     destination.setAccessKey(source.getAccessKey());
53     destination.setDefaultValue(source.getDefaultValue());
54     destination.setDisabled(source.isDisabled());
55     if (source.getMaxLength() > 0) destination.setMaxLength(source.getMaxLength());
56     destination.setReadOnly(source.isReadOnly());
57     destination.setSize(source.getSize());
58     destination.setName(source.getName());
59     destination.setValue(source.getValue());
60   }
61
62   protected abstract T createWidget();
63 }