mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
2004-08-16 Chris Wiebe
better handling of source folders in class wizard * src/org/eclipse/cdt/internal/corext/util/CModelUtil.java * src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCreationWizardPage.java * src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCreationWizardMessages.properties
This commit is contained in:
parent
946fa0a576
commit
b914b98c04
4 changed files with 392 additions and 63 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-08-16 Chris Wiebe
|
||||||
|
|
||||||
|
better handling of source folders in class wizard
|
||||||
|
* src/org/eclipse/cdt/internal/corext/util/CModelUtil.java
|
||||||
|
* src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCreationWizardPage.java
|
||||||
|
* src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCreationWizardMessages.properties
|
||||||
|
|
||||||
2004-08-16 Tanya Wolff
|
2004-08-16 Tanya Wolff
|
||||||
Fix for 70906: Duplicate entries in C/C++ preferences
|
Fix for 70906: Duplicate entries in C/C++ preferences
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,9 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.corext.util;
|
package org.eclipse.cdt.internal.corext.util;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.model.ICContainer;
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.core.model.ISourceRoot;
|
import org.eclipse.cdt.core.model.ISourceRoot;
|
||||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||||
import org.eclipse.cdt.core.model.IWorkingCopy;
|
import org.eclipse.cdt.core.model.IWorkingCopy;
|
||||||
|
@ -57,6 +59,30 @@ public class CModelUtil {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the source folder of <code>ICElement</code>. If the given
|
||||||
|
* element is already a source folder, the element itself is returned.
|
||||||
|
*/
|
||||||
|
public static ICContainer getSourceFolder(ICElement element) {
|
||||||
|
ICContainer folder = null;
|
||||||
|
if (element != null) {
|
||||||
|
boolean foundSourceRoot = false;
|
||||||
|
ICElement curr = element;
|
||||||
|
while (curr != null && !foundSourceRoot) {
|
||||||
|
if (curr instanceof ICContainer && folder == null) {
|
||||||
|
folder = (ICContainer)curr;
|
||||||
|
}
|
||||||
|
foundSourceRoot = (curr instanceof ISourceRoot);
|
||||||
|
curr = curr.getParent();
|
||||||
|
}
|
||||||
|
if (folder == null) {
|
||||||
|
ICProject cproject = element.getCProject();
|
||||||
|
folder = cproject.findSourceRoot(cproject.getProject());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return folder;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns <code>true</code> if the given source root is
|
* Returns <code>true</code> if the given source root is
|
||||||
* referenced. This means it is own by a different project but is referenced
|
* referenced. This means it is own by a different project but is referenced
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.eclipse.cdt.core.browser.QualifiedTypeName;
|
||||||
import org.eclipse.cdt.core.browser.TypeSearchScope;
|
import org.eclipse.cdt.core.browser.TypeSearchScope;
|
||||||
import org.eclipse.cdt.core.model.CModelException;
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
import org.eclipse.cdt.core.model.CoreModel;
|
import org.eclipse.cdt.core.model.CoreModel;
|
||||||
|
import org.eclipse.cdt.core.model.ICContainer;
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.model.ICModel;
|
import org.eclipse.cdt.core.model.ICModel;
|
||||||
import org.eclipse.cdt.core.model.ICProject;
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
|
@ -94,7 +95,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
protected static final String SOURCE_FOLDER = PAGE_NAME + ".sourcefolder"; //$NON-NLS-1$
|
protected static final String SOURCE_FOLDER = PAGE_NAME + ".sourcefolder"; //$NON-NLS-1$
|
||||||
private StringButtonDialogField fSourceFolderDialogField;
|
private StringButtonDialogField fSourceFolderDialogField;
|
||||||
protected IStatus fSourceFolderStatus;
|
protected IStatus fSourceFolderStatus;
|
||||||
ISourceRoot fCurrentSourceFolder;
|
ICContainer fCurrentSourceFolder;
|
||||||
|
|
||||||
/** ID of the namespace input field. */
|
/** ID of the namespace input field. */
|
||||||
protected final static String NAMESPACE = PAGE_NAME + ".namespace"; //$NON-NLS-1$
|
protected final static String NAMESPACE = PAGE_NAME + ".namespace"; //$NON-NLS-1$
|
||||||
|
@ -126,9 +127,17 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
MethodStubsListDialogField fMethodStubsDialogField;
|
MethodStubsListDialogField fMethodStubsDialogField;
|
||||||
protected IStatus fMethodStubsStatus;
|
protected IStatus fMethodStubsStatus;
|
||||||
|
|
||||||
|
/** ID of the header file input field. */
|
||||||
|
protected final static String HEADERFILE = PAGE_NAME + ".headerfile"; //$NON-NLS-1$
|
||||||
StringButtonDialogField fHeaderFileDialogField;
|
StringButtonDialogField fHeaderFileDialogField;
|
||||||
|
protected IStatus fHeaderFileStatus;
|
||||||
|
IPath fCurrentHeaderFile;
|
||||||
|
|
||||||
|
/** ID of the header file input field. */
|
||||||
|
protected final static String SOURCEFILE = PAGE_NAME + ".sourcefile"; //$NON-NLS-1$
|
||||||
StringButtonDialogField fSourceFileDialogField;
|
StringButtonDialogField fSourceFileDialogField;
|
||||||
|
protected IStatus fSourceFileStatus;
|
||||||
|
IPath fCurrentSourceFile;
|
||||||
|
|
||||||
private NewClassCodeGenerator fCodeGenerator = null;
|
private NewClassCodeGenerator fCodeGenerator = null;
|
||||||
|
|
||||||
|
@ -190,10 +199,14 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
fClassNameStatus = new StatusInfo();
|
fClassNameStatus = new StatusInfo();
|
||||||
fBaseClassesStatus = new StatusInfo();
|
fBaseClassesStatus = new StatusInfo();
|
||||||
fMethodStubsStatus = new StatusInfo();
|
fMethodStubsStatus = new StatusInfo();
|
||||||
|
fHeaderFileStatus = new StatusInfo();
|
||||||
|
fSourceFileStatus = new StatusInfo();
|
||||||
|
|
||||||
fCurrentSourceFolder = null;
|
fCurrentSourceFolder = null;
|
||||||
fCanModifyNamespace = true;
|
fCanModifyNamespace = true;
|
||||||
fCurrentEnclosingClass = null;
|
fCurrentEnclosingClass = null;
|
||||||
|
fCurrentHeaderFile = null;
|
||||||
|
fCurrentSourceFile = null;
|
||||||
fCanModifyEnclosingClass = true;
|
fCanModifyEnclosingClass = true;
|
||||||
updateEnableState();
|
updateEnableState();
|
||||||
}
|
}
|
||||||
|
@ -492,9 +505,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
setNamespace(namespace, true);
|
setNamespace(namespace, true);
|
||||||
setEnclosingClass(enclosingClass, true);
|
setEnclosingClass(enclosingClass, true);
|
||||||
setEnclosingClassSelection(false, true);
|
setEnclosingClassSelection(false, true);
|
||||||
|
|
||||||
setClassName(className, true);
|
setClassName(className, true);
|
||||||
|
|
||||||
addMethodStub(new ConstructorMethodStub(), true);
|
addMethodStub(new ConstructorMethodStub(), true);
|
||||||
addMethodStub(new DestructorMethodStub(), true);
|
addMethodStub(new DestructorMethodStub(), true);
|
||||||
}
|
}
|
||||||
|
@ -505,29 +516,28 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
* @param elem the C element used to compute the initial folder
|
* @param elem the C element used to compute the initial folder
|
||||||
*/
|
*/
|
||||||
protected void initSourceFolder(ICElement elem) {
|
protected void initSourceFolder(ICElement elem) {
|
||||||
ISourceRoot initRoot = null;
|
ICContainer folder = null;
|
||||||
if (elem != null) {
|
if (elem != null) {
|
||||||
initRoot = CModelUtil.getSourceRoot(elem);
|
folder = CModelUtil.getSourceFolder(elem);
|
||||||
if (initRoot == null) {
|
if (folder == null) {
|
||||||
ICProject cproject = elem.getCProject();
|
ICProject cproject = elem.getCProject();
|
||||||
if (cproject != null) {
|
if (cproject != null) {
|
||||||
try {
|
try {
|
||||||
initRoot = null;
|
|
||||||
if (cproject.exists()) {
|
if (cproject.exists()) {
|
||||||
ISourceRoot[] roots = cproject.getSourceRoots();
|
ISourceRoot[] roots = cproject.getSourceRoots();
|
||||||
if (roots != null && roots.length > 0)
|
if (roots != null && roots.length > 0)
|
||||||
initRoot = roots[0];
|
folder = roots[0];
|
||||||
}
|
}
|
||||||
} catch (CModelException e) {
|
} catch (CModelException e) {
|
||||||
CUIPlugin.getDefault().log(e);
|
CUIPlugin.getDefault().log(e);
|
||||||
}
|
}
|
||||||
if (initRoot == null) {
|
if (folder == null) {
|
||||||
initRoot = cproject.findSourceRoot(cproject.getResource());
|
folder = cproject.findSourceRoot(cproject.getResource());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setSourceFolder(initRoot, true);
|
setSourceFolder(folder, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -573,7 +583,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
private class SourceFolderFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
private class SourceFolderFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
||||||
public void changeControlPressed(DialogField field) {
|
public void changeControlPressed(DialogField field) {
|
||||||
// take the current cproject as init element of the dialog
|
// take the current cproject as init element of the dialog
|
||||||
ISourceRoot folder = chooseSourceFolder(fCurrentSourceFolder);
|
ICContainer folder = chooseSourceFolder(fCurrentSourceFolder);
|
||||||
if (folder != null) {
|
if (folder != null) {
|
||||||
setSourceFolder(folder, true);
|
setSourceFolder(folder, true);
|
||||||
prepareTypeCache();
|
prepareTypeCache();
|
||||||
|
@ -698,17 +708,33 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
|
|
||||||
private class HeaderFileFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
private class HeaderFileFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
||||||
public void changeControlPressed(DialogField field) {
|
public void changeControlPressed(DialogField field) {
|
||||||
|
// take the current cproject as init element of the dialog
|
||||||
|
ITranslationUnit headerFile = chooseHeaderFile(fCurrentSourceFolder);
|
||||||
|
if (headerFile != null) {
|
||||||
|
setHeaderFile(headerFile.getPath(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dialogFieldChanged(DialogField field) {
|
public void dialogFieldChanged(DialogField field) {
|
||||||
|
fHeaderFileStatus = headerFileChanged();
|
||||||
|
// tell all others
|
||||||
|
handleFieldChanged(HEADERFILE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SourceFileFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
private class SourceFileFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
|
||||||
public void changeControlPressed(DialogField field) {
|
public void changeControlPressed(DialogField field) {
|
||||||
|
// take the current cproject as init element of the dialog
|
||||||
|
ITranslationUnit sourceFile = chooseSourceFile(fCurrentSourceFolder);
|
||||||
|
if (sourceFile != null) {
|
||||||
|
setSourceFile(sourceFile.getPath(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dialogFieldChanged(DialogField field) {
|
public void dialogFieldChanged(DialogField field) {
|
||||||
|
fSourceFileStatus = sourceFileChanged();
|
||||||
|
// tell all others
|
||||||
|
handleFieldChanged(SOURCEFILE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -733,41 +759,29 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
}
|
}
|
||||||
IPath path = new Path(str);
|
IPath path = new Path(str);
|
||||||
IResource res = fWorkspaceRoot.findMember(path);
|
IResource res = fWorkspaceRoot.findMember(path);
|
||||||
if (res != null) {
|
if (res != null && res.exists()) {
|
||||||
int resType = res.getType();
|
int resType = res.getType();
|
||||||
if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
|
if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
|
||||||
IProject proj = res.getProject();
|
IProject proj = res.getProject();
|
||||||
if (!proj.isOpen()) {
|
if (!proj.isOpen()) {
|
||||||
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.ProjectClosed", proj.getFullPath().toString())); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotAFolder", str)); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
ICProject cproject = CoreModel.getDefault().create(proj);
|
ICProject cproject = CoreModel.getDefault().create(proj);
|
||||||
fCurrentSourceFolder = cproject.findSourceRoot(res);
|
ICElement e = CoreModel.getDefault().create(res.getFullPath());
|
||||||
//TODO check for null
|
fCurrentSourceFolder = CModelUtil.getSourceFolder(e);
|
||||||
if (res.exists()) {
|
if (fCurrentSourceFolder == null) {
|
||||||
// try {
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotASourceFolder", str)); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
|
}
|
||||||
if (!CoreModel.hasCCNature(proj) && !CoreModel.hasCNature(proj)) {
|
if (!CoreModel.hasCCNature(proj) && !CoreModel.hasCNature(proj)) {
|
||||||
// if (!proj.hasNature(CoreModel.NATURE_ID)) {
|
|
||||||
if (resType == IResource.PROJECT) {
|
if (resType == IResource.PROJECT) {
|
||||||
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
} else {
|
} else {
|
||||||
status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotInACProject")); //$NON-NLS-1$
|
status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotInACProject")); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
// } catch (CoreException e) {
|
|
||||||
// status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
|
||||||
// }
|
|
||||||
// if (!cproject.isOnClasspath(fCurrRoot)) {
|
|
||||||
// if (!cproject.isOnSourceRoot(fCurrRoot)) {
|
|
||||||
// status.setWarning(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.warning.NotOnClassPath", str)); //$NON-NLS-1$
|
|
||||||
// }
|
|
||||||
// if (fCurrRoot.isArchive()) {
|
|
||||||
// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.ContainerIsBinary", str)); //$NON-NLS-1$
|
|
||||||
// return status;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
} else {
|
} else {
|
||||||
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotAFolder", str)); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotAFolder", str)); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
|
@ -776,6 +790,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.SourceFolderDoesNotExist", str)); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.SourceFolderDoesNotExist", str)); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -856,17 +871,14 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
String enclosing = getEnclosingClass();
|
String enclosing = getEnclosingClass();
|
||||||
// must not be empty
|
// must not be empty
|
||||||
if (enclosing.length() == 0) {
|
if (enclosing.length() == 0) {
|
||||||
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnterClassName")); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnterEnclosingClassName")); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
IStatus val = CConventions.validateClassName(enclosing);
|
IStatus val = CConventions.validateClassName(enclosing);
|
||||||
if (val.getSeverity() == IStatus.ERROR) {
|
if (val.getSeverity() == IStatus.ERROR) {
|
||||||
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.InvalidClassName", val.getMessage())); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.InvalidEnclosingClassName", val.getMessage())); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
} else if (val.getSeverity() == IStatus.WARNING) {
|
|
||||||
status.setWarning(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.warning.ClassNameDiscouraged", val.getMessage())); //$NON-NLS-1$
|
|
||||||
// continue checking
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IProject project = getCurrentProject();
|
IProject project = getCurrentProject();
|
||||||
|
@ -890,12 +902,18 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
types = AllTypesCache.getTypes(project, qualName, true);
|
types = AllTypesCache.getTypes(project, qualName, true);
|
||||||
for (int i = 0; i < types.length; ++i) {
|
for (int i = 0; i < types.length; ++i) {
|
||||||
if (types[i].getCElementType() == ICElement.C_CLASS) {
|
if (types[i].getCElementType() == ICElement.C_CLASS) {
|
||||||
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.ClassNameExistsDifferentCase")); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnclosingClassExistsDifferentCase")); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.ClassNameNotExists")); //$NON-NLS-1$
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnclosingClassNotExists")); //$NON-NLS-1$
|
||||||
return status;
|
return status;
|
||||||
|
} else {
|
||||||
|
IProject enclosingProject = fCurrentEnclosingClass.getEnclosingProject();
|
||||||
|
if (enclosingProject == null || !enclosingProject.equals(project)) {
|
||||||
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnclosingClassNotExistsInProject")); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
|
@ -993,6 +1011,20 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
*/
|
*/
|
||||||
protected IStatus baseClassesChanged() {
|
protected IStatus baseClassesChanged() {
|
||||||
StatusInfo status = new StatusInfo();
|
StatusInfo status = new StatusInfo();
|
||||||
|
|
||||||
|
IProject project = getCurrentProject();
|
||||||
|
if (project != null) {
|
||||||
|
// make sure all classes belong to the project
|
||||||
|
IBaseClassInfo[] baseClasses = getBaseClasses();
|
||||||
|
for (int i = 0; i < baseClasses.length; ++i) {
|
||||||
|
ITypeInfo baseType = baseClasses[i].getType();
|
||||||
|
IProject baseProject = baseType.getEnclosingProject();
|
||||||
|
if (baseProject != null && !baseProject.equals(project)) {
|
||||||
|
status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.BaseClassNotExistsInProject", baseType.getQualifiedTypeName().toString())); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1009,6 +1041,118 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is a hook which gets called after the header file's
|
||||||
|
* text input field has changed. This default implementation updates
|
||||||
|
* the model and returns an error status. The underlying model
|
||||||
|
* is only valid if the returned status is OK.
|
||||||
|
*
|
||||||
|
* @return the model's error status
|
||||||
|
*/
|
||||||
|
protected IStatus headerFileChanged() {
|
||||||
|
StatusInfo status = new StatusInfo();
|
||||||
|
|
||||||
|
fCurrentHeaderFile = null;
|
||||||
|
String str = getHeaderFileName();
|
||||||
|
if (str.length() == 0) {
|
||||||
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnterSourceFolderName")); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
IPath path = new Path(str);
|
||||||
|
IResource res = fWorkspaceRoot.findMember(path);
|
||||||
|
if (res != null && res.exists()) {
|
||||||
|
}
|
||||||
|
// if (res.exists()) {
|
||||||
|
//// try {
|
||||||
|
// if (!CoreModel.hasCCNature(proj) && !CoreModel.hasCNature(proj)) {
|
||||||
|
//// if (!proj.hasNature(CoreModel.NATURE_ID)) {
|
||||||
|
// if (resType == IResource.PROJECT) {
|
||||||
|
// status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
||||||
|
// } else {
|
||||||
|
// status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotInACProject")); //$NON-NLS-1$
|
||||||
|
// }
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
//// } catch (CoreException e) {
|
||||||
|
//// status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
||||||
|
//// }
|
||||||
|
//// if (!cproject.isOnClasspath(fCurrRoot)) {
|
||||||
|
//// if (!cproject.isOnSourceRoot(fCurrRoot)) {
|
||||||
|
//// status.setWarning(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.warning.NotOnClassPath", str)); //$NON-NLS-1$
|
||||||
|
//// }
|
||||||
|
//// if (fCurrRoot.isArchive()) {
|
||||||
|
//// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.ContainerIsBinary", str)); //$NON-NLS-1$
|
||||||
|
//// return status;
|
||||||
|
//// }
|
||||||
|
// }
|
||||||
|
// return status;
|
||||||
|
// } else {
|
||||||
|
// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotAFolder", str)); //$NON-NLS-1$
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.SourceFolderDoesNotExist", str)); //$NON-NLS-1$
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is a hook which gets called after the source file's
|
||||||
|
* text input field has changed. This default implementation updates
|
||||||
|
* the model and returns an error status. The underlying model
|
||||||
|
* is only valid if the returned status is OK.
|
||||||
|
*
|
||||||
|
* @return the model's error status
|
||||||
|
*/
|
||||||
|
protected IStatus sourceFileChanged() {
|
||||||
|
StatusInfo status = new StatusInfo();
|
||||||
|
|
||||||
|
fCurrentHeaderFile = null;
|
||||||
|
String str = getHeaderFileName();
|
||||||
|
if (str.length() == 0) {
|
||||||
|
status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.error.EnterSourceFolderName")); //$NON-NLS-1$
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
IPath path = new Path(str);
|
||||||
|
IResource res = fWorkspaceRoot.findMember(path);
|
||||||
|
if (res != null && res.exists()) {
|
||||||
|
}
|
||||||
|
// if (res.exists()) {
|
||||||
|
//// try {
|
||||||
|
// if (!CoreModel.hasCCNature(proj) && !CoreModel.hasCNature(proj)) {
|
||||||
|
//// if (!proj.hasNature(CoreModel.NATURE_ID)) {
|
||||||
|
// if (resType == IResource.PROJECT) {
|
||||||
|
// status.setError(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
||||||
|
// } else {
|
||||||
|
// status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotInACProject")); //$NON-NLS-1$
|
||||||
|
// }
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
//// } catch (CoreException e) {
|
||||||
|
//// status.setWarning(NewClassWizardMessages.getString("NewClassCreationWizardPage.warning.NotACProject")); //$NON-NLS-1$
|
||||||
|
//// }
|
||||||
|
//// if (!cproject.isOnClasspath(fCurrRoot)) {
|
||||||
|
//// if (!cproject.isOnSourceRoot(fCurrRoot)) {
|
||||||
|
//// status.setWarning(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.warning.NotOnClassPath", str)); //$NON-NLS-1$
|
||||||
|
//// }
|
||||||
|
//// if (fCurrRoot.isArchive()) {
|
||||||
|
//// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.ContainerIsBinary", str)); //$NON-NLS-1$
|
||||||
|
//// return status;
|
||||||
|
//// }
|
||||||
|
// }
|
||||||
|
// return status;
|
||||||
|
// } else {
|
||||||
|
// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.NotAFolder", str)); //$NON-NLS-1$
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// status.setError(NewClassWizardMessages.getFormattedString("NewClassCreationWizardPage.error.SourceFolderDoesNotExist", str)); //$NON-NLS-1$
|
||||||
|
// return status;
|
||||||
|
// }
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hook method that gets called when a field on this page has changed. For this page the
|
* Hook method that gets called when a field on this page has changed. For this page the
|
||||||
* method gets called when the source folder field changes.
|
* method gets called when the source folder field changes.
|
||||||
|
@ -1040,6 +1184,8 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
fClassNameStatus,
|
fClassNameStatus,
|
||||||
fBaseClassesStatus,
|
fBaseClassesStatus,
|
||||||
fMethodStubsStatus,
|
fMethodStubsStatus,
|
||||||
|
fHeaderFileStatus,
|
||||||
|
fSourceFileStatus
|
||||||
};
|
};
|
||||||
|
|
||||||
// the mode severe status will be displayed and the ok button enabled/disabled.
|
// the mode severe status will be displayed and the ok button enabled/disabled.
|
||||||
|
@ -1260,7 +1406,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
* @param canBeModified if <code>false</code> the source folder field can
|
* @param canBeModified if <code>false</code> the source folder field can
|
||||||
* not be changed by the user. If <code>true</code> the field is editable
|
* not be changed by the user. If <code>true</code> the field is editable
|
||||||
*/
|
*/
|
||||||
public void setSourceFolder(ISourceRoot folder, boolean canBeModified) {
|
public void setSourceFolder(ICContainer folder, boolean canBeModified) {
|
||||||
fCurrentSourceFolder = folder;
|
fCurrentSourceFolder = folder;
|
||||||
String str = (folder == null) ? "" : folder.getPath().makeRelative().toString(); //$NON-NLS-1$
|
String str = (folder == null) ? "" : folder.getPath().makeRelative().toString(); //$NON-NLS-1$
|
||||||
fSourceFolderDialogField.setText(str);
|
fSourceFolderDialogField.setText(str);
|
||||||
|
@ -1320,6 +1466,40 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
updateEnableState();
|
updateEnableState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the current header file.
|
||||||
|
*
|
||||||
|
* @param path The new header path
|
||||||
|
* @param canBeModified if <code>false</code> the header file field can
|
||||||
|
* not be changed by the user. If <code>true</code> the field is editable
|
||||||
|
*/
|
||||||
|
public void setHeaderFile(IPath headerPath, boolean canBeModified) {
|
||||||
|
fCurrentHeaderFile = headerPath;
|
||||||
|
if (fCurrentSourceFolder != null && fCurrentSourceFolder.getPath().isPrefixOf(headerPath)) {
|
||||||
|
headerPath = headerPath.removeFirstSegments(fCurrentSourceFolder.getPath().segmentCount());
|
||||||
|
}
|
||||||
|
String str = (headerPath == null) ? "" : headerPath.makeRelative().toString(); //$NON-NLS-1$
|
||||||
|
fHeaderFileDialogField.setText(str);
|
||||||
|
fHeaderFileDialogField.setEnabled(canBeModified);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the current source file.
|
||||||
|
*
|
||||||
|
* @param path The new source path
|
||||||
|
* @param canBeModified if <code>false</code> the header file field can
|
||||||
|
* not be changed by the user. If <code>true</code> the field is editable
|
||||||
|
*/
|
||||||
|
public void setSourceFile(IPath sourcePath, boolean canBeModified) {
|
||||||
|
fCurrentSourceFile = sourcePath;
|
||||||
|
if (fCurrentSourceFolder != null && fCurrentSourceFolder.getPath().isPrefixOf(sourcePath)) {
|
||||||
|
sourcePath = sourcePath.removeFirstSegments(fCurrentSourceFolder.getPath().segmentCount());
|
||||||
|
}
|
||||||
|
String str = (sourcePath == null) ? "" : sourcePath.makeRelative().toString(); //$NON-NLS-1$
|
||||||
|
fSourceFileDialogField.setText(str);
|
||||||
|
fSourceFileDialogField.setEnabled(canBeModified);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Updates the enable state of buttons related to the enclosing class selection checkbox.
|
* Updates the enable state of buttons related to the enclosing class selection checkbox.
|
||||||
*/
|
*/
|
||||||
|
@ -1329,25 +1509,25 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
fEnclosingClassDialogField.setEnabled(fCanModifyEnclosingClass && enclosing);
|
fEnclosingClassDialogField.setEnabled(fCanModifyEnclosingClass && enclosing);
|
||||||
}
|
}
|
||||||
|
|
||||||
ISourceRoot chooseSourceFolder(ICElement initElement) {
|
ICContainer chooseSourceFolder(ICElement initElement) {
|
||||||
Class[] acceptedClasses = new Class[] { ISourceRoot.class, ICProject.class };
|
Class[] acceptedClasses = new Class[] { ICContainer.class, ICProject.class };
|
||||||
TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
|
TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
|
||||||
public boolean isSelectedValid(Object element) {
|
public boolean isSelectedValid(Object element) {
|
||||||
if (element instanceof ICProject) {
|
if (element instanceof ICProject) {
|
||||||
ICProject cproject = (ICProject)element;
|
ICProject cproject = (ICProject)element;
|
||||||
IPath path = cproject.getProject().getFullPath();
|
IPath path = cproject.getProject().getFullPath();
|
||||||
return (cproject.findSourceRoot(path) != null);
|
return (cproject.findSourceRoot(path) != null);
|
||||||
} else if (element instanceof ISourceRoot) {
|
} else if (isValidSourceFolder(element)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
acceptedClasses = new Class[] { ICModel.class, ISourceRoot.class, ICProject.class };
|
acceptedClasses = new Class[] { ICModel.class, ICContainer.class, ICProject.class };
|
||||||
ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
|
ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
|
||||||
public boolean select(Viewer viewer, Object parent, Object element) {
|
public boolean select(Viewer viewer, Object parent, Object element) {
|
||||||
if (element instanceof ISourceRoot) {
|
if (isValidSourceFolder(element)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.select(viewer, parent, element);
|
return super.select(viewer, parent, element);
|
||||||
|
@ -1370,14 +1550,29 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
if (element instanceof ICProject) {
|
if (element instanceof ICProject) {
|
||||||
ICProject cproject = (ICProject)element;
|
ICProject cproject = (ICProject)element;
|
||||||
return cproject.findSourceRoot(cproject.getProject());
|
return cproject.findSourceRoot(cproject.getProject());
|
||||||
} else if (element instanceof ISourceRoot) {
|
} else if (element instanceof ICContainer) {
|
||||||
return (ISourceRoot)element;
|
return (ICContainer)element;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isValidSourceFolder(Object obj) {
|
||||||
|
return (obj instanceof ICContainer
|
||||||
|
&& CModelUtil.getSourceFolder((ICContainer)obj) != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isValidHeaderFile(Object obj) {
|
||||||
|
return (obj instanceof ITranslationUnit
|
||||||
|
&& CModelUtil.getSourceFolder((ITranslationUnit)obj) != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isValidSourceFile(Object obj) {
|
||||||
|
return (obj instanceof ITranslationUnit
|
||||||
|
&& CModelUtil.getSourceFolder((ITranslationUnit)obj) != null);
|
||||||
|
}
|
||||||
|
|
||||||
ITypeInfo chooseNamespace() {
|
ITypeInfo chooseNamespace() {
|
||||||
ITypeSearchScope scope = prepareTypeCache();
|
ITypeSearchScope scope = prepareTypeCache();
|
||||||
if (scope == null)
|
if (scope == null)
|
||||||
|
@ -1510,6 +1705,96 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ITranslationUnit chooseHeaderFile(ICElement initElement) {
|
||||||
|
Class[] acceptedClasses = new Class[] { ITranslationUnit.class, ICContainer.class, ICProject.class };
|
||||||
|
TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
|
||||||
|
public boolean isSelectedValid(Object element) {
|
||||||
|
return isValidHeaderFile(element);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
acceptedClasses = new Class[] { ICModel.class, ICContainer.class, ICProject.class, ITranslationUnit.class };
|
||||||
|
ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
|
||||||
|
public boolean select(Viewer viewer, Object parent, Object element) {
|
||||||
|
if (isValidHeaderFile(element)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.select(viewer, parent, element);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CElementContentProvider provider = new CElementContentProvider();
|
||||||
|
ILabelProvider labelProvider = new CElementLabelProvider(CElementLabelProvider.SHOW_DEFAULT);
|
||||||
|
ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
|
||||||
|
dialog.setValidator(validator);
|
||||||
|
dialog.setSorter(new CElementSorter());
|
||||||
|
dialog.setTitle(NewClassWizardMessages.getString("NewClassCreationWizardPage.ChooseHeaderFileDialog.title")); //$NON-NLS-1$
|
||||||
|
dialog.setMessage(NewClassWizardMessages.getString("NewClassCreationWizardPage.ChooseHeaderFileDialog.description")); //$NON-NLS-1$
|
||||||
|
dialog.addFilter(filter);
|
||||||
|
ICElement input = CoreModel.create(fWorkspaceRoot);
|
||||||
|
if (fCurrentSourceFolder != null) {
|
||||||
|
ICProject cproject = fCurrentSourceFolder.getCProject();
|
||||||
|
if (cproject != null)
|
||||||
|
input = cproject;
|
||||||
|
}
|
||||||
|
dialog.setInput(input);
|
||||||
|
dialog.setInitialSelection(initElement);
|
||||||
|
|
||||||
|
if (dialog.open() == Window.OK) {
|
||||||
|
Object element = dialog.getFirstResult();
|
||||||
|
if (element instanceof ITranslationUnit) {
|
||||||
|
return (ITranslationUnit)element;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ITranslationUnit chooseSourceFile(ICElement initElement) {
|
||||||
|
Class[] acceptedClasses = new Class[] { ITranslationUnit.class, ICContainer.class, ICProject.class };
|
||||||
|
TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
|
||||||
|
public boolean isSelectedValid(Object element) {
|
||||||
|
return isValidSourceFile(element);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
acceptedClasses = new Class[] { ICModel.class, ICContainer.class, ICProject.class, ITranslationUnit.class };
|
||||||
|
ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
|
||||||
|
public boolean select(Viewer viewer, Object parent, Object element) {
|
||||||
|
if (isValidSourceFile(element)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.select(viewer, parent, element);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CElementContentProvider provider = new CElementContentProvider();
|
||||||
|
ILabelProvider labelProvider = new CElementLabelProvider(CElementLabelProvider.SHOW_DEFAULT);
|
||||||
|
ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
|
||||||
|
dialog.setValidator(validator);
|
||||||
|
dialog.setSorter(new CElementSorter());
|
||||||
|
dialog.setTitle(NewClassWizardMessages.getString("NewClassCreationWizardPage.ChooseSourceFileDialog.title")); //$NON-NLS-1$
|
||||||
|
dialog.setMessage(NewClassWizardMessages.getString("NewClassCreationWizardPage.ChooseSourceFileDialog.description")); //$NON-NLS-1$
|
||||||
|
dialog.addFilter(filter);
|
||||||
|
ICElement input = CoreModel.create(fWorkspaceRoot);
|
||||||
|
if (fCurrentSourceFolder != null) {
|
||||||
|
ICProject cproject = fCurrentSourceFolder.getCProject();
|
||||||
|
if (cproject != null)
|
||||||
|
input = cproject;
|
||||||
|
}
|
||||||
|
dialog.setInput(input);
|
||||||
|
dialog.setInitialSelection(initElement);
|
||||||
|
|
||||||
|
if (dialog.open() == Window.OK) {
|
||||||
|
Object element = dialog.getFirstResult();
|
||||||
|
if (element instanceof ITranslationUnit) {
|
||||||
|
return (ITranslationUnit)element;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// ---- creation ----------------
|
// ---- creation ----------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -31,6 +31,7 @@ NewClassCreationWizardPage.ChooseSourceFolderDialog.description=&Choose a folder
|
||||||
NewClassCreationWizardPage.error.EnterSourceFolderName=Folder name is empty.
|
NewClassCreationWizardPage.error.EnterSourceFolderName=Folder name is empty.
|
||||||
NewClassCreationWizardPage.error.SourceFolderDoesNotExist=Folder ''{0}'' does not exist.
|
NewClassCreationWizardPage.error.SourceFolderDoesNotExist=Folder ''{0}'' does not exist.
|
||||||
NewClassCreationWizardPage.error.NotAFolder=''{0}'' must be a project or folder.
|
NewClassCreationWizardPage.error.NotAFolder=''{0}'' must be a project or folder.
|
||||||
|
NewClassCreationWizardPage.error.NotASourceFolder=''{0}'' is not a source folder.
|
||||||
NewClassCreationWizardPage.error.ProjectClosed=Project ''{0}'' must be accessible.
|
NewClassCreationWizardPage.error.ProjectClosed=Project ''{0}'' must be accessible.
|
||||||
NewClassCreationWizardPage.warning.NotACProject=Folder is not a C/C++ project.
|
NewClassCreationWizardPage.warning.NotACProject=Folder is not a C/C++ project.
|
||||||
NewClassCreationWizardPage.warning.NotInACProject=Folder is not in a C/C++ project.
|
NewClassCreationWizardPage.warning.NotInACProject=Folder is not in a C/C++ project.
|
||||||
|
@ -44,6 +45,11 @@ NewClassCreationWizardPage.warning.NamespaceDiscouraged=Namespace is discouraged
|
||||||
|
|
||||||
NewClassCreationWizardPage.enclosingClass.label=&Enclosing Class:
|
NewClassCreationWizardPage.enclosingClass.label=&Enclosing Class:
|
||||||
NewClassCreationWizardPage.enclosingClass.button=Br&owse...
|
NewClassCreationWizardPage.enclosingClass.button=Br&owse...
|
||||||
|
NewClassCreationWizardPage.error.EnterEnclosingClassName=Enclosing class name is empty.
|
||||||
|
NewClassCreationWizardPage.error.EnclosingClassNotExists=Enclosing class does not exist.
|
||||||
|
NewClassCreationWizardPage.error.EnclosingClassExistsDifferentCase=Enclosing class with same name but different case exists.
|
||||||
|
NewClassCreationWizardPage.error.InvalidEnclosingClassName=Enclosing class name is not valid. {0}
|
||||||
|
NewClassCreationWizardPage.error.EnclosingClassNotExistsInProject=Enclosing class does not exist in the current project.
|
||||||
|
|
||||||
NewClassCreationWizardPage.error.noTypeCache=Unable to access type cache.
|
NewClassCreationWizardPage.error.noTypeCache=Unable to access type cache.
|
||||||
|
|
||||||
|
@ -57,15 +63,20 @@ NewClassCreationWizardPage.error.QualifiedName=Class name must not be qualified.
|
||||||
NewClassCreationWizardPage.warning.ClassNameDiscouraged=Class name is discouraged. {0}
|
NewClassCreationWizardPage.warning.ClassNameDiscouraged=Class name is discouraged. {0}
|
||||||
|
|
||||||
NewClassCreationWizardPage.baseClasses.label=&Base Classes:
|
NewClassCreationWizardPage.baseClasses.label=&Base Classes:
|
||||||
NewClassCreationWizardPage.error.InvalidBaseClassName=Base class name is not valid.
|
NewClassCreationWizardPage.error.InvalidBaseClassName=Base class name is not valid. {0}
|
||||||
|
NewClassCreationWizardPage.error.BaseClassNotExistsInProject=Base class ''{0}'' does not exist in the current project.
|
||||||
|
|
||||||
NewClassCreationWizardPage.methodStubs.label=Method &Stubs:
|
NewClassCreationWizardPage.methodStubs.label=Method &Stubs:
|
||||||
|
|
||||||
NewClassCreationWizardPage.classDefinition.label=Class &Definition:
|
NewClassCreationWizardPage.classDefinition.label=Class &Definition:
|
||||||
NewClassCreationWizardPage.classDefinition.button=Br&owse...
|
NewClassCreationWizardPage.classDefinition.button=Br&owse...
|
||||||
|
NewClassCreationWizardPage.ChooseHeaderFileDialog.title=File Selection
|
||||||
|
NewClassCreationWizardPage.ChooseHeaderFileDialog.description=&Choose a header file:
|
||||||
|
|
||||||
NewClassCreationWizardPage.classImplementation.button=Br&owse...
|
NewClassCreationWizardPage.classImplementation.button=Br&owse...
|
||||||
NewClassCreationWizardPage.classImplementation.label=Class &Implementation:
|
NewClassCreationWizardPage.classImplementation.label=Class &Implementation:
|
||||||
|
NewClassCreationWizardPage.ChooseSourceFileDialog.title=File Selection
|
||||||
|
NewClassCreationWizardPage.ChooseSourceFileDialog.description=&Choose a source file:
|
||||||
|
|
||||||
# -----------BaseClassesListDialogField -------------
|
# -----------BaseClassesListDialogField -------------
|
||||||
BaseClassesListDialogField.buttons.add=&Add...
|
BaseClassesListDialogField.buttons.add=&Add...
|
||||||
|
|
Loading…
Add table
Reference in a new issue