Beispiel #1
0
  void timeBlockClick(int x, int y) {

    int left = dayViewBody.getGrid().gridOverlay.getAbsoluteLeft();
    int top = dayViewBody.getScrollPanel().getAbsoluteTop();
    int width = dayViewBody.getGrid().gridOverlay.getOffsetWidth();
    //        int scrollOffset = dayViewBody.getScrollPanel().getScrollPosition();

    // x & y are based on screen position,need to get x/y relative to
    // component
    //        int relativeY = y - top + scrollOffset;
    int relativeY = y - top;
    int relativeX = x - left;

    // find the interval clicked and day clicked
    double interval = Math.floor(relativeY / (double) getSettings().getPixelsPerInterval());
    double day =
        Math.floor((double) relativeX / ((double) width / (double) calendarWidget.getDays()));

    // create new appointment date based on click
    Date newStartDate = calendarWidget.getDate();
    newStartDate.setHours(0);
    newStartDate.setMinutes(0);
    newStartDate.setSeconds(0);
    newStartDate.setMinutes((int) interval * (60 / getSettings().getIntervalsPerHour()));
    newStartDate.setDate(newStartDate.getDate() + (int) day);

    calendarWidget.fireTimeBlockClickEvent(newStartDate);
  }
Beispiel #2
0
  public void onSingleClick(Element element, Event event) {

    // Ignore the scoll panel
    if (dayViewBody.getScrollPanel().getElement().equals(element)) {
      return;
    }

    Appointment appt = findAppointmentByElement(element);

    if (appt != null) {
      selectAppointment(appt);
    } else if (getSettings().getTimeBlockClickNumber() == Click.Single
        && element == dayViewBody.getGrid().gridOverlay.getElement()) {
      int x = DOM.eventGetClientX(event);
      int y = DOM.eventGetClientY(event);
      timeBlockClick(x, y);
    }
  }
Beispiel #3
0
  public void doSizing() {

    if (calendarWidget.getOffsetHeight() > 0) {
      dayViewBody.setHeight(
          calendarWidget.getOffsetHeight()
              - 2
              - dayViewHeader.getOffsetHeight()
              - multiViewBody.getOffsetHeight()
              + "px");
    }

    // multiViewBody.grid.setHeight(desiredHeight + "px");
  }
Beispiel #4
0
  public void onDoubleClick(Element element, Event event) {

    ArrayList<AppointmentWidget> list = findAppointmentWidgetsByElement(element);
    if (!list.isEmpty()) {
      Appointment appt = list.get(0).getAppointment();
      // if (appt.equals(calendarWidget.getSelectedAppointment()))
      calendarWidget.fireOpenEvent(appt);
      // exit out

    } else if (getSettings().getTimeBlockClickNumber() == Click.Double
        && element == dayViewBody.getGrid().gridOverlay.getElement()) {
      int x = DOM.eventGetClientX(event);
      int y = DOM.eventGetClientY(event);
      timeBlockClick(x, y);
    }
  }
Beispiel #5
0
  public void doLayout() {

    // PERFORM APPOINTMENT LAYOUT NOW
    Date d = (Date) calendarWidget.getDate().clone();

    multiViewBody.setDays((Date) d.clone(), calendarWidget.getDays());
    dayViewHeader.setDays((Date) d.clone(), calendarWidget.getDays());
    dayViewHeader.setYear((Date) d.clone());
    dayViewBody.setDays((Date) d.clone(), calendarWidget.getDays());
    dayViewBody.getTimeline().prepare();

    dropController.setColumns(calendarWidget.getDays());
    dropController.setIntervalsPerHour(calendarWidget.getSettings().getIntervalsPerHour());
    dropController.setDate((Date) calendarWidget.getDate().clone());
    dropController.setSnapSize(calendarWidget.getSettings().getPixelsPerInterval());
    resizeController.setIntervalsPerHour(calendarWidget.getSettings().getIntervalsPerHour());
    resizeController.setSnapSize(calendarWidget.getSettings().getPixelsPerInterval());

    this.selectedAppointmentWidgets.clear();
    appointmentWidgets.clear();

    // HERE IS WHERE WE DO THE LAYOUT
    Date tmpDate = (Date) calendarWidget.getDate().clone();

    for (int i = 0; i < calendarWidget.getDays(); i++) {

      ArrayList<Appointment> filteredList =
          AppointmentUtil.filterListByDate(calendarWidget.getAppointments(), tmpDate);

      // perform layout
      ArrayList<AppointmentAdapter> appointmentAdapters =
          layoutStrategy.doLayout(filteredList, i, calendarWidget.getDays());

      // add all appointments back to the grid
      for (AppointmentAdapter appt : appointmentAdapters) {
        AppointmentWidget panel = new AppointmentWidget();
        panel.setWidth(appt.getWidth());
        panel.setHeight(appt.getHeight());
        panel.setTitle(appt.getAppointment().getTitle());
        panel.setTop(appt.getTop());
        panel.setLeft(appt.getLeft());
        panel.setAppointment(appt.getAppointment());
        panel.setDescription(appt.getAppointment().getDescription());
        // panel.setAppointmentStyle(appt.getAppointment().getAppointmentStyle());
        dayViewBody.getGrid().grid.add(panel);
        boolean selected = calendarWidget.isTheSelectedAppointment(panel.getAppointment());
        if (selected) {
          // panel.addStyleDependentName("selected");
          // panel.setSelected(true);//TODO Move to styleManager
          selectedAppointmentWidgets.add(panel);
        }
        styleManager.applyStyle(panel, selected);
        appointmentWidgets.add(panel);

        // make footer 'draggable'
        // resizeController.makeDraggable(panel.getResizeHandle());
        // dragController.makeDraggable(panel, panel.getMoveHandle());
      }

      tmpDate.setDate(tmpDate.getDate() + 1);
    }

    ArrayList<Appointment> filteredList =
        AppointmentUtil.filterListByDateRange(
            calendarWidget.getAppointments(), calendarWidget.getDate(), calendarWidget.getDays());

    ArrayList<AppointmentAdapter> adapterList = new ArrayList<AppointmentAdapter>();
    int desiredHeight =
        layoutStrategy.doMultiDayLayout(
            filteredList, adapterList, calendarWidget.getDate(), calendarWidget.getDays());

    multiViewBody.grid.setHeight(desiredHeight + "px");

    for (AppointmentAdapter appt : adapterList) {

      AppointmentWidget panel = new AppointmentWidget();
      // panel.addStyleName(appt.getAppointment().getStyle());
      // panel.setStylePrimaryName("dv-appointment-multiday");//TODO Move to styleManager

      panel.setWidth(appt.getWidth());
      panel.setHeight(appt.getHeight());
      panel.setTitle(appt.getAppointment().getTitle());
      panel.setTop(appt.getTop());
      panel.setLeft(appt.getLeft());
      panel.setAppointment(appt.getAppointment());
      panel.setMultiDay(true);
      // panel.setAppointmentStyle(appt.getAppointment().getAppointmentStyle());

      // dayViewBody.getGrid().grid.add(panel);
      boolean selected = calendarWidget.isTheSelectedAppointment(panel.getAppointment());
      if (selected) {
        // panel.setSelected(true); //TODO: Move to styleManager
        // panel.addStyleDependentName("selected");
        selectedAppointmentWidgets.add(panel);
      }
      styleManager.applyStyle(panel, selected);
      appointmentWidgets.add(panel);
      this.multiViewBody.grid.add(panel);
    }
  }
