001package org.gwtbootstrap3.extras.fullcalendar.client.ui; 002 003/* 004 * #%L 005 * GwtBootstrap3 006 * %% 007 * Copyright (C) 2013 - 2014 GwtBootstrap3 008 * %% 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 * #L% 021 */ 022 023import com.google.gwt.core.client.JavaScriptObject; 024import com.google.gwt.core.client.JsArrayInteger; 025 026/** 027 * @author Jeff Isenhart 028 * @see http://arshaw.com/fullcalendar/docs/display/ 029 */ 030public class GeneralDisplay implements IsJavaScriptObject { 031 private JavaScriptObject general; 032 033 public GeneralDisplay() { 034 this(new Header()); 035 } 036 037 public GeneralDisplay(final Header header) { 038 newInstance(); 039 if (header != null) { 040 setHeader(header.toJavaScript()); 041 } 042 } 043 044 private native void newInstance() /*-{ 045 var theInstance = this; 046 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general = { 047 firstDay: 0, 048 isRTL: false, 049 weekends: true, 050 hiddenDays: [], 051 weekMode: 'fixed', 052 weekNumbers: false, 053 weekNumberCalculation: 'local', 054 aspectRatio: 1.35, 055 handleWindowResize: true, 056 prev: 'left-single-arrow', 057 next: 'right-single-arrow', 058 prevYear: 'left-double-arrow', 059 nextYear: 'right-double-arrow' 060 }; 061 }-*/; 062 063 public native void setViewRenderCallback(ViewRenderCallback callback) /*-{ 064 if (callback) { 065 var theInstance = this; 066 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.viewRender = function (view, element) { 067 callback.@org.gwtbootstrap3.extras.fullcalendar.client.ui.ViewRenderCallback::viewRender(Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/dom/client/Element;)(view, element[0]); 068 }; 069 070 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.viewDestroy = function (view, element) { 071 callback.@org.gwtbootstrap3.extras.fullcalendar.client.ui.ViewRenderCallback::viewDestroy(Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/dom/client/Element;)(view, element[0]); 072 }; 073 074 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.dayRender = function (date, cell) { 075 callback.@org.gwtbootstrap3.extras.fullcalendar.client.ui.ViewRenderCallback::dayRender(Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/dom/client/Element;)(date, cell); 076 }; 077 078 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.windowResize = function (view) { 079 callback.@org.gwtbootstrap3.extras.fullcalendar.client.ui.ViewRenderCallback::windowResize(Lcom/google/gwt/core/client/JavaScriptObject;)(view); 080 }; 081 } 082 }-*/; 083 084 public native void setFirstDayOption(int firstDay) /*-{ 085 if (firstDay >= 0 && firstDay <= 6) { 086 var theInstance = this; 087 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.firstDay = firstDay; 088 } 089 }-*/; 090 091 public native void setIsRTL(boolean rtl) /*-{ 092 var theInstance = this; 093 return theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.isRTL = rtl; 094 }-*/; 095 096 public void setHeader(final Header header) { 097 setHeader(header == null ? null : header.toJavaScript()); 098 } 099 100 private native void setHeader(JavaScriptObject header) /*-{ 101 var theInstance = this; 102 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.header = header; 103 }-*/; 104 105 public native void setWeekends(boolean weekends) /*-{ 106 var theInstance = this; 107 return theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.weekends = weekends; 108 }-*/; 109 110 public void setHiddenDays(final int... days) { 111 if (days != null) { 112 final JsArrayInteger intArr = (JsArrayInteger) JsArrayInteger.createArray(); 113 for (final int i : days) { 114 assert i >= 0 && i <= 6; 115 intArr.push(i); 116 } 117 setHiddenDays(intArr); 118 } 119 } 120 121 public native void setHiddenDays(JsArrayInteger hiddenDays) /*-{ 122 var theInstance = this; 123 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.hiddenDays = hiddenDays; 124 }-*/; 125 126 public native void setWeekMode(String mode) /*-{ 127 if (mode) { 128 if (mode == 'fixed' || mode == 'liquid' || mode == 'variable') { 129 var theInstance = this; 130 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.weekMode = mode; 131 } 132 } 133 134 }-*/; 135 136 public native void setWeekNumbers(boolean weekNumbers) /*-{ 137 var theInstance = this; 138 return theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.weekNumbers = weekNumbers; 139 140 }-*/; 141 142 public native void setWeekNumberCaculation(String calculation) /*-{ 143 if (calculation) { 144 if (calculation == 'local' || calculation == 'ISO') { 145 var theInstance = this; 146 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.weekNumberCalculation = calculation; 147 } 148 } 149 150 }-*/; 151 152 //to-do: make this a callback 153 public native void setWeekNumberCaculation(JavaScriptObject weekNumberFunction) /*-{ 154 if (weekNumberFunction) { 155 var theInstance = this; 156 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.weekNumberCalculation = weekNumberFunction; 157 } 158 159 }-*/; 160 161 public native void setBusinessHours(boolean businessHours) /*-{ 162 var theInstance = this; 163 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.businessHours = businessHours; 164 }-*/; 165 166 public native void setHeight(int height) /*-{ 167 var theInstance = this; 168 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.height = height; 169 }-*/; 170 171 public native void setContentHeight(int contentHeight) /*-{ 172 var theInstance = this; 173 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.contentHeight = contentHeight; 174 }-*/; 175 176 public native void setAspectRatio(double aspectRatio) /*-{ 177 var theInstance = this; 178 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.aspectRatio = aspectRatio; 179 }-*/; 180 181 public native void setHandleWindowResize(boolean handleWindowResize) /*-{ 182 var theInstance = this; 183 return theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.handleWindowResize = handleWindowResize; 184 }-*/; 185 186 public native void setPrev(String previous) /*-{ 187 var theInstance = this; 188 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.prev = previous; 189 }-*/; 190 191 public native void setNext(String next) /*-{ 192 var theInstance = this; 193 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.next = next; 194 }-*/; 195 196 public native void setPrevYear(String previousYear) /*-{ 197 var theInstance = this; 198 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.prevYear = previousYear; 199 }-*/; 200 201 public native void setNextYear(String nextYear) /*-{ 202 var theInstance = this; 203 theInstance.@org.gwtbootstrap3.extras.fullcalendar.client.ui.GeneralDisplay::general.nextYear = nextYear; 204 }-*/; 205 206 @Override 207 public JavaScriptObject toJavaScript() { 208 return general; 209 } 210}