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

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

/*******************************************************************************
* Copyright (c) 2001, 2007 Oracle 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:
*     Oracle Corporation - initial API and implementation
*******************************************************************************/
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.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;

/**
* @author cbateman
*
*  * <p><b>Provisional API - subject to change</b></p>
*  Clients may sub-class
*
*/
public class TagContainerCreationCommand extends ContainerCreationCommand {

    /**
     * @param domPosition
     * @param containerTag
     * @param tagBeingCreated
     */
    public TagContainerCreationCommand(IDOMPosition domPosition,
            TagIdentifier containerTag, TagIdentifier tagBeingCreated)
    {
        super(domPosition, containerTag, tagBeingCreated);
    }

    @Override
    protected IDOMPosition doExecute()
    {
        final IDOMPosition domPosition = getDomPosition();
        final QName  containerQName = getContainerTag().asQName();
        boolean hasform = ValidatorSupport.checkContainer(domPosition, containerQName);
        IDOMPosition newPosition = domPosition;
        if (!hasform)
        {
            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;
    }

    /**
     * Override to inject customization data into the tag creation
     * @return a customization data for the container.
     */
    protected IAdaptable getContainerCustomizationData()
    {
        return null;
    }
   
    @Override
    protected final boolean prepare()
    {
        throw new UnsupportedOperationException("don't use"); //$NON-NLS-1$
    }
}
TOP

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

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.