1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Patch for Hoda Amer.

The user may start the wizard from the navigator view. In this case, the selection is a resource, not a CModel Element, which caused some troubles. 
This patch fixes this problem. Change log has been updated.
This commit is contained in:
John Camelon 2003-05-30 15:26:37 +00:00
parent 7a4da108d7
commit 18b219a690
3 changed files with 66 additions and 33 deletions

View file

@ -1,3 +1,8 @@
2003-05-30 Hoda Amer
Added the new class wizard on May 27th
Fixed the inclusion problem on May 28th
Fixed the non-cmodel selection problem May 30th.
2003-04-27 Alain Magloire
PR 36759, the outline does not update

View file

@ -160,6 +160,7 @@ NewClassWizardPage.warning.ClassNameDiscouraged=Class name is discouraged. {0}
NewClassWizardPage.error.InvalidBaseClassName=Base class name is not valid.
NewClassWizardPage.warning.BaseClassNotExists=Warning: Base class does not exist in current project.
NewClassWizardPage.operations.getProjectClasses=Looking for classes in project
# ------- BaseClassSelectionDialog -----
BaseClassSelectionDialog.title=Classes in this project

View file

@ -197,7 +197,7 @@ public class NewClassWizardPage extends WizardPage implements Listener {
setErrorMessage(null);
setMessage(null);
setControl(composite);
}
protected void createClassNameControls(Composite composite, int nColumns) {
@ -349,12 +349,27 @@ public class NewClassWizardPage extends WizardPage implements Listener {
List list= ((IStructuredSelection)sel).toList();
if (list.size() == 1) {
Object element= list.get(0);
if ( (element instanceof ICElement)
//&& ((ICElement)element).getElementType() == ICElement.C_CCONTAINER)
)
{
if (element instanceof ICElement) {
return (ICElement)element;
}
}
}
}
return null;
}
private IResource getSelectionResourceElement(IStructuredSelection sel) {
if (!sel.isEmpty() && sel instanceof IStructuredSelection) {
List list= ((IStructuredSelection)sel).toList();
if (list.size() == 1) {
Object element= list.get(0);
if (element instanceof IResource) {
if(element instanceof IFile){
IFile file = (IFile)element;
return (IResource) file.getParent();
}else {
return (IResource)element;
}
}
}
}
return null;
@ -380,35 +395,39 @@ public class NewClassWizardPage extends WizardPage implements Listener {
}
private ArrayList findClassElementsInProject(){
if( elementsOfTypeClassInProject == null ){
elementsOfTypeClassInProject = new ArrayList();
IRunnableWithProgress runnable= new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
if (monitor == null) {
monitor= new NullProgressMonitor();
}
monitor.beginTask("", 5); //$NON-NLS-1$
try{
if(eSelection != null){
ICProject cProject = eSelection.getCProject();
getChildrenOfTypeClass((IParent)cProject, elementsOfTypeClassInProject, monitor, 1);
}
monitor.worked(5);
} finally{
monitor.done();
}
if(eSelection == null){
return new ArrayList();
}
if( elementsOfTypeClassInProject != null ){
return elementsOfTypeClassInProject;
}
elementsOfTypeClassInProject = new ArrayList();
IRunnableWithProgress runnable= new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
if (monitor == null) {
monitor= new NullProgressMonitor();
}
monitor.beginTask(NewWizardMessages.getString("NewClassWizardPage.operations.getProjectClasses"), 5); //$NON-NLS-1$
try{
ICProject cProject = eSelection.getCProject();
getChildrenOfTypeClass((IParent)cProject, elementsOfTypeClassInProject, monitor, 1);
monitor.worked(5);
} finally{
monitor.done();
}
};
try {
getWizard().getContainer().run(false, true, runnable);
} catch (InvocationTargetException e) {
} catch (InterruptedException e) {
}
finally {
}
}
return elementsOfTypeClassInProject;
};
try {
getWizard().getContainer().run(false, true, runnable);
} catch (InvocationTargetException e) {
} catch (InterruptedException e) {
}
finally {
}
return elementsOfTypeClassInProject;
}
protected ICElement chooseBaseClass(){
@ -613,6 +632,14 @@ public class NewClassWizardPage extends WizardPage implements Listener {
// -------------Helper methods for creating the class -------
protected IPath getSelectionPath(){
if(eSelection == null){
IResource resourceSelection = getSelectionResourceElement(currentSelection);
if(resourceSelection != null){
return resourceSelection.getLocation().makeAbsolute();
}
else
return null;
}
// if it is a file, return the parent path
if(eSelection instanceof ITranslationUnit)
return (eSelection.getParent().getPath());