Package com.bradrydzewski.gwt.calendar.client.dayview

Source Code of com.bradrydzewski.gwt.calendar.client.dayview.DayViewStyleManager

package com.bradrydzewski.gwt.calendar.client.dayview;

import com.bradrydzewski.gwt.calendar.client.Appointment;
import com.bradrydzewski.gwt.calendar.client.ThemeAppointmentStyle;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;

public abstract class DayViewStyleManager {

    protected static final String APPOINTMENT_STYLE = "dv-appointment";

    protected static final String APPOINTMENT_STYLE_SELECTED = "-selected";

    protected static final String APPOINTMENT_STYLE_MULTIDAY = "-multiday";

    protected static final String BACKGROUND_COLOR_STYLE_ATTRIBUTE = "backgroundColor";

    protected static final String BACKGROUND_IMAGE_STYLE_ATTRIBUTE = "backgroundImage";

    protected static final String BORDER_COLOR_STYLE_ATTRIBUTE = "borderColor";

    protected static final String COLOR_STYLE_ATTRIBUTE = "color";

  public void applyStyle(AppointmentWidget widget, boolean selected){
        doApplyStyleInternal(widget, selected);
    }

    protected abstract ThemeAppointmentStyle getViewAppointmentStyleForTheme(Appointment appointment);

    protected abstract ThemeAppointmentStyle getDefaultViewAppointmentStyleForTheme();

    private void doApplyStyleInternal(AppointmentWidget widget, boolean selected) {

    // Extract the Appointment for later reference
    Appointment appointment = widget.getAppointment();
    // Extract the DOM Element for later reference
    Element elem = widget.getElement();
    Element bodyElem = widget.getBody().getElement();
    Element headerElem = widget.getHeader().getElement();
    // Is MultiDay?
    boolean multiDay = appointment.isMultiDay() || appointment.isAllDay();


    //Lookup the style from the map
    ThemeAppointmentStyle style = getViewAppointmentStyleForTheme(appointment);

    //Determine Style Name
    String styleName = APPOINTMENT_STYLE;
    if(multiDay) styleName+=APPOINTMENT_STYLE_MULTIDAY;
    if(selected) styleName+=APPOINTMENT_STYLE_SELECTED;
    widget.setStylePrimaryName(styleName);

    //If no style is found, apply the default blue style
    //TODO: need to check for a custom style
    if(style==null)
      style =  getDefaultViewAppointmentStyleForTheme();


    if (multiDay)
      DOM.setStyleAttribute(elem, BACKGROUND_COLOR_STYLE_ATTRIBUTE, style.getBackgroundHeader());
    else
      DOM.setStyleAttribute(elem, BACKGROUND_COLOR_STYLE_ATTRIBUTE, style.getBackground());

    DOM.setStyleAttribute(elem, BORDER_COLOR_STYLE_ATTRIBUTE, style.getBackgroundHeader());

    DOM.setStyleAttribute(bodyElem, COLOR_STYLE_ATTRIBUTE, style.getSelectedBorder());

    DOM.setStyleAttribute(headerElem, COLOR_STYLE_ATTRIBUTE, style.getHeaderText());

    DOM.setStyleAttribute(headerElem, BACKGROUND_COLOR_STYLE_ATTRIBUTE,style.getBackgroundHeader());

    if (multiDay)
      return;

    if (selected && style.getSelectedBackgroundImage() != null) {
      DOM.setStyleAttribute(elem, BACKGROUND_IMAGE_STYLE_ATTRIBUTE, "url("+ style.getSelectedBackgroundImage() + ")");
    } else {
      DOM.setStyleAttribute(elem, BACKGROUND_IMAGE_STYLE_ATTRIBUTE, "none");
    }

  }
}
TOP

Related Classes of com.bradrydzewski.gwt.calendar.client.dayview.DayViewStyleManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.