Package org.eclipse.jst.pagedesigner.itemcreation.command

Source Code of org.eclipse.jst.pagedesigner.itemcreation.command.UserCustomizedContainerCreationCommand

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;
    }
}
TOP

Related Classes of org.eclipse.jst.pagedesigner.itemcreation.command.UserCustomizedContainerCreationCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.