All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sencha.gxt.theme.base.client.widget.DatePickerBaseAppearance Maven / Gradle / Ivy

There is a newer version: 3.1.1
Show newest version
/**
 * Sencha GXT 3.0.1 - Sencha for GWT
 * Copyright(c) 2007-2012, Sencha, Inc.
 * [email protected]
 *
 * http://www.sencha.com/products/gxt/license/
 */
package com.sencha.gxt.theme.base.client.widget;

import java.util.List;

import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.resources.client.ImageResource.RepeatStyle;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.core.client.resources.StyleInjectorHelper;
import com.sencha.gxt.widget.core.client.DatePicker.DatePickerAppearance;
import com.sencha.gxt.widget.core.client.DatePicker.DatePickerMessages;
import com.sencha.gxt.widget.core.client.DatePicker.DateState;

public abstract class DatePickerBaseAppearance implements DatePickerAppearance {

  public interface DatePickerResources {

    DatePickerStyle css();

    @ImageOptions(preventInlining = true)
    ImageResource downIcon();

    @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
    ImageResource footer();

    @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
    ImageResource header();

    ImageResource leftButton();

    @ImageOptions(preventInlining = true, repeatStyle = RepeatStyle.None)
    ImageResource leftIcon();

    ImageResource rightButton();

    @ImageOptions(preventInlining = true, repeatStyle = RepeatStyle.None)
    ImageResource rightIcon();
  }

  public interface DatePickerStyle extends CssResource {

    String date();

    String dateAnchor();

    String dateActive();

    String dateDisabled();

    String dateNext();

    String dateOver();

    String datePicker();

    String datePrevious();

    String dateSelected();

    String dateToday();

    String inner();

    String leftYearIcon();

    String middle();

    String month();

    String monthSep();

    String monthSelected();

    String year();

    String yearButton();

    String monthButtons();

    String monthLeft();

    String monthRight();

    String monthButton();

    String monthButtonText();

    String monthLeftButton();

    String monthRightButton();

    String rightYearIcon();

    String daysWrap();

    String bottom();

    String header();

    String monthPicker();

    String downIcon();

    String cancel();

    String ok();

  }

  protected final DatePickerResources resources;
  protected final DatePickerStyle style;

  public DatePickerBaseAppearance(DatePickerResources resources) {
    this.resources = resources;
    this.style = resources.css();

    StyleInjectorHelper.ensureInjected(this.style, true);
  }

  @Override
  public String dateSelector() {
    return "." + style.date();
  }

  @Override
  public String daySelector() {
    return "." + style.dateAnchor();
  }

  @Override
  public NodeList getDateCells(XElement parent) {
    return parent.select("." + style.date());
  }

  @Override
  public boolean isDisabled(Element cell) {
    return cell. cast().hasClassName(style.dateDisabled());
  }

  @Override
  public String leftMonthSelector() {
    return "." + style.monthLeftButton();
  }

  @Override
  public String leftYearSelector() {
    return "." + style.leftYearIcon();
  }

  @Override
  public String monthButtonSelector() {
    return "." + style.monthButton();
  }

  @Override
  public String monthPickerCancelSelector() {
    return "button." + style.cancel();
  }

  @Override
  public String monthPickerMonthSelector() {
    return "." + style.month();
  }

  @Override
  public String monthPickerOkSelector() {
    return "button." + style.ok();
  }

  @Override
  public String monthPickerYearSelector() {
    return "." + style.year();
  }

  @Override
  public void onMonthButtonTextChange(XElement parent, String text) {
    parent.selectNode("." + style.monthButtonText()).setInnerHTML(text);
  }

  @Override
  public void onMonthSelected(Element cell, boolean select) {
    cell. cast().setClassName(style.monthSelected(), select);
  }

  @Override
  public void onTextChange(Element cell, String text) {
    cell.getFirstChildElement().getFirstChildElement().setInnerHTML(text);
  }

  @Override
  public void onUpdateDateStyle(Element cell, DateState type, boolean add) {

    String cls = "";

    switch (type) {
      case ACTIVE:
        cls = style.dateActive();
        break;
      case DISABLED:
        cls = style.dateDisabled();
        break;
      case NEXT:
        cls = style.dateNext();
        break;
      case PREVIOUS:
        cls = style.datePrevious();
        break;
      case OVER:
        cls = style.dateOver();
        break;
      case SELECTED:
        cls = style.dateSelected();
        break;
      case TODAY:
        cls = style.dateToday();
        break;
    }

    XElement elem = cell.cast();
    elem.setClassName(cls, add);
  }

  @Override
  public void onUpdateDayOfWeeks(XElement parent, List values) {
    NodeList elems = parent.select("." + style.daysWrap() + " span");
    for (int i = 0; i < elems.getLength(); i++) {
      elems.getItem(i).setInnerHTML(values.get(i));
    }
  }

  @Override
  public void render(SafeHtmlBuilder sb) {
    sb.appendHtmlConstant("
"); sb.appendHtmlConstant(""); sb.appendHtmlConstant(""); sb.appendHtmlConstant(""); sb.appendHtmlConstant("
"); sb.appendHtmlConstant(""); sb.appendHtmlConstant("
 
"); sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); for (int i = 0; i < 7; i++) { sb.appendHtmlConstant(""); } sb.appendHtmlConstant("
" + i + "
"); sb.appendHtmlConstant(""); for (int i = 0; i < 6; i++) { sb.appendHtmlConstant(""); for (int j = 0; j < 7; j++) { sb.appendHtmlConstant(""); } sb.appendHtmlConstant(""); } sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); } @Override public void renderMonthPicker(SafeHtmlBuilder sb, DatePickerMessages messages, String[] monthNames) { sb.appendHtmlConstant("
"); for (int i = 0; i < 6; i++) { sb.appendHtmlConstant(""); sb.appendHtmlConstant(""); if (i == 0) { sb.appendHtmlConstant(""); } else { sb.appendHtmlConstant(""); } } sb.appendHtmlConstant("
"); sb.appendHtmlConstant(monthNames[i]); sb.appendHtmlConstant(""); sb.appendHtmlConstant(monthNames[i + 6]); sb.appendHtmlConstant(""); sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); sb.appendHtmlConstant("
"); } @Override public String rightMonthSelector() { return "." + style.monthRightButton(); } @Override public String rightYearSelector() { return "." + style.rightYearIcon(); } @Override public String todayButtonSelector() { return "." + style.bottom(); } @Override public void onMonthPickerSize(XElement monthPicker, int width, int height) { monthPicker.setSize(width, height); monthPicker.getFirstChildElement().getFirstChildElement(). cast().setSize(width, height, true); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy