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:
parent
7a4da108d7
commit
18b219a690
3 changed files with 66 additions and 33 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -349,10 +349,7 @@ 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;
|
||||
}
|
||||
}
|
||||
|
@ -360,6 +357,24 @@ public class NewClassWizardPage extends WizardPage implements Listener {
|
|||
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;
|
||||
}
|
||||
|
||||
private void getChildrenOfTypeClass(IParent parent, ArrayList elementsFound, IProgressMonitor monitor, int worked){
|
||||
ICElement[] elements = parent.getChildren();
|
||||
monitor.worked( worked );
|
||||
|
@ -380,33 +395,37 @@ 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();
|
||||
}
|
||||
|
||||
try {
|
||||
getWizard().getContainer().run(false, true, runnable);
|
||||
} catch (InvocationTargetException e) {
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
finally {
|
||||
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;
|
||||
}
|
||||
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue