blob: 7cfbc8ef7a979e83c89f9887b8514313274ec7cc [file] [log] [blame]
package org.eclipse.jst.pagedesigner.itemcreation.command;
import javax.xml.namespace.QName;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jst.jsf.common.dom.TagIdentifier;
import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ResolverUtil;
import org.eclipse.jst.pagedesigner.dom.IDOMPosition;
import org.eclipse.jst.pagedesigner.dom.ValidatorSupport;
import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData;
import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter;
import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager;
import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
/**
* Tag container creation command for tags dropped on to the WPE by the user
*
* @see TagContainerCreationCommand
*
* @author Debajit Adhikary
*
*/
public class UserCustomizedContainerCreationCommand extends
TagContainerCreationCommand
{
/**
* Customization data for tag dropped
*
* @see ICustomizationData
* @see IAdaptable
*/
private final IAdaptable _data;
/**
* @param domPosition
* Position in the DOM where the tag is to be inserted
* @param containerTag
* Container tag
* @param tagBeingCreated
* The tag which was dropped
* @param data
* Customization data for the tag dropped
*
* @see TagContainerCreationCommand#TagContainerCreationCommand(IDOMPosition, TagIdentifier, TagIdentifier)
*/
public UserCustomizedContainerCreationCommand(IDOMPosition domPosition,
TagIdentifier containerTag, TagIdentifier tagBeingCreated, IAdaptable data)
{
super(domPosition, containerTag, tagBeingCreated);
_data = data;
}
/* (non-Javadoc)
* @see org.eclipse.jst.pagedesigner.itemcreation.command.TagContainerCreationCommand#getContainerCustomizationData()
*/
@Override
protected IAdaptable getContainerCustomizationData()
{
return _data;
}
@Override
protected IDOMPosition doExecute()
{
final IDOMPosition domPosition = getDomPosition();
final QName containerQName = getContainerTag().asQName();
IDOMPosition newPosition = domPosition;
final IDOMModel model = ((IDOMNode) domPosition.getContainerNode())
.getModel();
final IFile fileForDocument = ResolverUtil.getFileForDocument(model.getStructuredDocument());
final ITagDropSourceData creationProvider = TagToolCreationAdapter
.findProviderForContainer(containerQName, PaletteItemManager.createPaletteContext(fileForDocument));
newPosition = ValidatorSupport.insertContainer(domPosition,
model, creationProvider, getContainerCustomizationData());
if (newPosition == null)
{
newPosition = domPosition;
}
return newPosition;
}
}