import java.util.List;
import net.sourceforge.phpdt.core.Flags;
+import net.sourceforge.phpdt.core.IBuffer;
import net.sourceforge.phpdt.core.ICompilationUnit;
import net.sourceforge.phpdt.core.IJavaElement;
import net.sourceforge.phpdt.core.IPackageFragment;
+import net.sourceforge.phpdt.core.ISourceRange;
import net.sourceforge.phpdt.core.IType;
import net.sourceforge.phpdt.core.ToolFactory;
import net.sourceforge.phpdt.core.compiler.IScanner;
import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
import net.sourceforge.phpdt.core.compiler.InvalidInputException;
import net.sourceforge.phpdt.externaltools.internal.ui.StatusInfo;
-import net.sourceforge.phpdt.internal.corext.template.Template;
-import net.sourceforge.phpdt.internal.corext.template.Templates;
+import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility;
import net.sourceforge.phpdt.internal.corext.template.php.JavaContext;
+import net.sourceforge.phpdt.internal.corext.template.php.Templates;
+import net.sourceforge.phpdt.internal.corext.util.JavaModelUtil;
import net.sourceforge.phpdt.internal.ui.PHPUiImages;
import net.sourceforge.phpdt.internal.ui.util.SWTUtil;
import net.sourceforge.phpdt.internal.ui.wizards.NewWizardMessages;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.StringButtonDialogField;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.StringButtonStatusDialogField;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.StringDialogField;
+import net.sourceforge.phpdt.ui.CodeGeneration;
+import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.templates.Template;
+import org.eclipse.jface.text.templates.TemplateException;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
* example usage of <code>NewTypeWizardPage</code>.
* </p>
*
- * @see org.eclipse.jdt.ui.wizards.NewClassWizardPage
- * @see org.eclipse.jdt.ui.wizards.NewInterfaceWizardPage
+ * @see net.sourceforge.phpdt.ui.wizards.NewClassWizardPage
+ * @see net.sourceforge.phpdt.ui.wizards.NewInterfaceWizardPage
*
* @since 2.0
*/
private SelectionButtonDialogFieldGroup fAccMdfButtons;
private SelectionButtonDialogFieldGroup fOtherMdfButtons;
- // private IType fCreatedType;
+ private IType fCreatedType;
protected IStatus fEnclosingTypeStatus;
protected IStatus fPackageStatus;
*/
public NewTypeWizardPage(boolean isClass, String pageName) {
super(pageName);
- // fCreatedType= null;
+ fCreatedType= null;
fIsClass = isClass;
Button button = fEnclosingTypeDialogField.getChangeControl(composite);
gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.heightHint = SWTUtil.getButtonHeigthHint(button);
+ gd.heightHint = SWTUtil.getButtonHeightHint(button);
gd.widthHint = SWTUtil.getButtonWidthHint(button);
button.setLayoutData(gd);
}
// -------- update message ----------------
/*
- * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#handleFieldChanged(String)
+ * @see net.sourceforge.phpdt.ui.wizards.NewContainerWizardPage#handleFieldChanged(String)
*/
protected void handleFieldChanged(String fieldName) {
super.handleFieldChanged(fieldName);
*
* @param monitor a progress monitor to report progress.
*/
-// public void createType(IProgressMonitor monitor) throws CoreException, InterruptedException {
-// if (monitor == null) {
-// monitor = new NullProgressMonitor();
-// }
-//
-// monitor.beginTask(NewWizardMessages.getString("NewTypeWizardPage.operationdesc"), 10); //$NON-NLS-1$
-// ICompilationUnit createdWorkingCopy = null;
-// try {
+ public void createType(IProgressMonitor monitor) throws CoreException, InterruptedException {
+ if (monitor == null) {
+ monitor = new NullProgressMonitor();
+ }
+
+ monitor.beginTask(NewWizardMessages.getString("NewTypeWizardPage.operationdesc"), 10); //$NON-NLS-1$
+ ICompilationUnit createdWorkingCopy = null;
+ try {
// IPackageFragmentRoot root = getPackageFragmentRoot();
// IPackageFragment pack = getPackageFragment();
// if (pack == null) {
// String packName = pack.getElementName();
// pack = root.createPackageFragment(packName, true, null);
// }
-//
-// monitor.worked(1);
-//
-// String clName = getTypeName();
-//
-// boolean isInnerClass = isEnclosingTypeSelected();
-//
-// IType createdType;
+
+ monitor.worked(1);
+
+ String clName = getTypeName();
+
+ boolean isInnerClass = isEnclosingTypeSelected();
+
+ IType createdType;
// ImportsStructure imports;
-// int indent = 0;
-//
-// IPreferenceStore store = PreferenceConstants.getPreferenceStore();
+ int indent = 0;
+
+ IPreferenceStore store = PreferenceConstants.getPreferenceStore();
// String[] prefOrder = JavaPreferencesSettings.getImportOrderPreference(store);
// int threshold = JavaPreferencesSettings.getImportNumberThreshold(store);
//
-// String lineDelimiter = null;
+ String lineDelimiter = null;
// if (!isInnerClass) {
-// lineDelimiter = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ lineDelimiter = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
//
-// ICompilationUnit parentCU = pack.createCompilationUnit(clName + ".java", "", false, new SubProgressMonitor(monitor, 2)); //$NON-NLS-1$ //$NON-NLS-2$
+// ICompilationUnit parentCU = pack.createCompilationUnit(clName + ".php", "", false, new SubProgressMonitor(monitor, 2)); //$NON-NLS-1$ //$NON-NLS-2$
// createdWorkingCopy = (ICompilationUnit) parentCU.getSharedWorkingCopy(null, JavaUI.getBufferFactory(), null);
//
// imports = new ImportsStructure(createdWorkingCopy, prefOrder, threshold, false);
// // add an import that will be removed again. Having this import solves 14661
// imports.addImport(pack.getElementName(), getTypeName());
//
-// String typeContent = constructTypeStub(new ImportsManager(imports), lineDelimiter);
-//
+ String typeContent = constructTypeStub(lineDelimiter);//new ImportsManager(imports), lineDelimiter);
+
// String cuContent = constructCUContent(parentCU, typeContent, lineDelimiter);
-//
+
// createdWorkingCopy.getBuffer().setContents(cuContent);
//
-// createdType = createdWorkingCopy.getType(clName);
+ createdType = createdWorkingCopy.getType(clName);
// } else {
// IType enclosingType = getEnclosingType();
//
// // add imports for superclass/interfaces, so types can be resolved correctly
// imports.create(false, new SubProgressMonitor(monitor, 1));
//
-// ICompilationUnit cu = createdType.getCompilationUnit();
-// synchronized (cu) {
-// cu.reconcile();
-// }
+ ICompilationUnit cu = createdType.getCompilationUnit();
+ synchronized (cu) {
+ cu.reconcile();
+ }
// createTypeMembers(createdType, new ImportsManager(imports), new SubProgressMonitor(monitor, 1));
//
// // add imports
// imports.create(false, new SubProgressMonitor(monitor, 1));
-//
-// synchronized (cu) {
-// cu.reconcile();
-// }
-// ISourceRange range = createdType.getSourceRange();
-//
-// IBuffer buf = cu.getBuffer();
-// String originalContent = buf.getText(range.getOffset(), range.getLength());
-// String formattedContent = StubUtility.codeFormat(originalContent, indent, lineDelimiter);
-// buf.replace(range.getOffset(), range.getLength(), formattedContent);
-// if (!isInnerClass) {
-// String fileComment = getFileComment(cu);
-// if (fileComment != null && fileComment.length() > 0) {
-// buf.replace(0, 0, fileComment + lineDelimiter);
-// }
-// cu.commit(false, new SubProgressMonitor(monitor, 1));
-// } else {
-// monitor.worked(1);
-// }
-// fCreatedType = createdType;
-// } finally {
-// if (createdWorkingCopy != null) {
-// createdWorkingCopy.destroy();
-// }
-// monitor.done();
-// }
-// }
+
+ synchronized (cu) {
+ cu.reconcile();
+ }
+ ISourceRange range = createdType.getSourceRange();
+
+ IBuffer buf = cu.getBuffer();
+ String originalContent = buf.getText(range.getOffset(), range.getLength());
+ String formattedContent = StubUtility.codeFormat(originalContent, indent, lineDelimiter);
+ buf.replace(range.getOffset(), range.getLength(), formattedContent);
+ if (!isInnerClass) {
+ String fileComment = getFileComment(cu);
+ if (fileComment != null && fileComment.length() > 0) {
+ buf.replace(0, 0, fileComment + lineDelimiter);
+ }
+ cu.commit(false, new SubProgressMonitor(monitor, 1));
+ } else {
+ monitor.worked(1);
+ }
+ fCreatedType = createdType;
+ } finally {
+ if (createdWorkingCopy != null) {
+ createdWorkingCopy.destroy();
+ }
+ monitor.done();
+ }
+ }
/**
* Uses the New Java file template from the code template page to generate a
* @return the created type
* @see #createType(IProgressMonitor)
*/
- // public IType getCreatedType() {
- // return fCreatedType;
- // }
+ public IType getCreatedType() {
+ return fCreatedType;
+ }
// ---- construct cu body----------------
/*
* Called from createType to construct the source for this type
*/
- // private String constructTypeStub(ImportsManager imports, String lineDelimiter) {
- // StringBuffer buf= new StringBuffer();
- //
- // int modifiers= getModifiers();
- // buf.append(Flags.toString(modifiers));
- // if (modifiers != 0) {
- // buf.append(' ');
- // }
- // buf.append(fIsClass ? "class " : "interface "); //$NON-NLS-2$ //$NON-NLS-1$
- // buf.append(getTypeName());
- // writeSuperClass(buf, imports);
- // writeSuperInterfaces(buf, imports);
- // buf.append('{');
- // buf.append(lineDelimiter);
- // buf.append(lineDelimiter);
- // buf.append('}');
- // buf.append(lineDelimiter);
- // return buf.toString();
- // }
+ private String constructTypeStub(String lineDelimiter) { // ImportsManager imports, String lineDelimiter) {
+ StringBuffer buf= new StringBuffer();
+
+ int modifiers= getModifiers();
+ buf.append(Flags.toString(modifiers));
+ if (modifiers != 0) {
+ buf.append(' ');
+ }
+ buf.append(fIsClass ? "class " : "interface "); //$NON-NLS-2$ //$NON-NLS-1$
+ buf.append(getTypeName());
+// writeSuperClass(buf, imports);
+// writeSuperInterfaces(buf, imports);
+ buf.append('{');
+ buf.append(lineDelimiter);
+ buf.append(lineDelimiter);
+ buf.append('}');
+ buf.append(lineDelimiter);
+ return buf.toString();
+ }
/**
* @deprecated Overwrite createTypeMembers(IType, IImportsManager, IProgressMonitor) instead
* @return the type comment or <code>null</code> if a type comment
* is not desired
*/
- // protected String getTypeComment(ICompilationUnit parentCU) {
- // if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.CODEGEN_ADD_COMMENTS)) {
- // try {
- // StringBuffer typeName= new StringBuffer();
- // if (isEnclosingTypeSelected()) {
- // typeName.append(JavaModelUtil.getTypeQualifiedName(getEnclosingType())).append('.');
- // }
- // typeName.append(getTypeName());
- // String comment= CodeGeneration.getTypeComment(parentCU, typeName.toString(), String.valueOf('\n'));
- // if (comment != null && isValidComment(comment)) {
- // return comment;
- // }
- // } catch (CoreException e) {
- // PHPeclipsePlugin.log(e);
- // }
- // }
- // return null;
- // }
+ protected String getTypeComment(ICompilationUnit parentCU) {
+ if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.CODEGEN_ADD_COMMENTS)) {
+ try {
+ StringBuffer typeName= new StringBuffer();
+ if (isEnclosingTypeSelected()) {
+ typeName.append(JavaModelUtil.getTypeQualifiedName(getEnclosingType())).append('.');
+ }
+ typeName.append(getTypeName());
+ String comment= CodeGeneration.getTypeComment(parentCU, typeName.toString(), String.valueOf('\n'));
+ if (comment != null && isValidComment(comment)) {
+ return comment;
+ }
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+ return null;
+ }
/**
* @deprecated Use getTemplate(String,ICompilationUnit,int)
try {
Template[] templates = Templates.getInstance().getTemplates(name);
if (templates.length > 0) {
- return JavaContext.evaluateTemplate(templates[0], parentCU, pos);
+ return JavaContext.evaluateTemplate(templates[0], parentCU, pos);
}
} catch (CoreException e) {
PHPeclipsePlugin.log(e);
+ } catch (BadLocationException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (TemplateException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
}
return null;
}