/*******************************************************************************
* Copyright (c) 2004, 2005 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 Jens Lukowski/Innoopract - initial renaming/restructuring
*******************************************************************************/
package org.eclipse.wst.common.ui.internal.dnd;
import org.eclipse.swt.dnd.DND;
import java.util.ArrayList;
import java.util.Collection;
abstract public class DefaultDragAndDropCommand implements DragAndDropCommand {
/**
* This keeps track of the owner that is the target of the drag and drop.
*/
protected Object target;
/**
* This keeps track of the location of the drag and drop.
*/
protected float location;
/**
* This keeps track of the lower range of locations in which the effect of this command remains
* unchanged.
*/
protected float lowerLocationBound;
/**
* This keeps track of the upper range of locations in which the effect of this command remains
* unchanged.
*/
protected float upperLocationBound;
/**
* This keeps track of the permitted operations.
*/
protected int operations;
/**
* This keeps track of the current operation that will be returned by {@link #getOperation}.
*/
protected int operation;
/**
* This keeps track of the feedback that will be returned by {@link #getFeedback}.
*/
protected int feedback;
/**
* This keeps track of the collection of dragged sources.
*/
protected Collection sources;
public DefaultDragAndDropCommand(Object target, float location, int operations, int operation,
Collection sources) {
this.target = target;
this.location = location;
this.operations = operations;
this.operation = operation;
this.sources = new ArrayList(sources);
if (!canExecute()) {
this.operation = DND.DROP_NONE;
}
}
public int getFeedback() {
if (isAfter()) {
return DND.FEEDBACK_INSERT_AFTER;
} else {
return DND.FEEDBACK_INSERT_BEFORE;
}
}
public boolean isAfter() {
return location > 0.5;
}
public int getOperation() {
return operation;
}
public void reinitialize(Object target, float location, int operations, int operation,
Collection sources) {
this.target = target;
this.location = location;
this.operations = operations;
this.operation = operation;
this.sources = new ArrayList(sources);
if (!canExecute()) {
this.operation = DND.DROP_NONE;
}
}
}