X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java
deleted file mode 100644
index 9819992..0000000
--- a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewTypeWizardPage.java
+++ /dev/null
@@ -1,1956 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package net.sourceforge.phpdt.ui.wizards;
-
-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.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;
-//incastrix
-//import net.sourceforge.phpdt.externaltools.internal.ui.StatusInfo;
-import net.sourceforge.phpeclipse.ui.StatusInfo;
-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.DialogField;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IListAdapter;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IStringButtonAdapter;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.LayoutUtil;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.ListDialogField;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField;
-import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.SelectionButtonDialogFieldGroup;
-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;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * The class NewTypeWizardPage
contains controls and validation
- * routines for a 'New Type WizardPage'. Implementors decide which components to
- * add and to enable. Implementors can also customize the validation code.
- * NewTypeWizardPage
is intended to serve as base class of all
- * wizards that create types like applets, servlets, classes, interfaces, etc.
- *
- * See NewClassWizardPage
or NewInterfaceWizardPage
- * for an example usage of NewTypeWizardPage
.
- *
NewTypeWizardPage
- *
- * @param isClass
- * true
if a new class is to be created; otherwise
- * an interface is to be created
- * @param pageName
- * the wizard page's name
- */
- public NewTypeWizardPage(boolean isClass, String pageName) {
- super(pageName);
- fCreatedType = null;
-
- fIsClass = isClass;
-
- TypeFieldsAdapter adapter = new TypeFieldsAdapter();
-
- fPackageDialogField = new StringButtonStatusDialogField(adapter);
- fPackageDialogField.setDialogFieldListener(adapter);
- fPackageDialogField.setLabelText(NewWizardMessages
- .getString("NewTypeWizardPage.package.label")); //$NON-NLS-1$
- fPackageDialogField.setButtonLabel(NewWizardMessages
- .getString("NewTypeWizardPage.package.button")); //$NON-NLS-1$
- fPackageDialogField.setStatusWidthHint(NewWizardMessages
- .getString("NewTypeWizardPage.default")); //$NON-NLS-1$
-
- fEnclosingTypeSelection = new SelectionButtonDialogField(SWT.CHECK);
- fEnclosingTypeSelection.setDialogFieldListener(adapter);
- fEnclosingTypeSelection.setLabelText(NewWizardMessages
- .getString("NewTypeWizardPage.enclosing.selection.label")); //$NON-NLS-1$
-
- fEnclosingTypeDialogField = new StringButtonDialogField(adapter);
- fEnclosingTypeDialogField.setDialogFieldListener(adapter);
- fEnclosingTypeDialogField.setButtonLabel(NewWizardMessages
- .getString("NewTypeWizardPage.enclosing.button")); //$NON-NLS-1$
-
- fTypeNameDialogField = new StringDialogField();
- fTypeNameDialogField.setDialogFieldListener(adapter);
- fTypeNameDialogField.setLabelText(NewWizardMessages
- .getString("NewTypeWizardPage.typename.label")); //$NON-NLS-1$
-
- fSuperClassDialogField = new StringButtonDialogField(adapter);
- fSuperClassDialogField.setDialogFieldListener(adapter);
- fSuperClassDialogField.setLabelText(NewWizardMessages
- .getString("NewTypeWizardPage.superclass.label")); //$NON-NLS-1$
- fSuperClassDialogField.setButtonLabel(NewWizardMessages
- .getString("NewTypeWizardPage.superclass.button")); //$NON-NLS-1$
-
- String[] addButtons = new String[] {
- /* 0 */
- NewWizardMessages.getString("NewTypeWizardPage.interfaces.add"), //$NON-NLS-1$
- /* 1 */
- null,
- /* 2 */
- NewWizardMessages
- .getString("NewTypeWizardPage.interfaces.remove") //$NON-NLS-1$
- };
- fSuperInterfacesDialogField = new ListDialogField(adapter, addButtons,
- new InterfacesListLabelProvider());
- fSuperInterfacesDialogField.setDialogFieldListener(adapter);
- String interfaceLabel = fIsClass ? NewWizardMessages
- .getString("NewTypeWizardPage.interfaces.class.label") : NewWizardMessages.getString("NewTypeWizardPage.interfaces.ifc.label"); //$NON-NLS-1$ //$NON-NLS-2$
- fSuperInterfacesDialogField.setLabelText(interfaceLabel);
- fSuperInterfacesDialogField.setRemoveButtonIndex(2);
-
- String[] buttonNames1 = new String[] {
- /* 0 == PUBLIC_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.public"), //$NON-NLS-1$
- /* 1 == DEFAULT_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.default"), //$NON-NLS-1$
- /* 2 == PRIVATE_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.private"), //$NON-NLS-1$
- /* 3 == PROTECTED_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.protected") //$NON-NLS-1$
- };
- fAccMdfButtons = new SelectionButtonDialogFieldGroup(SWT.RADIO,
- buttonNames1, 4);
- fAccMdfButtons.setDialogFieldListener(adapter);
- fAccMdfButtons.setLabelText(NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.acc.label")); //$NON-NLS-1$
- fAccMdfButtons.setSelection(0, true);
-
- String[] buttonNames2;
- if (fIsClass) {
- buttonNames2 = new String[] {
- /* 0 == ABSTRACT_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.abstract"), //$NON-NLS-1$
- /* 1 == FINAL_INDEX */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.final"), //$NON-NLS-1$
- /* 2 */
- NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.static") //$NON-NLS-1$
- };
- fStaticMdfIndex = 2; // index of the static checkbox is 2
- } else {
- buttonNames2 = new String[] { NewWizardMessages
- .getString("NewTypeWizardPage.modifiers.static") //$NON-NLS-1$
- };
- fStaticMdfIndex = 0; // index of the static checkbox is 0
- }
-
- fOtherMdfButtons = new SelectionButtonDialogFieldGroup(SWT.CHECK,
- buttonNames2, 4);
- fOtherMdfButtons.setDialogFieldListener(adapter);
-
- fAccMdfButtons.enableSelectionButton(PRIVATE_INDEX, false);
- fAccMdfButtons.enableSelectionButton(PROTECTED_INDEX, false);
- fOtherMdfButtons.enableSelectionButton(fStaticMdfIndex, false);
-
- fPackageStatus = new StatusInfo();
- fEnclosingTypeStatus = new StatusInfo();
-
- fCanModifyPackage = true;
- fCanModifyEnclosingType = true;
- updateEnableState();
-
- fTypeNameStatus = new StatusInfo();
- // fSuperClassStatus= new StatusInfo();
- // fSuperInterfacesStatus= new StatusInfo();
- fModifierStatus = new StatusInfo();
- }
-
- /**
- * Initializes all fields provided by the page with a given selection.
- *
- * @param elem
- * the selection used to intialize this page or
- * null
- * if no selection was available
- */
- protected void initTypePage(IJavaElement elem) {
- String initSuperclass = "java.lang.Object"; //$NON-NLS-1$
- ArrayList initSuperinterfaces = new ArrayList(5);
-
- IPackageFragment pack = null;
- IType enclosingType = null;
-
- if (elem != null) {
- // evaluate the enclosing type
- pack = (IPackageFragment) elem
- .getAncestor(IJavaElement.PACKAGE_FRAGMENT);
- IType typeInCU = (IType) elem.getAncestor(IJavaElement.TYPE);
- if (typeInCU != null) {
- if (typeInCU.getCompilationUnit() != null) {
- enclosingType = typeInCU;
- }
- } else {
- ICompilationUnit cu = (ICompilationUnit) elem
- .getAncestor(IJavaElement.COMPILATION_UNIT);
- if (cu != null) {
- // enclosingType= cu.findPrimaryType();
- }
- }
-
- // try {
- // IType type= null;
- // if (elem.getElementType() == IJavaElement.TYPE) {
- // type= (IType)elem;
- // if (type.exists()) {
- // String superName= JavaModelUtil.getFullyQualifiedName(type);
- // if (type.isInterface()) {
- // initSuperinterfaces.add(superName);
- // } else {
- // initSuperclass= superName;
- // }
- // }
- // }
- // } catch (JavaModelException e) {
- // PHPeclipsePlugin.log(e);
- // // ignore this exception now
- // }
- }
-
- setPackageFragment(pack, true);
- // setEnclosingType(enclosingType, true);
- setEnclosingTypeSelection(false, true);
-
- setTypeName("", true); //$NON-NLS-1$
- setSuperClass(initSuperclass, true);
- setSuperInterfaces(initSuperinterfaces, true);
- }
-
- // -------- UI Creation ---------
-
- /**
- * Creates a separator line. Expects a GridLayout
with at
- * least 1 column.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createSeparator(Composite composite, int nColumns) {
- (new Separator(SWT.SEPARATOR | SWT.HORIZONTAL)).doFillIntoGrid(
- composite, nColumns, convertHeightInCharsToPixels(1));
- }
-
- /**
- * Creates the controls for the package name field. Expects a
- * GridLayout
with at least 4 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createPackageControls(Composite composite, int nColumns) {
- fPackageDialogField.doFillIntoGrid(composite, nColumns);
- LayoutUtil.setWidthHint(fPackageDialogField.getTextControl(null),
- getMaxFieldWidth());
- LayoutUtil.setHorizontalGrabbing(fPackageDialogField
- .getTextControl(null));
- }
-
- /**
- * Creates the controls for the enclosing type name field. Expects a
- * GridLayout
with at least 4 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createEnclosingTypeControls(Composite composite, int nColumns) {
- // #6891
- Composite tabGroup = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- tabGroup.setLayout(layout);
-
- fEnclosingTypeSelection.doFillIntoGrid(tabGroup, 1);
-
- Control c = fEnclosingTypeDialogField.getTextControl(composite);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint = getMaxFieldWidth();
- gd.horizontalSpan = 2;
- c.setLayoutData(gd);
-
- Button button = fEnclosingTypeDialogField.getChangeControl(composite);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.heightHint = SWTUtil.getButtonHeightHint(button);
- gd.widthHint = SWTUtil.getButtonWidthHint(button);
- button.setLayoutData(gd);
- }
-
- /**
- * Creates the controls for the type name field. Expects a
- * GridLayout
with at least 2 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createTypeNameControls(Composite composite, int nColumns) {
- fTypeNameDialogField.doFillIntoGrid(composite, nColumns - 1);
- DialogField.createEmptySpace(composite);
-
- LayoutUtil.setWidthHint(fTypeNameDialogField.getTextControl(null),
- getMaxFieldWidth());
- }
-
- /**
- * Creates the controls for the modifiers radio/ceckbox buttons. Expects a
- * GridLayout
with at least 3 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createModifierControls(Composite composite, int nColumns) {
- LayoutUtil.setHorizontalSpan(fAccMdfButtons.getLabelControl(composite),
- 1);
-
- Control control = fAccMdfButtons.getSelectionButtonsGroup(composite);
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = nColumns - 2;
- control.setLayoutData(gd);
-
- DialogField.createEmptySpace(composite);
-
- DialogField.createEmptySpace(composite);
-
- control = fOtherMdfButtons.getSelectionButtonsGroup(composite);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = nColumns - 2;
- control.setLayoutData(gd);
-
- DialogField.createEmptySpace(composite);
- }
-
- /**
- * Creates the controls for the superclass name field. Expects a
- * GridLayout
with at least 3 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createSuperClassControls(Composite composite, int nColumns) {
- fSuperClassDialogField.doFillIntoGrid(composite, nColumns);
- LayoutUtil.setWidthHint(fSuperClassDialogField.getTextControl(null),
- getMaxFieldWidth());
- }
-
- /**
- * Creates the controls for the superclass name field. Expects a
- * GridLayout
with at least 3 columns.
- *
- * @param composite
- * the parent composite
- * @param nColumns
- * number of columns to span
- */
- protected void createSuperInterfacesControls(Composite composite,
- int nColumns) {
- fSuperInterfacesDialogField.doFillIntoGrid(composite, nColumns);
- GridData gd = (GridData) fSuperInterfacesDialogField.getListControl(
- null).getLayoutData();
- if (fIsClass) {
- gd.heightHint = convertHeightInCharsToPixels(3);
- } else {
- gd.heightHint = convertHeightInCharsToPixels(6);
- }
- gd.grabExcessVerticalSpace = false;
- gd.widthHint = getMaxFieldWidth();
- }
-
- /**
- * Sets the focus on the type name input field.
- */
- protected void setFocus() {
- fTypeNameDialogField.setFocus();
- }
-
- // -------- TypeFieldsAdapter --------
-
- private class TypeFieldsAdapter implements IStringButtonAdapter,
- IDialogFieldListener, IListAdapter {
-
- // -------- IStringButtonAdapter
- public void changeControlPressed(DialogField field) {
- // typePageChangeControlPressed(field);
- }
-
- // -------- IListAdapter
- public void customButtonPressed(ListDialogField field, int index) {
- // typePageCustomButtonPressed(field, index);
- }
-
- public void selectionChanged(ListDialogField field) {
- }
-
- // -------- IDialogFieldListener
- public void dialogFieldChanged(DialogField field) {
- typePageDialogFieldChanged(field);
- }
-
- public void doubleClicked(ListDialogField field) {
- }
- }
-
- // private void typePageChangeControlPressed(DialogField field) {
- // if (field == fPackageDialogField) {
- // IPackageFragment pack= choosePackage();
- // if (pack != null) {
- // fPackageDialogField.setText(pack.getElementName());
- // }
- // } else if (field == fEnclosingTypeDialogField) {
- // IType type= chooseEnclosingType();
- // if (type != null) {
- // fEnclosingTypeDialogField.setText(JavaModelUtil.getFullyQualifiedName(type));
- // }
- // } else if (field == fSuperClassDialogField) {
- // IType type= chooseSuperType();
- // if (type != null) {
- // fSuperClassDialogField.setText(JavaModelUtil.getFullyQualifiedName(type));
- // }
- // }
- // }
-
- // private void typePageCustomButtonPressed(DialogField field, int index) {
- // if (field == fSuperInterfacesDialogField) {
- // chooseSuperInterfaces();
- // }
- // }
-
- /*
- * A field on the type has changed. The fields' status and all dependend
- * status are updated.
- */
- private void typePageDialogFieldChanged(DialogField field) {
- String fieldName = null;
- if (field == fPackageDialogField) {
- fPackageStatus = packageChanged();
- updatePackageStatusLabel();
- fTypeNameStatus = typeNameChanged();
- // fSuperClassStatus= superClassChanged();
- fieldName = PACKAGE;
- } else if (field == fEnclosingTypeDialogField) {
- // fEnclosingTypeStatus= enclosingTypeChanged();
- fTypeNameStatus = typeNameChanged();
- // fSuperClassStatus= superClassChanged();
- fieldName = ENCLOSING;
- } else if (field == fEnclosingTypeSelection) {
- updateEnableState();
- boolean isEnclosedType = isEnclosingTypeSelected();
- if (!isEnclosedType) {
- if (fAccMdfButtons.isSelected(PRIVATE_INDEX)
- || fAccMdfButtons.isSelected(PROTECTED_INDEX)) {
- fAccMdfButtons.setSelection(PRIVATE_INDEX, false);
- fAccMdfButtons.setSelection(PROTECTED_INDEX, false);
- fAccMdfButtons.setSelection(PUBLIC_INDEX, true);
- }
- if (fOtherMdfButtons.isSelected(fStaticMdfIndex)) {
- fOtherMdfButtons.setSelection(fStaticMdfIndex, false);
- }
- }
- fAccMdfButtons.enableSelectionButton(PRIVATE_INDEX, isEnclosedType
- && fIsClass);
- fAccMdfButtons.enableSelectionButton(PROTECTED_INDEX,
- isEnclosedType && fIsClass);
- fOtherMdfButtons.enableSelectionButton(fStaticMdfIndex,
- isEnclosedType);
- fTypeNameStatus = typeNameChanged();
- // fSuperClassStatus= superClassChanged();
- fieldName = ENCLOSINGSELECTION;
- } else if (field == fTypeNameDialogField) {
- fTypeNameStatus = typeNameChanged();
- fieldName = TYPENAME;
- } else if (field == fSuperClassDialogField) {
- // fSuperClassStatus= superClassChanged();
- fieldName = SUPER;
- } else if (field == fSuperInterfacesDialogField) {
- // fSuperInterfacesStatus= superInterfacesChanged();
- fieldName = INTERFACES;
- } else if (field == fOtherMdfButtons) {
- fModifierStatus = modifiersChanged();
- fieldName = MODIFIERS;
- } else {
- fieldName = METHODS;
- }
- // tell all others
- handleFieldChanged(fieldName);
- }
-
- // -------- update message ----------------
-
- /*
- * @see net.sourceforge.phpdt.ui.wizards.NewContainerWizardPage#handleFieldChanged(String)
- */
- protected void handleFieldChanged(String fieldName) {
- super.handleFieldChanged(fieldName);
- if (fieldName == CONTAINER) {
- fPackageStatus = packageChanged();
- // fEnclosingTypeStatus= enclosingTypeChanged();
- fTypeNameStatus = typeNameChanged();
- // fSuperClassStatus= superClassChanged();
- // fSuperInterfacesStatus= superInterfacesChanged();
- }
- }
-
- // ---- set / get ----------------
-
- /**
- * Returns the text of the package input field.
- *
- * @return the text of the package input field
- */
- public String getPackageText() {
- return fPackageDialogField.getText();
- }
-
- /**
- * Returns the text of the enclosing type input field.
- *
- * @return the text of the enclosing type input field
- */
- public String getEnclosingTypeText() {
- return fEnclosingTypeDialogField.getText();
- }
-
- /**
- * Returns the package fragment corresponding to the current input.
- *
- * @return a package fragement or null
if the input could not
- * be resolved.
- */
- public IPackageFragment getPackageFragment() {
- if (!isEnclosingTypeSelected()) {
- return fCurrPackage;
- } else {
- // if (fCurrEnclosingType != null) {
- // return fCurrEnclosingType.getPackageFragment();
- // }
- }
- return null;
- }
-
- /**
- * Sets the package fragment to the given value. The method updates the
- * model and the text of the control.
- *
- * @param pack
- * the package fragement to be set
- * @param canBeModified
- * if true
the package fragment is editable;
- * otherwise it is read-only.
- */
- public void setPackageFragment(IPackageFragment pack, boolean canBeModified) {
- fCurrPackage = pack;
- fCanModifyPackage = canBeModified;
- String str = (pack == null) ? "" : pack.getElementName(); //$NON-NLS-1$
- fPackageDialogField.setText(str);
- updateEnableState();
- }
-
- /**
- * Returns the enclosing type corresponding to the current input.
- *
- * @return the enclosing type or null
if the enclosing type
- * is not selected or the input could not be resolved
- */
- public IType getEnclosingType() {
- // if (isEnclosingTypeSelected()) {
- // return fCurrEnclosingType;
- // }
- return null;
- }
-
- /**
- * Sets the enclosing type. The method updates the underlying model and the
- * text of the control.
- *
- * @param type
- * the enclosing type
- * @param canBeModified
- * if true
the enclosing type field is editable;
- * otherwise it is read-only.
- */
- // public void setEnclosingType(IType type, boolean canBeModified) {
- // fCurrEnclosingType= type;
- // fCanModifyEnclosingType= canBeModified;
- // String str= (type == null) ? "" :
- // JavaModelUtil.getFullyQualifiedName(type); //$NON-NLS-1$
- // fEnclosingTypeDialogField.setText(str);
- // updateEnableState();
- // }
- /**
- * Returns the selection state of the enclosing type checkbox.
- *
- * @return the seleciton state of the enclosing type checkbox
- */
- public boolean isEnclosingTypeSelected() {
- return fEnclosingTypeSelection.isSelected();
- }
-
- /**
- * Sets the enclosing type checkbox's selection state.
- *
- * @param isSelected
- * the checkbox's selection state
- * @param canBeModified
- * if true
the enclosing type checkbox is
- * modifiable; otherwise it is read-only.
- */
- public void setEnclosingTypeSelection(boolean isSelected,
- boolean canBeModified) {
- fEnclosingTypeSelection.setSelection(isSelected);
- fEnclosingTypeSelection.setEnabled(canBeModified);
- updateEnableState();
- }
-
- /**
- * Returns the type name entered into the type input field.
- *
- * @return the type name
- */
- public String getTypeName() {
- return fTypeNameDialogField.getText();
- }
-
- /**
- * Sets the type name input field's text to the given value. Method doesn't
- * update the model.
- *
- * @param name
- * the new type name
- * @param canBeModified
- * if true
the enclosing type name field is
- * editable; otherwise it is read-only.
- */
- public void setTypeName(String name, boolean canBeModified) {
- fTypeNameDialogField.setText(name);
- fTypeNameDialogField.setEnabled(canBeModified);
- }
-
- /**
- * Returns the selected modifiers.
- *
- * @return the selected modifiers
- * @see Flags
- */
- public int getModifiers() {
- int mdf = 0;
- if (fAccMdfButtons.isSelected(PUBLIC_INDEX)) {
- mdf += F_PUBLIC;
- } else if (fAccMdfButtons.isSelected(PRIVATE_INDEX)) {
- mdf += F_PRIVATE;
- } else if (fAccMdfButtons.isSelected(PROTECTED_INDEX)) {
- mdf += F_PROTECTED;
- }
- // if (fOtherMdfButtons.isSelected(ABSTRACT_INDEX) && (fStaticMdfIndex
- // != 0)) {
- // mdf+= F_ABSTRACT;
- // }
- if (fOtherMdfButtons.isSelected(FINAL_INDEX)) {
- mdf += F_FINAL;
- }
- if (fOtherMdfButtons.isSelected(fStaticMdfIndex)) {
- mdf += F_STATIC;
- }
- return mdf;
- }
-
- /**
- * Sets the modifiers.
- *
- * @param modifiers
- * F_PUBLIC
, F_PRIVATE
,
- * F_PROTECTED
, F_ABSTRACT, F_FINAL
- * or F_STATIC
or, a valid combination.
- * @param canBeModified
- * if true
the modifier fields are editable;
- * otherwise they are read-only
- * @see Flags
- */
- public void setModifiers(int modifiers, boolean canBeModified) {
- if (Flags.isPublic(modifiers)) {
- fAccMdfButtons.setSelection(PUBLIC_INDEX, true);
- } else if (Flags.isPrivate(modifiers)) {
- fAccMdfButtons.setSelection(PRIVATE_INDEX, true);
- } else if (Flags.isProtected(modifiers)) {
- fAccMdfButtons.setSelection(PROTECTED_INDEX, true);
- } else {
- fAccMdfButtons.setSelection(DEFAULT_INDEX, true);
- }
- // if (Flags.isAbstract(modifiers)) {
- // fOtherMdfButtons.setSelection(ABSTRACT_INDEX, true);
- // }
- if (Flags.isFinal(modifiers)) {
- fOtherMdfButtons.setSelection(FINAL_INDEX, true);
- }
- if (Flags.isStatic(modifiers)) {
- fOtherMdfButtons.setSelection(fStaticMdfIndex, true);
- }
-
- fAccMdfButtons.setEnabled(canBeModified);
- fOtherMdfButtons.setEnabled(canBeModified);
- }
-
- /**
- * Returns the content of the superclass input field.
- *
- * @return the superclass name
- */
- public String getSuperClass() {
- return fSuperClassDialogField.getText();
- }
-
- /**
- * Sets the super class name.
- *
- * @param name
- * the new superclass name
- * @param canBeModified
- * if true
the superclass name field is editable;
- * otherwise it is read-only.
- */
- public void setSuperClass(String name, boolean canBeModified) {
- fSuperClassDialogField.setText(name);
- fSuperClassDialogField.setEnabled(canBeModified);
- }
-
- /**
- * Returns the chosen super interfaces.
- *
- * @return a list of chosen super interfaces. The list's elements are of
- * type String
- */
- public List getSuperInterfaces() {
- return fSuperInterfacesDialogField.getElements();
- }
-
- /**
- * Sets the super interfaces.
- *
- * @param interfacesNames
- * a list of super interface. The method requires that the list's
- * elements are of type String
- * @param canBeModified
- * if true
the super interface field is editable;
- * otherwise it is read-only.
- */
- public void setSuperInterfaces(List interfacesNames, boolean canBeModified) {
- fSuperInterfacesDialogField.setElements(interfacesNames);
- fSuperInterfacesDialogField.setEnabled(canBeModified);
- }
-
- // ----------- validation ----------
-
- /**
- * A hook method that gets called when the package field has changed. The
- * method validates the package name and returns the status of the
- * validation. The validation also updates the package fragment model.
- * - * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - protected IStatus packageChanged() { - StatusInfo status = new StatusInfo(); - fPackageDialogField.enableButton(getPackageFragmentRoot() != null); - - // String packName= getPackageText(); - // if (packName.length() > 0) { - // IStatus val= JavaConventions.validatePackageName(packName); - // if (val.getSeverity() == IStatus.ERROR) { - // status.setError(NewWizardMessages.getFormattedString("NewTypeWizardPage.error.InvalidPackageName", - // val.getMessage())); //$NON-NLS-1$ - // return status; - // } else if (val.getSeverity() == IStatus.WARNING) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.DiscouragedPackageName", - // val.getMessage())); //$NON-NLS-1$ - // // continue - // } - // } - - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // if (root != null) { - // if (root.getJavaProject().exists() && packName.length() > 0) { - // try { - // IPath rootPath= root.getPath(); - // IPath outputPath= root.getJavaProject().getOutputLocation(); - // if (rootPath.isPrefixOf(outputPath) && !rootPath.equals(outputPath)) - // { - // // if the bin folder is inside of our root, dont allow to name a - // package - // // like the bin folder - // IPath packagePath= rootPath.append(packName.replace('.', '/')); - // if (outputPath.isPrefixOf(packagePath)) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.ClashOutputLocation")); - // //$NON-NLS-1$ - // return status; - // } - // } - // } catch (JavaModelException e) { - // PHPeclipsePlugin.log(e); - // // let pass - // } - // } - // - // fCurrPackage= root.getPackageFragment(packName); - // } else { - // status.setError(""); //$NON-NLS-1$ - // } - return status; - } - - /* - * Updates the 'default' label next to the package field. - */ - private void updatePackageStatusLabel() { - String packName = getPackageText(); - - if (packName.length() == 0) { - fPackageDialogField.setStatus(NewWizardMessages - .getString("NewTypeWizardPage.default")); //$NON-NLS-1$ - } else { - fPackageDialogField.setStatus(""); //$NON-NLS-1$ - } - } - - /* - * Updates the enable state of buttons related to the enclosing type - * selection checkbox. - */ - private void updateEnableState() { - boolean enclosing = isEnclosingTypeSelected(); - fPackageDialogField.setEnabled(fCanModifyPackage && !enclosing); - fEnclosingTypeDialogField.setEnabled(fCanModifyEnclosingType - && enclosing); - } - - /** - * Hook method that gets called when the enclosing type name has changed. - * The method validates the enclosing type and returns the status of the - * validation. It also updates the enclosing type model. - *- * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - // protected IStatus enclosingTypeChanged() { - // StatusInfo status= new StatusInfo(); - // fCurrEnclosingType= null; - // - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // - // fEnclosingTypeDialogField.enableButton(root != null); - // if (root == null) { - // status.setError(""); //$NON-NLS-1$ - // return status; - // } - // - // String enclName= getEnclosingTypeText(); - // if (enclName.length() == 0) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.EnclosingTypeEnterName")); - // //$NON-NLS-1$ - // return status; - // } - // try { - // IType type= findType(root.getJavaProject(), enclName); - // if (type == null) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.EnclosingTypeNotExists")); - // //$NON-NLS-1$ - // return status; - // } - // - // if (type.getCompilationUnit() == null) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.EnclosingNotInCU")); - // //$NON-NLS-1$ - // return status; - // } - // if (!JavaModelUtil.isEditable(type.getCompilationUnit())) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.EnclosingNotEditable")); - // //$NON-NLS-1$ - // return status; - // } - // - // fCurrEnclosingType= type; - // IPackageFragmentRoot enclosingRoot= - // JavaModelUtil.getPackageFragmentRoot(type); - // if (!enclosingRoot.equals(root)) { - // status.setWarning(NewWizardMessages.getString("NewTypeWizardPage.warning.EnclosingNotInSourceFolder")); - // //$NON-NLS-1$ - // } - // return status; - // } catch (JavaModelException e) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.EnclosingTypeNotExists")); - // //$NON-NLS-1$ - // PHPeclipsePlugin.log(e); - // return status; - // } - // } - /** - * Hook method that gets called when the type name has changed. The method - * validates the type name and returns the status of the validation. - *- * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - protected IStatus typeNameChanged() { - StatusInfo status = new StatusInfo(); - String typeName = getTypeName(); - // must not be empty - if (typeName.length() == 0) { - status.setError(NewWizardMessages - .getString("NewTypeWizardPage.error.EnterTypeName")); //$NON-NLS-1$ - return status; - } - if (typeName.indexOf('.') != -1) { - status.setError(NewWizardMessages - .getString("NewTypeWizardPage.error.QualifiedName")); //$NON-NLS-1$ - return status; - } - // IStatus val= JavaConventions.validateJavaTypeName(typeName); - // if (val.getSeverity() == IStatus.ERROR) { - // status.setError(NewWizardMessages.getFormattedString("NewTypeWizardPage.error.InvalidTypeName", - // val.getMessage())); //$NON-NLS-1$ - // return status; - // } else if (val.getSeverity() == IStatus.WARNING) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.TypeNameDiscouraged", - // val.getMessage())); //$NON-NLS-1$ - // // continue checking - // } - - // must not exist - if (!isEnclosingTypeSelected()) { - IPackageFragment pack = getPackageFragment(); - if (pack != null) { - ICompilationUnit cu = pack.getCompilationUnit(typeName - + ".java"); //$NON-NLS-1$ - if (cu.getResource().exists()) { - status - .setError(NewWizardMessages - .getString("NewTypeWizardPage.error.TypeNameExists")); //$NON-NLS-1$ - return status; - } - } - } else { - IType type = getEnclosingType(); - if (type != null) { - IType member = type.getType(typeName); - if (member.exists()) { - status - .setError(NewWizardMessages - .getString("NewTypeWizardPage.error.TypeNameExists")); //$NON-NLS-1$ - return status; - } - } - } - return status; - } - - /** - * Hook method that gets called when the superclass name has changed. The - * method validates the superclass name and returns the status of the - * validation. - *- * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - // protected IStatus superClassChanged() { - // StatusInfo status= new StatusInfo(); - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // fSuperClassDialogField.enableButton(root != null); - // - // fSuperClass= null; - // - // String sclassName= getSuperClass(); - // if (sclassName.length() == 0) { - // // accept the empty field (stands for java.lang.Object) - // return status; - // } - // IStatus val= JavaConventions.validateJavaTypeName(sclassName); - // if (val.getSeverity() == IStatus.ERROR) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.InvalidSuperClassName")); - // //$NON-NLS-1$ - // return status; - // } - // if (root != null) { - // try { - // IType type= resolveSuperTypeName(root.getJavaProject(), sclassName); - // if (type == null) { - // status.setWarning(NewWizardMessages.getString("NewTypeWizardPage.warning.SuperClassNotExists")); - // //$NON-NLS-1$ - // return status; - // } else { - // if (type.isInterface()) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.SuperClassIsNotClass", - // sclassName)); //$NON-NLS-1$ - // return status; - // } - // int flags= type.getFlags(); - // if (Flags.isFinal(flags)) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.SuperClassIsFinal", - // sclassName)); //$NON-NLS-1$ - // return status; - // } else if (!JavaModelUtil.isVisible(type, getPackageFragment())) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.SuperClassIsNotVisible", - // sclassName)); //$NON-NLS-1$ - // return status; - // } - // } - // fSuperClass= type; - // } catch (JavaModelException e) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.InvalidSuperClassName")); - // //$NON-NLS-1$ - // PHPeclipsePlugin.log(e); - // } - // } else { - // status.setError(""); //$NON-NLS-1$ - // } - // return status; - // - // } - // private IType resolveSuperTypeName(IJavaProject jproject, String - // sclassName) throws JavaModelException { - // if (!jproject.exists()) { - // return null; - // } - // IType type= null; - // if (isEnclosingTypeSelected()) { - // // search in the context of the enclosing type - // IType enclosingType= getEnclosingType(); - // if (enclosingType != null) { - // String[][] res= enclosingType.resolveType(sclassName); - // if (res != null && res.length > 0) { - // type= jproject.findType(res[0][0], res[0][1]); - // } - // } - // } else { - // IPackageFragment currPack= getPackageFragment(); - // if (type == null && currPack != null) { - // String packName= currPack.getElementName(); - // // search in own package - // if (!currPack.isDefaultPackage()) { - // type= jproject.findType(packName, sclassName); - // } - // // search in java.lang - // if (type == null && !"java.lang".equals(packName)) { //$NON-NLS-1$ - // type= jproject.findType("java.lang", sclassName); //$NON-NLS-1$ - // } - // } - // // search fully qualified - // if (type == null) { - // type= jproject.findType(sclassName); - // } - // } - // return type; - // } - // private IType findType(IJavaProject project, String typeName) throws - // JavaModelException { - // if (project.exists()) { - // return project.findType(typeName); - // } - // return null; - // } - /** - * Hook method that gets called when the list of super interface has - * changed. The method validates the superinterfaces and returns the status - * of the validation. - *- * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - // protected IStatus superInterfacesChanged() { - // StatusInfo status= new StatusInfo(); - // - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // fSuperInterfacesDialogField.enableButton(0, root != null); - // - // if (root != null) { - // List elements= fSuperInterfacesDialogField.getElements(); - // int nElements= elements.size(); - // for (int i= 0; i < nElements; i++) { - // String intfname= (String)elements.get(i); - // try { - // IType type= findType(root.getJavaProject(), intfname); - // if (type == null) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.InterfaceNotExists", - // intfname)); //$NON-NLS-1$ - // return status; - // } else { - // if (type.isClass()) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.InterfaceIsNotInterface", - // intfname)); //$NON-NLS-1$ - // return status; - // } - // if (!JavaModelUtil.isVisible(type, getPackageFragment())) { - // status.setWarning(NewWizardMessages.getFormattedString("NewTypeWizardPage.warning.InterfaceIsNotVisible", - // intfname)); //$NON-NLS-1$ - // return status; - // } - // } - // } catch (JavaModelException e) { - // PHPeclipsePlugin.log(e); - // // let pass, checking is an extra - // } - // } - // } - // return status; - // } - /** - * Hook method that gets called when the modifiers have changed. The method - * validates the modifiers and returns the status of the validation. - *- * Subclasses may extend this method to perform their own validation. - *
- * - * @return the status of the validation - */ - protected IStatus modifiersChanged() { - StatusInfo status = new StatusInfo(); - int modifiers = getModifiers(); - // if (Flags.isFinal(modifiers) && Flags.isAbstract(modifiers)) { - // status.setError(NewWizardMessages.getString("NewTypeWizardPage.error.ModifiersFinalAndAbstract")); - // //$NON-NLS-1$ - // } - return status; - } - - // selection dialogs - - // private IPackageFragment choosePackage() { - // IPackageFragmentRoot froot= getPackageFragmentRoot(); - // IJavaElement[] packages= null; - // try { - // if (froot != null && froot.exists()) { - // packages= froot.getChildren(); - // } - // } catch (JavaModelException e) { - // PHPeclipsePlugin.log(e); - // } - // if (packages == null) { - // packages= new IJavaElement[0]; - // } - // - // ElementListSelectionDialog dialog= new - // ElementListSelectionDialog(getShell(), new - // JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT)); - // dialog.setIgnoreCase(false); - // dialog.setTitle(NewWizardMessages.getString("NewTypeWizardPage.ChoosePackageDialog.title")); - // //$NON-NLS-1$ - // dialog.setMessage(NewWizardMessages.getString("NewTypeWizardPage.ChoosePackageDialog.description")); - // //$NON-NLS-1$ - // dialog.setEmptyListMessage(NewWizardMessages.getString("NewTypeWizardPage.ChoosePackageDialog.empty")); - // //$NON-NLS-1$ - // dialog.setElements(packages); - // IPackageFragment pack= getPackageFragment(); - // if (pack != null) { - // dialog.setInitialSelections(new Object[] { pack }); - // } - // - // if (dialog.open() == ElementListSelectionDialog.OK) { - // return (IPackageFragment) dialog.getFirstResult(); - // } - // return null; - // } - - // private IType chooseEnclosingType() { - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // if (root == null) { - // return null; - // } - // - // IJavaSearchScope scope= SearchEngine.createJavaSearchScope(new - // IJavaElement[] { root }); - // - // TypeSelectionDialog dialog= new TypeSelectionDialog(getShell(), - // getWizard().getContainer(), IJavaSearchConstants.TYPE, scope); - // dialog.setTitle(NewWizardMessages.getString("NewTypeWizardPage.ChooseEnclosingTypeDialog.title")); - // //$NON-NLS-1$ - // dialog.setMessage(NewWizardMessages.getString("NewTypeWizardPage.ChooseEnclosingTypeDialog.description")); - // //$NON-NLS-1$ - // dialog.setFilter(Signature.getSimpleName(getEnclosingTypeText())); - // - // if (dialog.open() == TypeSelectionDialog.OK) { - // return (IType) dialog.getFirstResult(); - // } - // return null; - // } - - // private IType chooseSuperType() { - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // if (root == null) { - // return null; - // } - // - // IJavaElement[] elements= new IJavaElement[] { root.getJavaProject() }; - // IJavaSearchScope scope= SearchEngine.createJavaSearchScope(elements); - // - // TypeSelectionDialog dialog= new TypeSelectionDialog(getShell(), - // getWizard().getContainer(), IJavaSearchConstants.CLASS, scope); - // dialog.setTitle(NewWizardMessages.getString("NewTypeWizardPage.SuperClassDialog.title")); - // //$NON-NLS-1$ - // dialog.setMessage(NewWizardMessages.getString("NewTypeWizardPage.SuperClassDialog.message")); - // //$NON-NLS-1$ - // dialog.setFilter(getSuperClass()); - // - // if (dialog.open() == TypeSelectionDialog.OK) { - // return (IType) dialog.getFirstResult(); - // } - // return null; - // } - - // private void chooseSuperInterfaces() { - // IPackageFragmentRoot root= getPackageFragmentRoot(); - // if (root == null) { - // return; - // } - // - // IJavaProject project= root.getJavaProject(); - // SuperInterfaceSelectionDialog dialog= new - // SuperInterfaceSelectionDialog(getShell(), getWizard().getContainer(), - // fSuperInterfacesDialogField, project); - // dialog.setTitle(fIsClass ? - // NewWizardMessages.getString("NewTypeWizardPage.InterfacesDialog.class.title") - // : - // NewWizardMessages.getString("NewTypeWizardPage.InterfacesDialog.interface.title")); - // //$NON-NLS-1$ //$NON-NLS-2$ - // dialog.setMessage(NewWizardMessages.getString("NewTypeWizardPage.InterfacesDialog.message")); - // //$NON-NLS-1$ - // dialog.open(); - // return; - // } - - // ---- creation ---------------- - - /** - * Creates the new type using the entered field values. - * - * @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 { - // IPackageFragmentRoot root = getPackageFragmentRoot(); - // IPackageFragment pack = getPackageFragment(); - // if (pack == null) { - // pack = root.getPackageFragment(""); //$NON-NLS-1$ - // } - // - // if (!pack.exists()) { - // String packName = pack.getElementName(); - // pack = root.createPackageFragment(packName, true, null); - // } - - monitor.worked(1); - - String clName = getTypeName(); - - boolean isInnerClass = isEnclosingTypeSelected(); - - IType createdType; - // ImportsStructure imports; - int indent = 0; - - IPreferenceStore store = PreferenceConstants.getPreferenceStore(); - // String[] prefOrder = - // JavaPreferencesSettings.getImportOrderPreference(store); - // int threshold = - // JavaPreferencesSettings.getImportNumberThreshold(store); - // - String lineDelimiter = null; - // if (!isInnerClass) { - lineDelimiter = System.getProperty("line.separator", "\n"); //$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(lineDelimiter);// new - // ImportsManager(imports), - // lineDelimiter); - - // String cuContent = constructCUContent(parentCU, typeContent, - // lineDelimiter); - - // createdWorkingCopy.getBuffer().setContents(cuContent); - // - createdType = createdWorkingCopy.getType(clName); - // } else { - // IType enclosingType = getEnclosingType(); - // - // // if we are working on a enclosed type that is open in an - // editor, - // // then replace the enclosing type with its working copy - // IType workingCopy = (IType) - // EditorUtility.getWorkingCopy(enclosingType); - // if (workingCopy != null) { - // enclosingType = workingCopy; - // } - // - // ICompilationUnit parentCU = enclosingType.getCompilationUnit(); - // imports = new ImportsStructure(parentCU, prefOrder, threshold, - // true); - // - // // add imports that will be removed again. Having the imports - // solves 14661 - // IType[] topLevelTypes = parentCU.getTypes(); - // for (int i = 0; i < topLevelTypes.length; i++) { - // imports.addImport(topLevelTypes[i].getFullyQualifiedName('.')); - // } - // - // lineDelimiter = StubUtility.getLineDelimiterUsed(enclosingType); - // StringBuffer content = new StringBuffer(); - // String comment = getTypeComment(parentCU); - // if (comment != null) { - // content.append(comment); - // content.append(lineDelimiter); - // } - // content.append(constructTypeStub(new ImportsManager(imports), - // lineDelimiter)); - // IJavaElement[] elems = enclosingType.getChildren(); - // IJavaElement sibling = elems.length > 0 ? elems[0] : null; - // - // createdType = enclosingType.createType(content.toString(), - // sibling, false, new SubProgressMonitor(monitor, 1)); - // - // indent = StubUtility.getIndentUsed(enclosingType) + 1; - // } - // - // // 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(); - } - // 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(); - } - } - - /** - * Uses the New Java file template from the code template page to generate a - * compilation unit with the given type content. - * - * @param cu - * The new created compilation unit - * @param typeContent - * The content of the type, including signature and type body. - * @param lineDelimiter - * The line delimiter to be used. - * @return String Returns the result of evaluating the new file template - * with the given type content. - * @throws CoreException - * @since 2.1 - */ - // protected String constructCUContent(ICompilationUnit cu, String - // typeContent, String lineDelimiter) throws CoreException { - // StringBuffer typeQualifiedName= new StringBuffer(); - // if (isEnclosingTypeSelected()) { - // typeQualifiedName.append(JavaModelUtil.getTypeQualifiedName(getEnclosingType())).append('.'); - // } - // typeQualifiedName.append(getTypeName()); - // String typeComment= CodeGeneration.getTypeComment(cu, - // typeQualifiedName.toString(), lineDelimiter); - // IPackageFragment pack= (IPackageFragment) cu.getParent(); - // String content= CodeGeneration.getCompilationUnitContent(cu, typeComment, - // typeContent, lineDelimiter); - // if (content != null) { - // CompilationUnit unit= AST.parseCompilationUnit(content.toCharArray()); - // if ((pack.isDefaultPackage() || unit.getPackage() != null) && - // !unit.types().isEmpty()) { - // return content; - // } - // } - // StringBuffer buf= new StringBuffer(); - // if (!pack.isDefaultPackage()) { - // buf.append("package ").append(pack.getElementName()).append(';'); - // //$NON-NLS-1$ - // } - // buf.append(lineDelimiter).append(lineDelimiter); - // if (typeComment != null) { - // buf.append(typeComment).append(lineDelimiter); - // } - // buf.append(typeContent); - // return buf.toString(); - // } - /** - * Returns the created type. The method only returns a valid type after - *createType
has been called.
- *
- * @return the created type
- * @see #createType(IProgressMonitor)
- */
- public IType getCreatedType() {
- return fCreatedType;
- }
-
- // ---- construct cu body----------------
-
- // private void writeSuperClass(StringBuffer buf, ImportsManager imports) {
- // String typename= getSuperClass();
- // if (fIsClass && typename.length() > 0 &&
- // !"java.lang.Object".equals(typename)) { //$NON-NLS-1$
- // buf.append(" extends "); //$NON-NLS-1$
- //
- // String qualifiedName= fSuperClass != null ?
- // JavaModelUtil.getFullyQualifiedName(fSuperClass) : typename;
- // buf.append(imports.addImport(qualifiedName));
- // }
- // }
-
- // private void writeSuperInterfaces(StringBuffer buf, ImportsManager
- // imports) {
- // List interfaces= getSuperInterfaces();
- // int last= interfaces.size() - 1;
- // if (last >= 0) {
- // if (fIsClass) {
- // buf.append(" implements "); //$NON-NLS-1$
- // } else {
- // buf.append(" extends "); //$NON-NLS-1$
- // }
- // for (int i= 0; i <= last; i++) {
- // String typename= (String) interfaces.get(i);
- // buf.append(imports.addImport(typename));
- // if (i < last) {
- // buf.append(',');
- // }
- // }
- // }
- // }
-
- /*
- * Called from createType to construct the source for this type
- */
- 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
- */
- // protected void createTypeMembers(IType newType, IImportsStructure
- // imports, IProgressMonitor monitor) throws CoreException {
- // //deprecated
- // }
- /**
- * Hook method that gets called from createType
to support
- * adding of unanticipated methods, fields, and inner types to the created
- * type.
- *
- * Implementers can use any methods defined on IType
to
- * manipulate the new type.
- *
- * The source code of the new type will be formtted using the platform's - * formatter. Needed imports are added by the wizard at the end of the type - * creation process using the given import manager. - *
- * - * @param newType - * the new type created viacreateType
- * @param imports
- * an import manager which can be used to add new imports
- * @param monitor
- * a progress monitor to report progress. Must not be
- * null
- *
- * @see #createType(IProgressMonitor)
- */
- // protected void createTypeMembers(IType newType, ImportsManager imports,
- // IProgressMonitor monitor) throws CoreException {
- // // call for compatibility
- // createTypeMembers(newType,
- // ((ImportsManager)imports).getImportsStructure(), monitor);
- //
- // // default implementation does nothing
- // // example would be
- // // String mainMathod= "public void foo(Vector vec) {}"
- // // createdType.createMethod(main, null, false, null);
- // // imports.addImport("java.lang.Vector");
- // }
- /**
- * @deprecated Instead of file templates, the new type code template
- * specifies the stub for a compilation unit.
- */
- protected String getFileComment(ICompilationUnit parentCU) {
- return null;
- }
-
- private boolean isValidComment(String template) {
- IScanner scanner = ToolFactory.createScanner(true, false, false); // ,
- // false);
- scanner.setSource(template.toCharArray());
- try {
- int next = scanner.getNextToken();
- while (next == ITerminalSymbols.TokenNameCOMMENT_LINE
- || next == ITerminalSymbols.TokenNameCOMMENT_PHPDOC
- || next == ITerminalSymbols.TokenNameCOMMENT_BLOCK) {
- next = scanner.getNextToken();
- }
- return next == ITerminalSymbols.TokenNameEOF;
- } catch (InvalidInputException e) {
- }
- return false;
- }
-
- /**
- * Hook method that gets called from createType
to retrieve a
- * type comment. This default implementation returns the content of the
- * 'typecomment' template.
- *
- * @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;
- }
-
- /**
- * @deprecated Use getTemplate(String,ICompilationUnit,int)
- */
- protected String getTemplate(String name, ICompilationUnit parentCU) {
- return getTemplate(name, parentCU, 0);
- }
-
- /**
- * Returns the string resulting from evaluation the given template in the
- * context of the given compilation unit. This accesses the normal template
- * page, not the code templates. To use code templates use
- * constructCUContent
to construct a compilation unit stub or
- * getTypeComment for the comment of the type.
- *
- * @param name
- * the template to be evaluated
- * @param parentCU
- * the templates evaluation context
- * @param pos
- * a source offset into the parent compilation unit. The template
- * is evalutated at the given source offset
- */
- protected String getTemplate(String name, ICompilationUnit parentCU, int pos) {
- try {
- Template[] templates = Templates.getInstance().getTemplates(name);
- if (templates.length > 0) {
- 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;
- }
-
- /**
- * @deprecated Use
- * createInheritedMethods(IType,boolean,boolean,IImportsManager,IProgressMonitor)
- */
- // protected IMethod[] createInheritedMethods(IType type, boolean
- // doConstructors, boolean doUnimplementedMethods, IImportsStructure
- // imports, IProgressMonitor monitor) throws CoreException {
- // return createInheritedMethods(type, doConstructors,
- // doUnimplementedMethods, new ImportsManager(imports), monitor);
- // }
- /**
- * Creates the bodies of all unimplemented methods and constructors and adds
- * them to the type. Method is typically called by implementers of
- * NewTypeWizardPage
to add needed method and constructors.
- *
- * @param type
- * the type for which the new methods and constructor are to be
- * created
- * @param doConstructors
- * if true
unimplemented constructors are created
- * @param doUnimplementedMethods
- * if true
unimplemented methods are created
- * @param imports
- * an import manager to add all neded import statements
- * @param monitor
- * a progress monitor to report progress
- */
- // protected IMethod[] createInheritedMethods(IType type, boolean
- // doConstructors, boolean doUnimplementedMethods, ImportsManager imports,
- // IProgressMonitor monitor) throws CoreException {
- // ArrayList newMethods= new ArrayList();
- // ITypeHierarchy hierarchy= null;
- // CodeGenerationSettings settings=
- // JavaPreferencesSettings.getCodeGenerationSettings();
- //
- // if (doConstructors) {
- // hierarchy= type.newSupertypeHierarchy(monitor);
- // IType superclass= hierarchy.getSuperclass(type);
- // if (superclass != null) {
- // String[] constructors= StubUtility.evalConstructors(type, superclass,
- // settings, imports.getImportsStructure());
- // if (constructors != null) {
- // for (int i= 0; i < constructors.length; i++) {
- // newMethods.add(constructors[i]);
- // }
- // }
- //
- // }
- // }
- // if (doUnimplementedMethods) {
- // if (hierarchy == null) {
- // hierarchy= type.newSupertypeHierarchy(monitor);
- // }
- // String[] unimplemented= StubUtility.evalUnimplementedMethods(type,
- // hierarchy, false, settings, null, imports.getImportsStructure());
- // if (unimplemented != null) {
- // for (int i= 0; i < unimplemented.length; i++) {
- // newMethods.add(unimplemented[i]);
- // }
- // }
- // }
- // IMethod[] createdMethods= new IMethod[newMethods.size()];
- // for (int i= 0; i < newMethods.size(); i++) {
- // String content= (String) newMethods.get(i) + '\n'; // content will be
- // formatted, ok to use \n
- // createdMethods[i]= type.createMethod(content, null, false, null);
- // }
- // return createdMethods;
- // }
- // ---- creation ----------------
- /**
- * Returns the runnable that creates the type using the current settings.
- * The returned runnable must be executed in the UI thread.
- *
- * @return the runnable to create the new type
- */
- // public IRunnableWithProgress getRunnable() {
- // return new IRunnableWithProgress() {
- // public void run(IProgressMonitor monitor) throws
- // InvocationTargetException, InterruptedException {
- // try {
- // if (monitor == null) {
- // monitor= new NullProgressMonitor();
- // }
- // createType(monitor);
- // } catch (CoreException e) {
- // throw new InvocationTargetException(e);
- // }
- // }
- // };
- // }
-}