Beispiel #6
0
  @Override
  public void attach(CalendarWidget widget) {
    super.attach(widget);

    if (dayViewBody == null) {
      dayViewBody = new DayViewBody(this);
      dayViewHeader = new DayViewHeader(this);
      layoutStrategy = new DayViewLayoutStrategy(this);
      multiViewBody = new DayViewMultiDayBody(this);
    }

    calendarWidget.getRootPanel().add(dayViewHeader);
    calendarWidget.getRootPanel().add(multiViewBody);
    calendarWidget.getRootPanel().add(dayViewBody);

    if (getSettings() != null) scrollToHour(getSettings().getScrollToHour());

    if (dragController == null) {
      dragController = new DayViewPickupDragController(dayViewBody.getGrid().grid, false);
      dragController.setBehaviorDragProxy(true);
      dragController.setBehaviorDragStartSensitivity(1);
      dragController.setBehaviorConstrainedToBoundaryPanel(true); // do I need these?
      dragController.setConstrainWidgetToBoundaryPanel(true); // do I need these?
      dragController.setBehaviorMultipleSelection(false);
      dragController.addDragHandler(
          new DragHandler() {

            public void onDragEnd(DragEndEvent event) {
              Appointment appt =
                  ((AppointmentWidget) event.getContext().draggable).getAppointment();
              calendarWidget.setCommittedAppointment(appt);
              calendarWidget.fireUpdateEvent(appt);
            }

            public void onDragStart(DragStartEvent event) {
              Appointment appt =
                  ((AppointmentWidget) event.getContext().draggable).getAppointment();
              calendarWidget.setRollbackAppointment(appt.clone());
            }

            public void onPreviewDragEnd(DragEndEvent event) throws VetoDragException {}

            public void onPreviewDragStart(DragStartEvent event) throws VetoDragException {}
          });
    }

    if (dropController == null) {
      dropController = new DayViewDropController(dayViewBody.getGrid().grid);
      dragController.registerDropController(dropController);
    }

    if (resizeController == null) {
      resizeController = new DayViewResizeController(dayViewBody.getGrid().grid);
      resizeController.addDragHandler(
          new DragHandler() {

            public void onDragEnd(DragEndEvent event) {
              Appointment appt =
                  ((AppointmentWidget) event.getContext().draggable.getParent()).getAppointment();

              calendarWidget.setCommittedAppointment(appt);
              calendarWidget.fireUpdateEvent(appt);
            }

            public void onDragStart(DragStartEvent event) {
              Appointment appt =
                  ((AppointmentWidget) event.getContext().draggable.getParent()).getAppointment();
              // AppointmentWidget appointment = (AppointmentWidget)event.getContext().draggable;
              calendarWidget.setRollbackAppointment(
                  ((AppointmentWidget) event.getContext().draggable.getParent())
                      .getAppointment()
                      .clone());
            }

            public void onPreviewDragEnd(DragEndEvent event) throws VetoDragException {}

            public void onPreviewDragStart(DragStartEvent event) throws VetoDragException {}
          });
    }
  }