blob: 70eec6413bafb1f735886c28a9550c8a2c2bc4e0 [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.jsf.ui.commands.jsfhtml;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
import org.w3c.dom.Element;
import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
import org.eclipse.jst.pagedesigner.commands.DesignerCommand;
import org.eclipse.jst.pagedesigner.utils.JSPUtil;
/**
* @author mengbo
* @version 1.5
*/
public class AddJSFCoreChildCommand extends DesignerCommand
{
// either use single name/value pair
private String _attrName;
private String _attrValue;
// or use a map.
private Map _attrMap;
private String _coreChildLocalName;
private IDOMElement _parent;
/**
* @param parent
* @param coreChildLocalName
* @param attributes
*/
public AddJSFCoreChildCommand(IDOMElement parent, String coreChildLocalName, Map attributes)
{
super("", parent); //$NON-NLS-1$
StringBuffer buffer = new StringBuffer(CommandResources.getString("AddJSFCoreChildCommand.Label.Add")); //$NON-NLS-1$
if(coreChildLocalName != null && coreChildLocalName.length() > 0)
{
buffer.append(coreChildLocalName.substring(0,1).toUpperCase());
buffer.append(coreChildLocalName.substring(1));
}
setLabel(buffer.toString());
this._parent = parent;
this._coreChildLocalName = coreChildLocalName;
this._attrMap = attributes;
}
/**
* @param parent
* @param coreChildLocalName
* @param aname
* @param avalue
*/
public AddJSFCoreChildCommand(IDOMElement parent, String coreChildLocalName, String aname, String avalue)
{
super("", parent); //$NON-NLS-1$
StringBuffer buffer = new StringBuffer(CommandResources.getString("AddJSFCoreChildCommand.Label.Add")); //$NON-NLS-1$
if(coreChildLocalName != null && coreChildLocalName.length() > 0)
{
buffer.append(coreChildLocalName.substring(0,1).toUpperCase());
buffer.append(coreChildLocalName.substring(1));
}
setLabel(buffer.toString());
this._parent = parent;
this._coreChildLocalName = coreChildLocalName;
this._attrName = aname;
this._attrValue = avalue;
}
/* (non-Javadoc)
* @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#doExecute()
*/
protected void doExecute()
{
String prefix = JSPUtil.getOrCreatePrefix(this.getModel(), ITLDConstants.URI_JSF_CORE, "f"); //$NON-NLS-1$
String tag = _coreChildLocalName;
Element child = _parent.getOwnerDocument().createElement(tag);
child.setPrefix(prefix);
if (_attrMap != null)
{
for (Iterator iter = _attrMap.keySet().iterator(); iter.hasNext();)
{
String key = (String) iter.next();
String value = (String) _attrMap.get(key);
child.setAttribute(key, value);
}
}
if (_attrName != null)
{
child.setAttribute(_attrName, _attrValue);
}
_parent.appendChild(child);
formatNode(child);
}
/* (non-Javadoc)
* @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#getAfterCommandDesignerSelection()
*/
protected ISelection getAfterCommandDesignerSelection()
{
return toDesignSelection(_parent);
}
}