001/* 002 * #%L 003 * GwtMaterial 004 * %% 005 * Copyright (C) 2015 - 2017 GwtMaterialDesign 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package gwt.material.design.client.base.mixin; 021 022import com.google.gwt.dom.client.Element; 023import com.google.gwt.user.client.ui.UIObject; 024import gwt.material.design.client.base.HasCounter; 025import gwt.material.design.client.ui.MaterialValueBox; 026 027import static gwt.material.design.client.js.JsMaterialElement.$; 028 029public class CounterMixin<T extends UIObject & HasCounter> extends AbstractMixin<T> implements HasCounter { 030 031 private int length = 0; 032 033 public CounterMixin(final T widget) { 034 super(widget); 035 } 036 037 @Override 038 public void setLength(int length) { 039 this.length = length; 040 Element e = uiObject.getElement(); 041 042 if (uiObject instanceof MaterialValueBox) { 043 e = ((MaterialValueBox) uiObject).asValueBoxBase().getElement(); 044 } 045 046 if (e != null) { 047 e.setAttribute("length", String.valueOf(length)); 048 initialize(e); 049 } 050 } 051 052 @Override 053 public int getLength() { 054 return length; 055 } 056 057 /** 058 * Initialize the character counter provided by the textbase elements 059 * 060 * @param e - element to initialize the feature 061 */ 062 protected void initialize(Element e) { 063 $(e).characterCounter(); 064 } 065}