diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 1bd542a99b5..4601e6af6f4 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,12 @@ +2004-03-21 Alain Magloire + + Show the binaries in the CView even if the parent + is a resource, this happen for IBinary/IArchive on + the IOutputEntry path. + + * src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java + * src/org/eclipse/cdt/ui/CElementSorter.java + 2004-03-19 David Inglis Update changing binary parser to use cdescriptor operation and remove call to deprecated call Added check before changes to prevent uneccessary changes of the .cdtproject file. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java index 82fe8eb7165..4e673ff4498 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java @@ -303,7 +303,10 @@ public class BaseCElementContentProvider implements ITreeContentProvider { private Object[] getResources(IFolder folder) { try { - Object[] members= folder.members(); + ICProject cproject = CoreModel.getDefault().create(folder.getProject()); + ICElement[] binaries = cproject.getBinaryContainer().getChildren(); + ICElement[] archives = cproject.getArchiveContainer().getChildren(); + Object[] members = folder.members(); List nonCResources= new ArrayList(); for (int i= 0; i < members.length; i++) { Object o= members[i]; @@ -319,6 +322,25 @@ public class BaseCElementContentProvider implements ITreeContentProvider { if (element instanceof ISourceRoot && element.exists()) { continue; } + } else if (o instanceof IFile){ + boolean found = false; + for (int j = 0; j < binaries.length; j++) { + IResource res = binaries[j].getResource(); + if (o.equals(res)) { + o = binaries[j]; + found = true; + break; + } + } + if (!found) { + for (int j = 0; j < archives.length; j++) { + IResource res = archives[j].getResource(); + if (o.equals(res)) { + o = archives[j]; + break; + } + } + } } nonCResources.add(o); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java index 935ddfcf863..ade3759f1e8 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementSorter.java @@ -26,7 +26,11 @@ import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.IUsing; import org.eclipse.cdt.core.model.IVariable; import org.eclipse.cdt.core.model.IVariableDeclaration; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.ContentViewer; import org.eclipse.jface.viewers.IBaseLabelProvider; @@ -48,7 +52,11 @@ public class CElementSorter extends ViewerSorter { private static final int CMODEL = 0; private static final int PROJECT = 10; - private static final int RESOURCE = 200; + + private static final int RESOURCES= 300; + private static final int RESOURCEFOLDERS= 210; + private static final int STORAGE= 400; + private static final int OTHERS= 500; public int category (Object element) { if (element instanceof ICModel) { @@ -131,8 +139,16 @@ public class CElementSorter extends ViewerSorter { return 174; } return 180; + } else if (element instanceof IFile) { + return RESOURCES; + } else if (element instanceof IProject) { + return PROJECT; + } else if (element instanceof IContainer) { + return RESOURCEFOLDERS; + } else if (element instanceof IStorage) { + return STORAGE; } - return RESOURCE; + return OTHERS; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) @@ -153,7 +169,7 @@ public class CElementSorter extends ViewerSorter { } // non - c resources are sorted using the label from the viewers label provider - if (cat1 == RESOURCE) { + if (cat1 == RESOURCES || cat1 == RESOURCEFOLDERS || cat1 == STORAGE || cat1 == OTHERS) { return compareWithLabelProvider(viewer, e1, e2); }