/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Google, Inc. - initial API and implementation
*******************************************************************************/
package com.windowtester.swt.event.model;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import com.windowtester.internal.runtime.MouseConfig;
import com.windowtester.recorder.event.user.UISemanticEvent;
/**
* Helper for managing drag events.
*/
public class DNDHelper
/* $codepro.preprocessor.if version >= 3.3 $ */
implements org.eclipse.swt.events.DragDetectListener
/* $codepro.preprocessor.endif $ */
{
private UISemanticEvent dragSource;
/* (non-Javadoc)
* @see org.eclipse.swt.events.DragDetectListener#dragDetected(org.eclipse.swt.events.DragDetectEvent)
*/
/* $codepro.preprocessor.if version >= 3.3 $ */
public void dragDetected(org.eclipse.swt.events.DragDetectEvent e) {
Event event = synthesizeEvent(e);
dragSource = SWTSemanticEventFactory.createWidgetSelectionEvent(event);
System.out.println("drag source: " + dragSource);
}
/* $codepro.preprocessor.endif $ */
/* $codepro.preprocessor.if version >= 3.3 $ */
private Event synthesizeEvent(org.eclipse.swt.events.DragDetectEvent e) {
Event event = new Event();
event.button = MouseConfig.PRIMARY_BUTTON;
event.widget = e.widget;
event.x = e.x;
event.y = e.y;
return event;
}
/* $codepro.preprocessor.endif $ */
public void startListeningTo(Control control) {
/* $codepro.preprocessor.if version >= 3.3 $ */
if (control instanceof Canvas) {
((Canvas)control).addDragDetectListener(this);
}
/* $codepro.preprocessor.endif $ */
}
public void stopListeningTo(Control control) {
/* $codepro.preprocessor.if version >= 3.3 $ */
if (control instanceof Canvas) {
((Canvas)control).removeDragDetectListener(this);
}
/* $codepro.preprocessor.endif $ */
}
public void processed() {
dragSource = null;
}
public UISemanticEvent getDragSource() {
return dragSource;
}
}