/****************************************************************************
* Copyright (c) 2004, 2007 Composent, Inc. 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:
* Composent, Inc. - initial API and implementation
*****************************************************************************/
package org.eclipse.ecf.internal.example.collab.ui;
import org.eclipse.ecf.core.user.IUser;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Widget;
class TreeDropTarget extends ChatDropTarget {
public TreeDropTarget(LineChatClientView view, Control control,
ChatComposite comp) {
super(view, control, comp);
}
protected Object getData(DropTargetEvent event) {
Widget item = event.item;
if (item != null) {
return item.getData();
} else {
return null;
}
}
public void dragEnter(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
if ((event.operations & DND.DROP_COPY) != 0) {
event.detail = DND.DROP_COPY;
} else {
event.detail = DND.DROP_NONE;
}
}
Object item = getData(event);
if (item == null) {
event.detail = DND.DROP_NONE;
return;
} else {
if (item instanceof IUser) {
selectedUser = (IUser) item;
} else {
event.detail = DND.DROP_NONE;
return;
}
}
// will accept text but prefer to have files dropped
for (int i = 0; i < event.dataTypes.length; i++) {
if (fileTransfer.isSupportedType(event.dataTypes[i])) {
event.currentDataType = event.dataTypes[i];
// files should only be copied
if (event.detail != DND.DROP_COPY) {
event.detail = DND.DROP_NONE;
selectedUser = null;
}
break;
}
}
}
public void dragOver(DropTargetEvent event) {
if ((event.operations & DND.DROP_COPY) != 0) {
event.detail = DND.DROP_COPY;
} else {
event.detail = DND.DROP_NONE;
}
Object item = getData(event);
if (item == null) {
event.detail = DND.DROP_NONE;
} else {
if (item instanceof IUser) {
selectedUser = (IUser) item;
} else {
event.detail = DND.DROP_NONE;
}
}
}
}