/******************************************************************************* * 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$ } }