blob: d1eaf86771ea871fccf8de74a5d62af0b35a66d9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Sybase, 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:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.dnd.internal;
import java.util.Map;
import org.eclipse.gef.commands.Command;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jst.jsf.common.ui.internal.dialogs.CommonWizardDialog;
import org.eclipse.jst.pagedesigner.dnd.ILocalDropHandler;
import org.eclipse.jst.pagedesigner.dom.IDOMPosition;
import org.eclipse.jst.pagedesigner.viewer.IHTMLGraphicalViewer;
import org.eclipse.swt.widgets.Shell;
import org.w3c.dom.Node;
/**
* This is the command that performs the drop operation. There is no need for
* this command to go into command stack, it simply open wizards, and let
* wizards to handle the remaining things.
*
* @author mengbo
*/
public class LocalDropCommand extends Command {
/**
* the map from feedback to ILocalDropHandler
*/
private Map _feedbackToHandlers;
private IHTMLGraphicalViewer _viewer;
private Object _localObject;
private Node _widget;
private IDOMPosition _position;
/**
* constructor
* @param viewer
* @param localObject
* @param feedbackHandlers
*/
public LocalDropCommand(IHTMLGraphicalViewer viewer, Object localObject,
Map feedbackHandlers) {
_viewer = viewer;
_localObject = localObject;
_feedbackToHandlers = feedbackHandlers;
}
/**
* @param widget
*/
public void setWidget(Node widget) {
_widget = widget;
}
/**
* @param position
*/
public void setDOMPosition(IDOMPosition position) {
_position = position;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.commands.Command#execute()
*/
public void execute() {
if (_feedbackToHandlers.size() == 1) {
// only have one choice.
ILocalDropHandler handler = (ILocalDropHandler) _feedbackToHandlers
.values().toArray()[0];
if (handler.useWizard(_localObject, _viewer)) {
IWizard wizard;
if (_widget != null) {
wizard = handler.getWizard(_localObject, _widget, _viewer);
} else {
wizard = handler
.getWizard(_localObject, _position, _viewer);
}
CommonWizardDialog wizardDialog = new CommonWizardDialog(
getShell(), wizard);
wizardDialog.setTitle(Messages
.getString("LocalDropCommand.DropHandler")); //$NON-NLS-1$
wizardDialog.create();
wizardDialog.open();
} else {
if (_widget != null) {
handler.doUpdateWidget(_localObject, _widget, _viewer);
} else {
handler.doInsertElements(_localObject, _position, _viewer);
}
}
} else {
CommonWizardDialog wizardDialog = new CommonWizardDialog(
getShell(), getWizard());
wizardDialog.setTitle(Messages
.getString("LocalDropCommand.DropHandler")); //$NON-NLS-1$
wizardDialog.setBlockOnOpen(false);
wizardDialog.create();
wizardDialog.open();
}
}
/**
* @return
*/
private IWizard getWizard() {
if (_widget != null) {
return new DropSelectionWizard(_viewer, _localObject,
_feedbackToHandlers, _widget);
}
return new DropSelectionWizard(_viewer, _localObject,
_feedbackToHandlers, _position);
}
/**
* @return
*/
private Shell getShell() {
return _viewer.getControl().getShell();
}
}