/* * Copyright 2010 The gwtquery plugins team. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package gwtquery.plugins.droppable.client.testoptionssample; import static com.google.gwt.query.client.GQuery.$; import static gwtquery.plugins.droppable.client.testoptionssample.TestOptionsSample.EVENT_BUS; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.uibinder.client.UiTemplate; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import gwtquery.plugins.draggable.client.events.BeforeDragStartEvent; import gwtquery.plugins.draggable.client.events.DragEvent; import gwtquery.plugins.draggable.client.events.DragStartEvent; import gwtquery.plugins.draggable.client.events.DragStopEvent; import gwtquery.plugins.draggable.client.events.BeforeDragStartEvent.BeforeDragStartEventHandler; import gwtquery.plugins.draggable.client.events.DragEvent.DragEventHandler; import gwtquery.plugins.draggable.client.events.DragStartEvent.DragStartEventHandler; import gwtquery.plugins.draggable.client.events.DragStopEvent.DragStopEventHandler; import gwtquery.plugins.droppable.client.events.ActivateDroppableEvent; import gwtquery.plugins.droppable.client.events.DeactivateDroppableEvent; import gwtquery.plugins.droppable.client.events.DropEvent; import gwtquery.plugins.droppable.client.events.OutDroppableEvent; import gwtquery.plugins.droppable.client.events.OverDroppableEvent; import gwtquery.plugins.droppable.client.events.ActivateDroppableEvent.ActivateDroppableEventHandler; import gwtquery.plugins.droppable.client.events.DeactivateDroppableEvent.DeactivateDroppableEventHandler; import gwtquery.plugins.droppable.client.events.DropEvent.DropEventHandler; import gwtquery.plugins.droppable.client.events.OutDroppableEvent.OutDroppableEventHandler; import gwtquery.plugins.droppable.client.events.OverDroppableEvent.OverDroppableEventHandler; /** * Panel displaying log of the different events that occur during a drag and * drop operation * * @author Julien Dramaix (julien.dramaix@gmail.com) * */ public class LogEventPanel extends Composite implements BeforeDragStartEventHandler, DragStartEventHandler, DragStopEventHandler, DragEventHandler, DropEventHandler, DeactivateDroppableEventHandler, ActivateDroppableEventHandler, OutDroppableEventHandler, OverDroppableEventHandler { @UiTemplate(value = "LogEventPanel.ui.xml") interface LogEventPanelUiBinder extends UiBinder<Widget, LogEventPanel> { } private static String HIDE_WINDOW_EVENT = "Hide log window"; private static String SHOW_WINDOW_EVENT = "Show log window"; private static LogEventPanelUiBinder uiBinder = GWT .create(LogEventPanelUiBinder.class); @UiField Button clearLogButton; @UiField CheckBox enableActivateDrop; @UiField CheckBox enableBeforeDragStart; @UiField CheckBox enableDeactivateDrop; @UiField CheckBox enableDragMove; @UiField CheckBox enableDragStart; @UiField CheckBox enableDragStop; @UiField CheckBox enableDrop; @UiField CheckBox enableOutDrop; @UiField CheckBox enableOverDrop; @UiField DivElement logEventWindow; @UiField Button windowToogleButton; private boolean windowOpen = true; public LogEventPanel() { initWidget(uiBinder.createAndBindUi(this)); bind(); addStyleName("logEventPanel"); initCheckBoxes(); } public void onActivateDroppable(ActivateDroppableEvent event) { if (isActivateDropLoggingEnable()) { log("Activate droppable " + event.getDroppable().getId()); } } public void onBeforeDragStart(BeforeDragStartEvent event) { if (isBeforeDragStartLoggingEnable()) { log("The drag operation will be started for draggable " + event.getDraggable().getId()); } } @UiHandler(value = { "clearLogButton" }) public void onClearLogClicked(ClickEvent e) { $(logEventWindow).html(""); logEventWindow.setScrollTop(0); } public void onDeactivateDroppable(DeactivateDroppableEvent event) { if (isDeactivateDropLoggingEnable()) { log("Deactivate droppable " + event.getDroppable().getId()); } } public void onDrag(DragEvent event) { if (isDragMoveLoggingEnable()) { log("Dragging draggable " + event.getDraggable().getId()); } } public void onDragStart(DragStartEvent event) { if (isDragStartLoggingEnable()) { log("Drag started for draggable " + event.getDraggable().getId()); } } public void onDragStop(DragStopEvent event) { if (isDragStopLoggingEnable()) { log("Drag stopped for draggable " + event.getDraggable().getId()); } log("=========================="); } public void onDrop(DropEvent event) { if (isDropLoggingEnable()) { log("The draggable " + event.getDraggable().getId() + " was drop in the droppable " + event.getDroppable().getId()); } } public void onOutDroppable(OutDroppableEvent event) { if (isOutDropLoggingEnable()) { log("The draggable " + event.getDraggable().getId() + " is out the droppable " + event.getDroppable().getId()); } } public void onOverDroppable(OverDroppableEvent event) { if (isOverDropLoggingEnable()) { log("The draggable " + event.getDraggable().getId() + " is over the droppable " + event.getDroppable().getId()); } } @UiHandler(value = { "windowToogleButton" }) public void onToogleWindowClicked(ClickEvent e) { toogleWindowLog(); } private void bind() { EVENT_BUS.addHandler(BeforeDragStartEvent.TYPE, this); EVENT_BUS.addHandler(DragStartEvent.TYPE, this); EVENT_BUS.addHandler(DragStopEvent.TYPE, this); EVENT_BUS.addHandler(DragEvent.TYPE, this); EVENT_BUS.addHandler(DropEvent.TYPE, this); EVENT_BUS.addHandler(DeactivateDroppableEvent.TYPE, this); EVENT_BUS.addHandler(ActivateDroppableEvent.TYPE, this); EVENT_BUS.addHandler(OutDroppableEvent.TYPE, this); EVENT_BUS.addHandler(OverDroppableEvent.TYPE, this); } private void initCheckBoxes() { enableBeforeDragStart.setValue(true); enableDragStart.setValue(true); enableDrop.setValue(true); enableDragStop.setValue(true); enableActivateDrop.setValue(true); enableDeactivateDrop.setValue(true); enableOverDrop.setValue(true); enableOutDrop.setValue(true); enableDrop.setValue(true); } private boolean isActivateDropLoggingEnable() { return enableActivateDrop.getValue(); } private boolean isBeforeDragStartLoggingEnable() { return enableBeforeDragStart.getValue(); } private boolean isDeactivateDropLoggingEnable() { return enableDeactivateDrop.getValue(); } private boolean isDragMoveLoggingEnable() { return enableDragMove.getValue(); } private boolean isDragStartLoggingEnable() { return enableDragStart.getValue(); } private boolean isDragStopLoggingEnable() { return enableDragStop.getValue(); } private boolean isDropLoggingEnable() { return enableDrop.getValue(); } private boolean isOutDropLoggingEnable() { return enableOutDrop.getValue(); } private boolean isOverDropLoggingEnable() { return enableOverDrop.getValue(); } private void log(String log) { String innerHtml = $(logEventWindow).html(); innerHtml += log + "<br />"; $(logEventWindow).html(innerHtml); logEventWindow.setScrollTop(logEventWindow.getScrollHeight()); } private void toogleWindowLog() { if (windowOpen) { $("#logRow").hide(); $(clearLogButton.getElement()).hide(); windowOpen = false; windowToogleButton.setText(SHOW_WINDOW_EVENT); } else { $("#logRow").show(); $(clearLogButton.getElement()).show(); windowOpen = true; windowToogleButton.setText(HIDE_WINDOW_EVENT); } } }