mirror of
https://github.com/atlanticbiomedical/portal.git
synced 2025-07-01 10:07:27 -04:00
105 lines
3.4 KiB
Java
105 lines
3.4 KiB
Java
package com.bradrydzewski.gwt.calendar.client.techview;
|
|
|
|
import com.bradrydzewski.gwt.calendar.client.HasSettings;
|
|
import com.bradrydzewski.gwt.calendar.client.util.FormattingUtil;
|
|
import com.google.gwt.user.client.DOM;
|
|
import com.google.gwt.user.client.ui.AbsolutePanel;
|
|
import com.google.gwt.user.client.ui.ComplexPanel;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.SimplePanel;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
/**
|
|
* The DayGrid draws the grid that displays days / time intervals in the
|
|
* body of the calendar.
|
|
*
|
|
* @author Brad Rydzewski
|
|
*/
|
|
public class DayViewGrid /*Impl*/ extends Composite {
|
|
|
|
class Div extends ComplexPanel {
|
|
|
|
public Div() {
|
|
setElement(DOM.createDiv());
|
|
}
|
|
|
|
@Override
|
|
public boolean remove(Widget w) {
|
|
return super.remove(w);
|
|
}
|
|
|
|
@Override
|
|
public void add(Widget w) {
|
|
super.add(w, getElement());
|
|
}
|
|
}
|
|
|
|
protected AbsolutePanel grid = new AbsolutePanel();
|
|
protected SimplePanel gridOverlay = new SimplePanel();
|
|
|
|
private HasSettings settings = null;
|
|
|
|
private static final int HOURS_PER_DAY = 24;
|
|
|
|
public DayViewGrid(HasSettings settings) { //was DayViewGridImpl
|
|
initWidget(grid);
|
|
this.settings = settings;
|
|
}
|
|
|
|
public void build(int workingHourStart, int workingHourStop, int days) {
|
|
|
|
grid.clear();
|
|
|
|
int intervalsPerHour = settings.getSettings().getIntervalsPerHour(); //2; //30 minute intervals
|
|
float intervalSize = settings.getSettings().getPixelsPerInterval();
|
|
|
|
this.setHeight((intervalsPerHour * (intervalSize) * 24) + "px");
|
|
|
|
float dayWidth = 100f / days;
|
|
float dayLeft = 0f;
|
|
|
|
int dayStartsAt = settings.getSettings().getDayStartsAt();
|
|
|
|
for (int i = 0; i < HOURS_PER_DAY; i++) {
|
|
boolean isWorkingHours = ((i + dayStartsAt) >= workingHourStart && (i + dayStartsAt) <= workingHourStop);
|
|
//create major interval
|
|
SimplePanel sp1 = new SimplePanel();
|
|
sp1.setStyleName("major-time-interval");
|
|
sp1.setHeight(intervalSize + FormattingUtil.getBorderOffset() + "px");
|
|
|
|
//if working hours set
|
|
if (isWorkingHours) {
|
|
sp1.addStyleName("working-hours");
|
|
}
|
|
|
|
//add to body
|
|
grid.add(sp1);
|
|
|
|
for (int x = 0; x < intervalsPerHour - 1; x++) {
|
|
SimplePanel sp2 = new SimplePanel();
|
|
sp2.setStyleName("minor-time-interval");
|
|
|
|
sp2.setHeight(intervalSize + FormattingUtil.getBorderOffset() + "px");
|
|
if (isWorkingHours) {
|
|
sp2.addStyleName("working-hours");
|
|
}
|
|
grid.add(sp2);
|
|
}
|
|
}
|
|
|
|
for (int day = 0; day < days; day++) {
|
|
dayLeft = dayWidth * day;
|
|
SimplePanel dayPanel = new SimplePanel();
|
|
dayPanel.setStyleName("day-separator");
|
|
grid.add(dayPanel);
|
|
DOM.setStyleAttribute(dayPanel.getElement(), "left", dayLeft + "%");
|
|
}
|
|
|
|
gridOverlay.setHeight("100%");
|
|
gridOverlay.setWidth("100%");
|
|
DOM.setStyleAttribute(gridOverlay.getElement(), "position", "absolute");
|
|
DOM.setStyleAttribute(gridOverlay.getElement(), "left", "0px");
|
|
DOM.setStyleAttribute(gridOverlay.getElement(), "top", "0px");
|
|
grid.add(gridOverlay);
|
|
}
|
|
} |