/******************************************************************************* * Copyright (c) 2012 The PDT Extension Group (https://github.com/pdt-eg) * 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 ******************************************************************************/ package org.pdtextensions.core.ui.codemanipulation; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.core.IType; import org.eclipse.php.ui.CodeGeneration; import org.pdtextensions.core.log.Logger; public class InterfaceStub extends ElementStub { public InterfaceStub(IScriptProject scriptProject, String name, String namespace, List<IType> ancestors, boolean generateComments) { this.scriptProject = scriptProject; interfaces = ancestors; this.generateComments = generateComments; this.name = name; this.namespace = namespace; } @Override protected void generateCode() { try { StringBuilder buffer = new StringBuilder("<?php"); buffer.append(lineDelim); buffer.append(generateNamespacePart()); if (generateComments == true) buffer.append(CodeGeneration.getTypeComment(scriptProject, name, lineDelim) + lineDelim); buffer.append("interface " + name); buffer.append(generateAncestorsPart()); buffer.append("{" + lineDelim); buffer.append(lineDelim + "}"); code = buffer.toString(); } catch (CoreException e) { Logger.logException(e); } } private String generateAncestorsPart() { String code = new String(); if (!interfaces.isEmpty()) { code = " extends"; int size = interfaces.size(); int i = 1; String prefix; for (IType interfaceObject : interfaces) { // If there are namespace we will add it in use section if not, // we need add "\" before name; prefix = (getUseNamespaceString(interfaceObject) == null ? "\\" : ""); if (i < size) { code += " " + prefix + interfaceObject.getElementName() + ","; } else { code += " " + prefix + interfaceObject.getElementName(); } i = i + 1; } } return code; } }