[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
====
Email bounced, the first time.
====
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.75
diff -u -r1.75 ChangeLog
--- ChangeLog 27 Mar 2003 20:02:04 -0000 1.75
+++ ChangeLog 31 Mar 2003 03:51:19 -0000
@@ -1,5 +1,20 @@
2003-03-27 Alain Magloire
+ The selection in the CView to CEditor was not done.
+ We have now a new hierarchy for the binary and Archive:
+ IBinary
+ IBinaryModule
+ IBinaryFunction
+ IBinaryVariable
+ IBinaryElement
+
+ * src/org/eclipse/cdt/internal/ui/cview/CView.java
+ * src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
+ * src/org/eclipse/cdt/internal/ui/CElementImageProvider.java
+ * src/org/eclipse/cdt/ui/CElementContentProvider.java
+
+2003-03-27 Alain Magloire
+
Patch from Thomas Fletcher.
* src/org/eclipse/cdt/internal/ui/editor/BracketPainter.java:
Index: src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java,v
retrieving revision 1.4
diff -u -r1.4 BaseCElementContentProvider.java
--- src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java 27 Mar 2003 16:12:17 -0000 1.4
+++ src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java 31 Mar 2003 03:51:21 -0000
@@ -9,6 +9,7 @@
import java.util.List;
import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IArchive;
import org.eclipse.cdt.core.model.IArchiveContainer;
import org.eclipse.cdt.core.model.IBinary;
@@ -157,7 +158,9 @@
} else {
return true;
}
- } else if (element instanceof ICContainer) {
+ }
+
+ if (element instanceof ICContainer) {
return true;
}
@@ -173,13 +176,23 @@
* Method declared on ITreeContentProvider.
*/
public Object getParent(Object element) {
- //if (!exists(element))
- // return null;
+ if (!exists(element)) {
+ return null;
+ }
+ return internalGetParent(element);
+ }
+
+ public Object internalGetParent(Object element) {
if (element instanceof ICElement) {
return ((ICElement)element).getParent();
}
if (element instanceof IResource) {
- return ((IResource)element).getParent();
+ IResource parent= ((IResource)element).getParent();
+ ICElement cParent= CoreModel.getDefault().create(parent);
+ if (cParent != null && cParent.exists()) {
+ return cParent;
+ }
+ return parent;
}
return null;
}
Index: src/org/eclipse/cdt/internal/ui/CElementImageProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java,v
retrieving revision 1.7
diff -u -r1.7 CElementImageProvider.java
--- src/org/eclipse/cdt/internal/ui/CElementImageProvider.java 28 Mar 2003 21:05:24 -0000 1.7
+++ src/org/eclipse/cdt/internal/ui/CElementImageProvider.java 31 Mar 2003 03:51:22 -0000
@@ -6,11 +6,12 @@
*/
import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.IBinaryModule;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IDeclaration;
import org.eclipse.cdt.core.model.IMember;
import org.eclipse.cdt.core.model.IMethodDeclaration;
-import org.eclipse.cdt.core.model.IDeclaration;
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
import org.eclipse.cdt.ui.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin;
@@ -158,6 +159,9 @@
int type = celement.getElementType();
switch (type) {
case ICElement.C_VCONTAINER:
+ if (celement instanceof IBinaryModule) {
+ return CPluginImages.DESC_OBJS_BINARY;
+ }
return CPluginImages.DESC_OBJS_CONTAINER;
case ICElement.C_BINARY: {
Index: src/org/eclipse/cdt/internal/ui/cview/CView.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java,v
retrieving revision 1.16
diff -u -r1.16 CView.java
--- src/org/eclipse/cdt/internal/ui/cview/CView.java 27 Mar 2003 16:12:17 -0000 1.16
+++ src/org/eclipse/cdt/internal/ui/cview/CView.java 31 Mar 2003 03:51:26 -0000
@@ -13,9 +13,13 @@
import org.eclipse.cdt.core.model.IArchiveContainer;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.IBinaryContainer;
+import org.eclipse.cdt.core.model.IBinaryModule;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICModel;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IParent;
+import org.eclipse.cdt.core.model.ISourceReference;
+import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.resources.MakeUtil;
import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider;
import org.eclipse.cdt.internal.ui.editor.CEditor;
@@ -36,6 +40,7 @@
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -83,6 +88,7 @@
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
@@ -966,17 +972,24 @@
ICElement celement = (ICElement)o;
IResource res = (IResource)celement.getAdapter(IResource.class);
if (res != null) {
- if (celement.getElementType() == ICElement.C_VCONTAINER) {
- ICElement parent = celement.getParent();
- IResource proj = (IResource)parent.getAdapter(IResource.class);
- if (celement instanceof IArchiveContainer)
- return proj.getFullPath() + " - archives";
- else
- return proj.getFullPath() + " - binaries";
- } else if (celement.getElementType() > ICElement.C_UNIT) {
- return res.getFullPath().toString() + " - [" + celement.getElementName() +"]";
- }
return res.getFullPath().toString();
+ } else if (celement.getElementType() == ICElement.C_VCONTAINER) {
+ if (celement instanceof IBinaryContainer) {
+ ICProject cproj = celement.getCProject();
+ if (cproj != null) {
+ return cproj.getPath() + " - binaries";
+ }
+ } else if (celement instanceof IArchiveContainer) {
+ ICProject cproj = celement.getCProject();
+ if (cproj != null) {
+ return cproj.getPath() + " - archives";
+ }
+ } else if (celement instanceof IBinaryModule) {
+ IBinary bin = ((IBinaryModule)celement).getBinary();
+ return bin.getPath() + ":" + celement.getElementName();
+ }
+ } else if (celement.getElementType() > ICElement.C_UNIT) {
+ return celement.getPath().toString() + " - [" + celement.getElementName() +"]";
}
return celement.getElementName();
} else {
@@ -1141,24 +1154,30 @@
return;
}
}
- } else if (obj instanceof ICElement) {
- ICElement celement = (ICElement) obj;
- IResource res = (IResource)celement.getAdapter(IResource.class);
- if (res == null || !(res instanceof IFile))
+ } else if (obj instanceof ISourceReference) {
+ ISourceReference sourceRef = (ISourceReference) obj;
+ ITranslationUnit tu = sourceRef.getTranslationUnit();
+ if (tu == null)
+ return;
+ IPath path = tu.getPath();
+ if (path == null)
return;
IWorkbenchPage page = getSite().getPage();
IEditorReference editorReferences[] = page.getEditorReferences();
for (int i = 0; i < editorReferences.length; ++i) {
IEditorPart editor = editorReferences[i].getEditor(false);
- if(null != editor) {
+ if (null != editor) {
IEditorInput input = editor.getEditorInput();
- if (input instanceof IFileEditorInput && res.equals(((IFileEditorInput)input).getFile())) {
- page.bringToTop(editor);
- if (editor instanceof CEditor) {
- CEditor e = (CEditor)editor;
- e.selectionChanged (new SelectionChangedEvent (e.getOutlinePage (),selection));
+ try {
+ if (input instanceof IStorageEditorInput && path.equals(((IStorageEditorInput)input).getStorage().getFullPath())) {
+ page.bringToTop(editor);
+ if (editor instanceof CEditor) {
+ CEditor e = (CEditor)editor;
+ e.selectionChanged (new SelectionChangedEvent (e.getOutlinePage (),selection));
+ }
+ return;
}
- return;
+ } catch (CoreException e) {
}
}
}
Index: src/org/eclipse/cdt/ui/CElementContentProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java,v
retrieving revision 1.3
diff -u -r1.3 CElementContentProvider.java
--- src/org/eclipse/cdt/ui/CElementContentProvider.java 27 Mar 2003 16:11:56 -0000 1.3
+++ src/org/eclipse/cdt/ui/CElementContentProvider.java 31 Mar 2003 03:51:28 -0000
@@ -11,6 +11,7 @@
import org.eclipse.cdt.core.model.ElementChangedEvent;
import org.eclipse.cdt.core.model.IArchive;
import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta;
import org.eclipse.cdt.core.model.ICModel;
@@ -19,6 +20,8 @@
import org.eclipse.cdt.core.model.IParent;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.BaseCElementContentProvider;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredViewer;
@@ -99,7 +102,7 @@
}
if (kind == ICElementDelta.REMOVED) {
- Object parent = getParent(element);
+ Object parent = internalGetParent(element);
postRemove(element);
if (updateContainer(element)) {
postRefresh(parent);
@@ -107,7 +110,7 @@
}
if (kind == ICElementDelta.ADDED) {
- Object parent= getParent(element);
+ Object parent= internalGetParent(element);
postAdd(parent, element);
if (updateContainer(element)) {
postRefresh(parent);
@@ -127,6 +130,13 @@
}
+ if (delta.getResourceDeltas() != null) {
+ IResourceDelta[] rd= delta.getResourceDeltas();
+ for (int i= 0; i < rd.length; i++) {
+ processResourceDelta(rd[i], element);
+ }
+ }
+
ICElementDelta[] affectedChildren= delta.getAffectedChildren();
for (int i= 0; i < affectedChildren.length; i++) {
processDelta(affectedChildren[i]);
@@ -138,6 +148,48 @@
//}
}
+ /*
+ * Process resource deltas
+ */
+ private void processResourceDelta(IResourceDelta delta, Object parent) {
+ int status= delta.getKind();
+ IResource resource= delta.getResource();
+ // filter out changes affecting the output folder
+ if (resource == null) {
+ return;
+ }
+
+ // this could be optimized by handling all the added children in the parent
+ if ((status & IResourceDelta.REMOVED) != 0) {
+ if (!(parent instanceof ICContainer)) {
+ // refresh one level above to deal with empty package filtering properly
+ postRefresh(internalGetParent(parent));
+ } else {
+ postRemove(resource);
+ }
+ }
+ if ((status & IResourceDelta.ADDED) != 0) {
+ if (!(parent instanceof ICContainer)) {
+ // refresh one level above to deal with empty package filtering properly
+ postRefresh(internalGetParent(parent));
+ } else {
+ postAdd(parent, resource);
+ }
+ }
+ IResourceDelta[] affectedChildren= delta.getAffectedChildren();
+
+ if (affectedChildren.length > 1) {
+ // more than one child changed, refresh from here downwards
+ postRefresh(resource);
+ return;
+ }
+
+ for (int i= 0; i < affectedChildren.length; i++) {
+ processResourceDelta(affectedChildren[i], resource);
+ }
+ }
+
+
// private void updateContainer(ICModel root) {
// postRunnable(new Runnable() {
// public void run () {
@@ -240,7 +292,7 @@
Control ctrl= fViewer.getControl();
if (ctrl != null && !ctrl.isDisposed())
// fViewer.remove(element);
- fViewer.refresh(getParent(element));
+ fViewer.refresh(internalGetParent(element));
}
});
}