blob: 3c8a54575e7731cfbe409d0b59310475baa8434d [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2002, 2010 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
****************************************************************************/
package org.eclipse.gmf.runtime.common.ui.services.dnd.drag;
import java.lang.ref.WeakReference;
import org.eclipse.gmf.runtime.common.ui.services.dnd.core.ITransferAgent;
import org.eclipse.swt.dnd.DragSourceEvent;
/**
* Parent of all the transfer drag source adapters. Every transfer type drag
* source adapter should override the methods in the
* <code>DragSourceListener</code> interface.
*
* @author Vishy Ramaswamy
*/
public class TransferDragSourceAdapter
implements ITransferDragSourceListener {
/**
* Attribute for the drag source listeners.
*/
private IDragSourceListener[] listeners;
/**
* Attribute for the transfer agent.
*/
private final ITransferAgent transferAgent;
/**
* Attribute for the drag source context.
*/
private WeakReference<IDragSourceContext> context;
/**
* Constructor for TransferDragSourceAdapter.
*
* @param aTransferAgent
* ITransferAgent that this class is an adpater for
*/
public TransferDragSourceAdapter(ITransferAgent aTransferAgent) {
super();
assert null != aTransferAgent : "aTransferAgent cannot be null"; //$NON-NLS-1$
this.transferAgent = aTransferAgent;
}
/**
* Returns the listeners.
*
* @return IDragSourceListener[]
*/
protected final IDragSourceListener[] getListeners() {
return listeners;
}
/**
* Returns the context.
*
* @return IDragSourceContext
*/
protected final IDragSourceContext getContext() {
if (context == null) return null;
return context.get();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.dnd.DragSourceListener#dragFinished(org.eclipse.swt.dnd.DragSourceEvent)
*/
public void dragFinished(DragSourceEvent event) {
/* Set the event to all the listeners */
for (int i = 0; i < getListeners().length; i++) {
getListeners()[i].dragFinished(event);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.dnd.DragSourceListener#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
public void dragSetData(DragSourceEvent event) {
/* Set the event to all the listeners */
for (int i = 0; i < getListeners().length; i++) {
getListeners()[i].dragSetData(event);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.dnd.DragSourceListener#dragStart(org.eclipse.swt.dnd.DragSourceEvent)
*/
public void dragStart(DragSourceEvent event) {
/* Set the event to all the listeners */
for (int i = 0; i < getListeners().length; i++) {
getListeners()[i].dragStart(event);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gmf.runtime.common.ui.services.dnd.drag.ITransferDragSourceListener#init(org.eclipse.gmf.runtime.common.ui.services.dnd.drag.IDragSourceListener[],
* org.eclipse.gmf.runtime.common.ui.services.dnd.drag.IDragSourceContext)
*/
public final void init(IDragSourceListener[] dragSourceListeners,
IDragSourceContext dragSourceContext) {
assert null != dragSourceListeners : "list of dragSourceListeners cannot be null"; //$NON-NLS-1$
assert null != dragSourceContext : "dragSourceContext cannot be null"; //$NON-NLS-1$
this.listeners = dragSourceListeners;
this.context = new WeakReference<IDragSourceContext>(dragSourceContext);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gmf.runtime.common.ui.services.dnd.drag.ITransferDragSourceListener#getTransferAgent()
*/
public final ITransferAgent getTransferAgent() {
return transferAgent;
}
}