X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java index 6fa222c..8105380 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java @@ -14,18 +14,22 @@ import java.util.ArrayList; 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.IPackageFragmentRoot; +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; @@ -41,10 +45,19 @@ import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.Separator; 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; @@ -65,8 +78,8 @@ import org.eclipse.swt.widgets.Control; * example usage of NewTypeWizardPage. *

* - * @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 */ @@ -170,7 +183,7 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { private SelectionButtonDialogFieldGroup fAccMdfButtons; private SelectionButtonDialogFieldGroup fOtherMdfButtons; - // private IType fCreatedType; + private IType fCreatedType; protected IStatus fEnclosingTypeStatus; protected IStatus fPackageStatus; @@ -194,7 +207,7 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { */ public NewTypeWizardPage(boolean isClass, String pageName) { super(pageName); - // fCreatedType= null; + fCreatedType= null; fIsClass = isClass; @@ -395,7 +408,7 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { 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); } @@ -588,7 +601,7 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { // -------- 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); @@ -1274,14 +1287,14 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { * * @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) { @@ -1292,39 +1305,39 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { // 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(); // @@ -1363,41 +1376,41 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { // // 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 @@ -1445,9 +1458,9 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { * @return the created type * @see #createType(IProgressMonitor) */ - // public IType getCreatedType() { - // return fCreatedType; - // } + public IType getCreatedType() { + return fCreatedType; + } // ---- construct cu body---------------- @@ -1483,25 +1496,25 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { /* * 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 @@ -1572,24 +1585,24 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { * @return the type comment or null 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) @@ -1614,10 +1627,16 @@ public abstract class NewTypeWizardPage extends NewContainerWizardPage { 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; }