/*******************************************************************************
* Copyright (c) 2000, 2008 QNX Software Systems 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:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.model;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IInclude;
import org.eclipse.cdt.core.model.ITranslationUnit;
/**
* @author User
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class CreateNamespaceOperation extends CreateElementInTUOperation {
/**
* The name of the include to be created.
*/
protected String fNamespace;
/**
* When executed, this operation will add an include to the given translation unit.
*/
public CreateNamespaceOperation(String namespace, ITranslationUnit parentElement) {
super(parentElement);
fNamespace = namespace;
}
/**
* @see CreateElementInTUOperation#generateResultHandle
*/
@Override
protected ICElement generateResultHandle() {
return getTranslationUnit().getNamespace(fNamespace);
}
/**
* @see CreateElementInTUOperation#getMainTaskName
*/
@Override
public String getMainTaskName(){
return "operation.createNamespaceProgress"; //$NON-NLS-1$
}
/**
* Sets the correct position for the new namespace:<ul>
* <li> after the last namespace
* </ul>
*/
@Override
protected void initializeDefaultPosition() {
try {
ITranslationUnit cu = getTranslationUnit();
IInclude[] includes = cu.getIncludes();
if (includes.length > 0) {
createAfter(includes[includes.length - 1]);
return;
}
} catch (CModelException npe) {
}
}
/*
* TODO: Use the ASTRewrite once it is available.
*/
@Override
protected String generateElement(ITranslationUnit unit) throws CModelException {
StringBuffer sb = new StringBuffer();
sb.append("namespace "); //$NON-NLS-1$;
sb.append(fNamespace).append(' ').append('{');
sb.append(Util.LINE_SEPARATOR);
sb.append('}'); //;
sb.append(Util.LINE_SEPARATOR);
return sb.toString();
}
}