Package com.allen_sauer.gwt.dnd.client.drop

Source Code of com.allen_sauer.gwt.dnd.client.drop.DayViewResizeController

package com.allen_sauer.gwt.dnd.client.drop;

import java.util.Date;

import com.allen_sauer.gwt.dnd.client.AbstractDragController;
import com.bradrydzewski.gwt.calendar.client.Appointment;
import com.bradrydzewski.gwt.calendar.client.dayview.AppointmentWidget;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Widget;

public class DayViewResizeController extends AbstractDragController {

  public DayViewResizeController(AbsolutePanel boundaryPanel) {
    super(boundaryPanel);
  }

  int snapSize;
  int intervalsPerHour;

  public void setSnapSize(int snapSize) {
    this.snapSize = snapSize;
  }
 
  public void setIntervalsPerHour(int intervalsPerHour) {
    this.intervalsPerHour = intervalsPerHour;
  }

  public void dragMove() {

    Widget appointment = context.draggable.getParent();

    //calculates difference between elements position on screen
    // and how many pixels the user is trying to drag it
    int delta = context.draggable.getAbsoluteTop()
        - context.desiredDraggableY;
   
    //get the height of the widget
    int contentHeight = appointment.getOffsetHeight();
   
    //make sure the height of the widget is not < the minimum size
    int newHeight = Math.max(contentHeight - delta, snapSize);

    //get the 'snapped' height. basically it gets the rounded
    // intervals spanned, then multiples it by the snapSize
    int snapHeight = Math.round(
        (float) newHeight / snapSize) * snapSize;

    appointment.setHeight(snapHeight + "px");
  }
 

  @SuppressWarnings("deprecation")
  public void dragEnd() {
    AppointmentWidget apptWidget = (AppointmentWidget)context.draggable.getParent();
    int apptHeight = apptWidget.getOffsetHeight();
    Appointment appt = apptWidget.getAppointment();
   
   
        //get the start date
        Date end = (Date)appt.getStart().clone();
       
        //get the "top" location of the appointment widget
        float topFloat = DOM.getIntStyleAttribute(apptWidget.getElement(), "top");
       
        //get the grid span
        int intervalStart = Math.round(topFloat / snapSize);
        int intervalSpan = Math.round(apptHeight / snapSize);
       
        //set the end based on the new dragged value
        end.setHours(0);
        end.setMinutes((intervalStart + intervalSpan)*(60/intervalsPerHour));
       
        //update the end
        appt.setEnd(end);
   
    super.dragEnd();
  }

}
TOP

Related Classes of com.allen_sauer.gwt.dnd.client.drop.DayViewResizeController

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.