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

Shows read and write access of variables in call-hierarchy, bug 156692.

This commit is contained in:
Markus Schorn 2007-12-17 15:14:04 +00:00
parent dee3496d78
commit 111b251b62
9 changed files with 64 additions and 6 deletions

View file

@ -88,6 +88,7 @@ public class IndexUpdateTests extends IndexTestBase {
if (fCProject == null) { if (fCProject == null) {
fCProject= CProjectHelper.createCProject("indexUpdateTestsC", null, IPDOMManager.ID_FAST_INDEXER); fCProject= CProjectHelper.createCProject("indexUpdateTestsC", null, IPDOMManager.ID_FAST_INDEXER);
} }
CCorePlugin.getIndexManager().joinIndexer(INDEXER_WAIT_TIME, NPM);
fIndex= CCorePlugin.getIndexManager().getIndex(new ICProject[] {fCProject, fCppProject}); fIndex= CCorePlugin.getIndexManager().getIndex(new ICProject[] {fCProject, fCppProject});
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

View file

@ -16,12 +16,13 @@ package org.eclipse.cdt.internal.ui;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IAction;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.cdt.ui.CUIPlugin;
/** /**
* Bundle of all images used by the C plugin. * Bundle of all images used by the C plugin.
*/ */
@ -264,6 +265,9 @@ public class CPluginImages {
public static final ImageDescriptor DESC_OVR_SYSTEM_INCLUDE= create(T_OVR, "systeminclude_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OVR_SYSTEM_INCLUDE= create(T_OVR, "systeminclude_co.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_DEFINES= create(T_OVR, "defines_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OVR_DEFINES= create(T_OVR, "defines_co.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_INACTIVE= create(T_OVR, "inactive_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OVR_INACTIVE= create(T_OVR, "inactive_co.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_READ_ACCESS= create(T_OVR, "read.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_READ_WRITE_ACCESS= create(T_OVR, "readwrite.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_WRITE_ACCESS= create(T_OVR, "write.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_WARNING= create(T_OVR, "warning_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OVR_WARNING= create(T_OVR, "warning_co.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OVR_ERROR= create(T_OVR, "error_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OVR_ERROR= create(T_OVR, "error_co.gif"); //$NON-NLS-1$

View file

@ -197,10 +197,15 @@ public class CHContentProvider extends AsyncTreeContentProvider {
if (element instanceof IVariable || element instanceof IEnumerator) { if (element instanceof IVariable || element instanceof IEnumerator) {
node.setInitializer(true); node.setInitializer(true);
} }
boolean readAccess= false;
boolean writeAccess= false;
for (int i = 0; i < refs.length; i++) { for (int i = 0; i < refs.length; i++) {
IIndexName reference = refs[i]; IIndexName reference = refs[i];
node.addReference(new CHReferenceInfo(reference.getNodeOffset(), reference.getNodeLength())); node.addReference(new CHReferenceInfo(reference.getNodeOffset(), reference.getNodeLength()));
readAccess= (readAccess || reference.isReadAccess());
writeAccess= (writeAccess || reference.isWriteAccess());
} }
node.setRWAccess(readAccess, writeAccess);
node.sortReferencesByOffset(); node.sortReferencesByOffset();
return node; return node;
} }
@ -236,11 +241,16 @@ public class CHContentProvider extends AsyncTreeContentProvider {
node= new CHMultiDefNode(parent, tu, timestamp, elements); node= new CHMultiDefNode(parent, tu, timestamp, elements);
} }
boolean readAccess= false;
boolean writeAccess= false;
for (int i = 0; i < references.length; i++) { for (int i = 0; i < references.length; i++) {
IIndexName reference = references[i]; IIndexName reference = references[i];
node.addReference(new CHReferenceInfo(reference.getNodeOffset(), reference.getNodeLength())); node.addReference(new CHReferenceInfo(reference.getNodeOffset(), reference.getNodeLength()));
readAccess= (readAccess || reference.isReadAccess());
writeAccess= (writeAccess || reference.isWriteAccess());
} }
node.sortReferencesByOffset(); node.sortReferencesByOffset();
node.setRWAccess(readAccess, writeAccess);
return node; return node;
} }
} }

View file

@ -142,6 +142,12 @@ public class CHLabelProvider extends LabelProvider implements IColorProvider {
} }
} }
} }
if (node.isReadAccess()) {
flags |= CElementImageDescriptor.READ_ACCESS;
}
if (node.isWriteAccess()) {
flags |= CElementImageDescriptor.WRITE_ACCESS;
}
String key= image.toString()+String.valueOf(flags); String key= image.toString()+String.valueOf(flags);
Image result= (Image) fCachedImages.get(key); Image result= (Image) fCachedImages.get(key);

View file

@ -35,9 +35,11 @@ public class CHNode implements IAdaptable {
private List fReferences; private List fReferences;
private int fHashCode; private int fHashCode;
private boolean fIsRecursive;
private long fTimestamp; private long fTimestamp;
private boolean fIsRecursive;
private boolean fIsInitializer; private boolean fIsInitializer;
private boolean fIsReadAccess;
private boolean fIsWriteAccess;
/** /**
* Creates a new node for the include browser * Creates a new node for the include browser
@ -175,4 +177,17 @@ public class CHNode implements IAdaptable {
Collections.sort(fReferences, CHReferenceInfo.COMPARE_OFFSET); Collections.sort(fReferences, CHReferenceInfo.COMPARE_OFFSET);
} }
} }
public void setRWAccess(boolean readAccess, boolean writeAccess) {
fIsReadAccess= readAccess;
fIsWriteAccess= writeAccess;
}
public boolean isReadAccess() {
return fIsReadAccess;
}
public boolean isWriteAccess() {
return fIsWriteAccess;
}
} }

View file

@ -12,13 +12,13 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.ui; package org.eclipse.cdt.ui;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Point;
import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.core.runtime.Assert;
/** /**
@ -91,6 +91,12 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
/** Flag to render the 'inactive' adornment for include directives */ /** Flag to render the 'inactive' adornment for include directives */
public final static int INACTIVE= 0x8000; public final static int INACTIVE= 0x8000;
/** Flag to render the 'read access' adornment for references to variables or fields */
public static final int READ_ACCESS = 0x10000;
/** Flag to render the 'read access' adornment for references to variables or fields */
public static final int WRITE_ACCESS = 0x20000;
private ImageDescriptor fBaseImage; private ImageDescriptor fBaseImage;
private int fFlags; private int fFlags;
private Point fSize; private Point fSize;
@ -270,6 +276,22 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
data= CPluginImages.DESC_OVR_INACTIVE.getImageData(); data= CPluginImages.DESC_OVR_INACTIVE.getImageData();
drawImage(data, 0, 0); drawImage(data, 0, 0);
} }
final boolean isReadAccess= (fFlags & READ_ACCESS) != 0;
final boolean isWriteAccess= (fFlags & WRITE_ACCESS) != 0;
if (isReadAccess) {
if (isWriteAccess) {
data= CPluginImages.DESC_OVR_READ_WRITE_ACCESS.getImageData();
}
else {
data= CPluginImages.DESC_OVR_READ_ACCESS.getImageData();
}
drawImage(data, 0, 0);
}
else if (isWriteAccess) {
data= CPluginImages.DESC_OVR_WRITE_ACCESS.getImageData();
drawImage(data, 0, 0);
}
} }
private void drawBottomLeft() { private void drawBottomLeft() {