mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 19:25:38 +02:00
Type Hierarchy: mark selected member in hierarchy.
This commit is contained in:
parent
df85b0a70c
commit
65af5a4620
13 changed files with 283 additions and 145 deletions
|
@ -122,7 +122,7 @@ public class TypeHierarchyBaseTest extends BaseUITestCase {
|
||||||
runEventQueue(10);
|
runEventQueue(10);
|
||||||
}
|
}
|
||||||
assertNotNull(th);
|
assertNotNull(th);
|
||||||
return th.getMethodViewer();
|
return th.getMemberViewer();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected TreeItem checkTreeNode(Tree tree, int i0, String label) {
|
protected TreeItem checkTreeNode(Tree tree, int i0, String label) {
|
||||||
|
|
BIN
core/org.eclipse.cdt.ui/icons/ovr16/defines_co.gif
Normal file
BIN
core/org.eclipse.cdt.ui/icons/ovr16/defines_co.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 832 B |
|
@ -232,6 +232,7 @@ public class CPluginImages {
|
||||||
public static final ImageDescriptor DESC_OVR_REC_RELATESTO= create(T_OVR, "rec_relatesto_co.gif"); //$NON-NLS-1$
|
public static final ImageDescriptor DESC_OVR_REC_RELATESTO= create(T_OVR, "rec_relatesto_co.gif"); //$NON-NLS-1$
|
||||||
public static final ImageDescriptor DESC_OVR_REC_REFERENCEDBY= create(T_OVR, "rec_referencedby_co.gif"); //$NON-NLS-1$
|
public static final ImageDescriptor DESC_OVR_REC_REFERENCEDBY= create(T_OVR, "rec_referencedby_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_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_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$
|
||||||
|
|
|
@ -39,7 +39,7 @@ import org.eclipse.cdt.internal.core.model.ext.ICElementHandle;
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.IndexUI;
|
import org.eclipse.cdt.internal.ui.viewsupport.IndexUI;
|
||||||
|
|
||||||
class THGraph {
|
class THGraph {
|
||||||
private static final Object[] NO_MEMBERS = new Object[0];
|
private static final ICElement[] NO_MEMBERS = new ICElement[0];
|
||||||
private THGraphNode fInputNode= null;
|
private THGraphNode fInputNode= null;
|
||||||
private HashSet fRootNodes= new HashSet();
|
private HashSet fRootNodes= new HashSet();
|
||||||
private HashSet fLeaveNodes= new HashSet();
|
private HashSet fLeaveNodes= new HashSet();
|
||||||
|
@ -252,31 +252,29 @@ class THGraph {
|
||||||
|
|
||||||
private void addMembers(IIndex index, THGraphNode graphNode, IBinding binding) throws DOMException, CoreException {
|
private void addMembers(IIndex index, THGraphNode graphNode, IBinding binding) throws DOMException, CoreException {
|
||||||
if (graphNode.getMembers(false) == null) {
|
if (graphNode.getMembers(false) == null) {
|
||||||
|
ArrayList memberList= new ArrayList();
|
||||||
if (binding instanceof ICPPClassType) {
|
if (binding instanceof ICPPClassType) {
|
||||||
ICPPClassType ct= (ICPPClassType) binding;
|
ICPPClassType ct= (ICPPClassType) binding;
|
||||||
ArrayList memberList= new ArrayList();
|
|
||||||
IBinding[] members= ct.getDeclaredFields();
|
IBinding[] members= ct.getDeclaredFields();
|
||||||
addMemberElements(index, members, memberList);
|
addMemberElements(index, members, memberList);
|
||||||
members= ct.getDeclaredMethods();
|
members= ct.getDeclaredMethods();
|
||||||
addMemberElements(index, members, memberList);
|
addMemberElements(index, members, memberList);
|
||||||
graphNode.setMembers(memberList.toArray());
|
|
||||||
}
|
}
|
||||||
else if (binding instanceof ICompositeType) {
|
else if (binding instanceof ICompositeType) {
|
||||||
ICompositeType ct= (ICompositeType) binding;
|
ICompositeType ct= (ICompositeType) binding;
|
||||||
ArrayList memberList= new ArrayList();
|
|
||||||
IBinding[] members= ct.getFields();
|
IBinding[] members= ct.getFields();
|
||||||
addMemberElements(index, members, memberList);
|
addMemberElements(index, members, memberList);
|
||||||
graphNode.setMembers(memberList.toArray());
|
|
||||||
}
|
}
|
||||||
else if (binding instanceof IEnumeration) {
|
else if (binding instanceof IEnumeration) {
|
||||||
IEnumeration ct= (IEnumeration) binding;
|
IEnumeration ct= (IEnumeration) binding;
|
||||||
ArrayList memberList= new ArrayList();
|
|
||||||
IBinding[] members= ct.getEnumerators();
|
IBinding[] members= ct.getEnumerators();
|
||||||
addMemberElements(index, members, memberList);
|
addMemberElements(index, members, memberList);
|
||||||
graphNode.setMembers(memberList.toArray());
|
}
|
||||||
|
if (memberList.isEmpty()) {
|
||||||
|
graphNode.setMembers(NO_MEMBERS);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
graphNode.setMembers(NO_MEMBERS);
|
graphNode.setMembers((ICElement[]) memberList.toArray(new ICElement[memberList.size()]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ class THGraphNode {
|
||||||
private List fOutgoing= Collections.EMPTY_LIST;
|
private List fOutgoing= Collections.EMPTY_LIST;
|
||||||
private List fIncoming= Collections.EMPTY_LIST;
|
private List fIncoming= Collections.EMPTY_LIST;
|
||||||
private ICElement fElement;
|
private ICElement fElement;
|
||||||
private Object[] fMembers= null;
|
private ICElement[] fMembers= null;
|
||||||
|
|
||||||
THGraphNode(ICElement element) {
|
THGraphNode(ICElement element) {
|
||||||
fElement= element;
|
fElement= element;
|
||||||
|
@ -63,17 +63,17 @@ class THGraphNode {
|
||||||
return fIncoming;
|
return fIncoming;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMembers(Object[] array) {
|
public void setMembers(ICElement[] array) {
|
||||||
fMembers= array;
|
fMembers= array;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getMembers(boolean addInherited) {
|
public ICElement[] getMembers(boolean addInherited) {
|
||||||
if (!addInherited) {
|
if (!addInherited) {
|
||||||
return fMembers;
|
return fMembers;
|
||||||
}
|
}
|
||||||
ArrayList list= new ArrayList();
|
ArrayList list= new ArrayList();
|
||||||
collectMembers(new HashSet(), list);
|
collectMembers(new HashSet(), list);
|
||||||
return list.toArray();
|
return (ICElement[]) list.toArray(new ICElement[list.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collectMembers(HashSet visited, List list) {
|
private void collectMembers(HashSet visited, List list) {
|
||||||
|
|
|
@ -58,9 +58,11 @@ class THHierarchyModel {
|
||||||
private boolean fShowInheritedMembers;
|
private boolean fShowInheritedMembers;
|
||||||
|
|
||||||
private THGraph fGraph;
|
private THGraph fGraph;
|
||||||
private Object[] fRootNodes;
|
private THNode[] fRootNodes;
|
||||||
private THNode fHierarchySelection;
|
private THNode fSelectedTypeNode;
|
||||||
private ICElement fHierarchySelectionToRestore;
|
private ICElement fTypeToSelect;
|
||||||
|
private ICElement fSelectedMember;
|
||||||
|
private String fMemberSignatureToSelect;
|
||||||
|
|
||||||
private Job fJob;
|
private Job fJob;
|
||||||
private Display fDisplay;
|
private Display fDisplay;
|
||||||
|
@ -90,6 +92,8 @@ class THHierarchyModel {
|
||||||
|
|
||||||
public void setShowInheritedMembers(boolean showInheritedMembers) {
|
public void setShowInheritedMembers(boolean showInheritedMembers) {
|
||||||
fShowInheritedMembers = showInheritedMembers;
|
fShowInheritedMembers = showInheritedMembers;
|
||||||
|
computeSelectedMember();
|
||||||
|
updateImplementors();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getHierarchyRootElements() {
|
public Object[] getHierarchyRootElements() {
|
||||||
|
@ -107,8 +111,8 @@ class THHierarchyModel {
|
||||||
stopGraphComputation();
|
stopGraphComputation();
|
||||||
fInput= input;
|
fInput= input;
|
||||||
fRootNodes= null;
|
fRootNodes= null;
|
||||||
fHierarchySelection= null;
|
fSelectedTypeNode= null;
|
||||||
fHierarchySelectionToRestore= input;
|
fTypeToSelect= input;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized public void computeGraph() {
|
synchronized public void computeGraph() {
|
||||||
|
@ -198,7 +202,7 @@ class THHierarchyModel {
|
||||||
|
|
||||||
while(!stack.isEmpty()) {
|
while(!stack.isEmpty()) {
|
||||||
THNode node= (THNode) stack.remove(stack.size()-1);
|
THNode node= (THNode) stack.remove(stack.size()-1);
|
||||||
THGraphNode gnode= fGraph.getNode(node.getRepresentedDeclaration());
|
THGraphNode gnode= fGraph.getNode(node.getElement());
|
||||||
List edges= fwd ? gnode.getOutgoing() : gnode.getIncoming();
|
List edges= fwd ? gnode.getOutgoing() : gnode.getIncoming();
|
||||||
if (edges.isEmpty()) {
|
if (edges.isEmpty()) {
|
||||||
leaves.add(node);
|
leaves.add(node);
|
||||||
|
@ -213,25 +217,53 @@ class THHierarchyModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fHierarchySelection= newSelection[0];
|
fSelectedTypeNode= newSelection[0];
|
||||||
if (fHierarchySelection == null) {
|
if (fSelectedTypeNode == null) {
|
||||||
fHierarchySelection= newSelection[1];
|
fSelectedTypeNode= newSelection[1];
|
||||||
}
|
}
|
||||||
if (fHierarchySelection != null) {
|
if (fSelectedTypeNode != null) {
|
||||||
fHierarchySelectionToRestore= fHierarchySelection.getRepresentedDeclaration();
|
fTypeToSelect= fSelectedTypeNode.getElement();
|
||||||
|
computeSelectedMember();
|
||||||
|
}
|
||||||
|
|
||||||
|
fRootNodes= (THNode[]) roots.toArray(new THNode[roots.size()]);
|
||||||
|
updateImplementors();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void computeSelectedMember() {
|
||||||
|
ICElement oldSelection= fSelectedMember;
|
||||||
|
fSelectedMember= null;
|
||||||
|
if (fSelectedTypeNode != null && fMemberSignatureToSelect != null) {
|
||||||
|
THGraphNode gnode= fGraph.getNode(fSelectedTypeNode.getElement());
|
||||||
|
if (gnode != null) {
|
||||||
|
ICElement[] members= gnode.getMembers(fShowInheritedMembers);
|
||||||
|
for (int i = 0; i < members.length; i++) {
|
||||||
|
ICElement member= members[i];
|
||||||
|
if (member.equals(oldSelection)) {
|
||||||
|
fSelectedMember= member;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < members.length; i++) {
|
||||||
|
ICElement member= members[i];
|
||||||
|
if (fMemberSignatureToSelect.equals(TypeHierarchyUI.getLocalElementSignature(member))) {
|
||||||
|
fSelectedMember= member;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fRootNodes= roots.toArray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private THNode createNode(THNode[] newSelection, THNode parent, THGraphNode gnode) {
|
private THNode createNode(THNode[] newSelection, THNode parent, THGraphNode gnode) {
|
||||||
ICElement element = gnode.getElement();
|
ICElement element = gnode.getElement();
|
||||||
THNode node= new THNode(parent, element);
|
THNode node= new THNode(parent, element);
|
||||||
if (newSelection[0] == null) {
|
if (newSelection[0] == null) {
|
||||||
if (node.equals(fHierarchySelection)) {
|
if (node.equals(fSelectedTypeNode)) {
|
||||||
newSelection[0]= node;
|
newSelection[0]= node;
|
||||||
}
|
}
|
||||||
else if (newSelection[1] == null) {
|
else if (newSelection[1] == null) {
|
||||||
if (element.equals(fHierarchySelectionToRestore)) {
|
if (element.equals(fTypeToSelect)) {
|
||||||
newSelection[1]= node;
|
newSelection[1]= node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -250,8 +282,8 @@ class THHierarchyModel {
|
||||||
fView.setMessage(Messages.THHierarchyModel_errorComputingHierarchy);
|
fView.setMessage(Messages.THHierarchyModel_errorComputingHierarchy);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (fHierarchySelectionToRestore == fInput) {
|
if (fTypeToSelect == fInput) {
|
||||||
fHierarchySelectionToRestore= inputNode.getElement();
|
fTypeToSelect= inputNode.getElement();
|
||||||
}
|
}
|
||||||
fInput= inputNode.getElement();
|
fInput= inputNode.getElement();
|
||||||
}
|
}
|
||||||
|
@ -275,19 +307,21 @@ class THHierarchyModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public THNode getSelectionInHierarchy() {
|
public THNode getSelectionInHierarchy() {
|
||||||
return fHierarchySelection;
|
return fSelectedTypeNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onHierarchySelectionChanged(THNode node) {
|
public void onHierarchySelectionChanged(THNode node) {
|
||||||
fHierarchySelection= node;
|
fSelectedTypeNode= node;
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
fHierarchySelectionToRestore= node.getRepresentedDeclaration();
|
fTypeToSelect= node.getElement();
|
||||||
}
|
}
|
||||||
|
computeSelectedMember();
|
||||||
|
updateImplementors();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getMembers() {
|
public Object[] getMembers() {
|
||||||
if (fHierarchySelection != null) {
|
if (fSelectedTypeNode != null) {
|
||||||
THGraphNode gnode= fGraph.getNode(fHierarchySelection.getRepresentedDeclaration());
|
THGraphNode gnode= fGraph.getNode(fSelectedTypeNode.getElement());
|
||||||
Object[] result= gnode.getMembers(fShowInheritedMembers);
|
Object[] result= gnode.getMembers(fShowInheritedMembers);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
return result;
|
return result;
|
||||||
|
@ -295,4 +329,57 @@ class THHierarchyModel {
|
||||||
}
|
}
|
||||||
return NO_CHILDREN;
|
return NO_CHILDREN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onMemberSelectionChanged(ICElement elem) {
|
||||||
|
fSelectedMember= elem;
|
||||||
|
if (fSelectedMember != null) {
|
||||||
|
fMemberSignatureToSelect= TypeHierarchyUI.getLocalElementSignature(fSelectedMember);
|
||||||
|
}
|
||||||
|
updateImplementors();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateImplementors() {
|
||||||
|
if (fRootNodes != null) {
|
||||||
|
for (int i = 0; i < fRootNodes.length; i++) {
|
||||||
|
THNode node = fRootNodes[i];
|
||||||
|
updateImplementors(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateImplementors(THNode node) {
|
||||||
|
node.setIsImplementor(isImplementor(node.getElement()));
|
||||||
|
THNode[] children= node.getChildren();
|
||||||
|
for (int i = 0; i < children.length; i++) {
|
||||||
|
THNode child = children[i];
|
||||||
|
updateImplementors(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isImplementor(ICElement element) {
|
||||||
|
if (element == null || fSelectedMember == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
THGraphNode gnode= fGraph.getNode(element);
|
||||||
|
if (gnode != null) {
|
||||||
|
ICElement[] members= gnode.getMembers(false);
|
||||||
|
if (members != null) {
|
||||||
|
for (int i = 0; i < members.length; i++) {
|
||||||
|
ICElement member = members[i];
|
||||||
|
if (member == fSelectedMember) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (fMemberSignatureToSelect != null &&
|
||||||
|
fMemberSignatureToSelect.equals(TypeHierarchyUI.getLocalElementSignature(member))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICElement getSelectedMember() {
|
||||||
|
return fSelectedMember;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class THLabelProvider extends LabelProvider implements IColorProvider {
|
||||||
public Image getImage(Object element) {
|
public Image getImage(Object element) {
|
||||||
if (element instanceof THNode) {
|
if (element instanceof THNode) {
|
||||||
THNode node= (THNode) element;
|
THNode node= (THNode) element;
|
||||||
ICElement decl= node.getRepresentedDeclaration();
|
ICElement decl= node.getElement();
|
||||||
if (decl != null) {
|
if (decl != null) {
|
||||||
Image image= fCLabelProvider.getImage(decl);
|
Image image= fCLabelProvider.getImage(decl);
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
|
@ -64,7 +64,7 @@ public class THLabelProvider extends LabelProvider implements IColorProvider {
|
||||||
public String getText(Object element) {
|
public String getText(Object element) {
|
||||||
if (element instanceof THNode) {
|
if (element instanceof THNode) {
|
||||||
THNode node= (THNode) element;
|
THNode node= (THNode) element;
|
||||||
ICElement decl= node.getRepresentedDeclaration();
|
ICElement decl= node.getElement();
|
||||||
if (decl != null) {
|
if (decl != null) {
|
||||||
String label= fCLabelProvider.getText(decl);
|
String label= fCLabelProvider.getText(decl);
|
||||||
return label;
|
return label;
|
||||||
|
@ -93,6 +93,9 @@ public class THLabelProvider extends LabelProvider implements IColorProvider {
|
||||||
flags |= CElementImageDescriptor.REFERENCED_BY;
|
flags |= CElementImageDescriptor.REFERENCED_BY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (node.isImplementor()) {
|
||||||
|
flags |= CElementImageDescriptor.DEFINES;
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -14,11 +14,11 @@ package org.eclipse.cdt.internal.ui.typehierarchy;
|
||||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||||
import org.eclipse.jface.viewers.Viewer;
|
import org.eclipse.jface.viewers.Viewer;
|
||||||
|
|
||||||
public class THMethodContentProvider implements IStructuredContentProvider {
|
public class THMemberContentProvider implements IStructuredContentProvider {
|
||||||
private static final Object[] NO_CHILDREN= new Object[0];
|
private static final Object[] NO_CHILDREN= new Object[0];
|
||||||
private THHierarchyModel fModel;
|
private THHierarchyModel fModel;
|
||||||
|
|
||||||
public THMethodContentProvider() {
|
public THMemberContentProvider() {
|
||||||
}
|
}
|
||||||
|
|
||||||
final public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
final public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
|
@ -23,18 +23,19 @@ import org.eclipse.cdt.internal.ui.util.CoreUtility;
|
||||||
|
|
||||||
public class THNode implements IAdaptable {
|
public class THNode implements IAdaptable {
|
||||||
private THNode fParent;
|
private THNode fParent;
|
||||||
private ICElement fRepresentedDecl;
|
private ICElement fElement;
|
||||||
private List fChildren= Collections.EMPTY_LIST;
|
private List fChildren= Collections.EMPTY_LIST;
|
||||||
|
|
||||||
private int fHashCode;
|
private int fHashCode;
|
||||||
private boolean fIsFiltered;
|
private boolean fIsFiltered;
|
||||||
|
private boolean fIsImplementor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new node for the include browser
|
* Creates a new node for the include browser
|
||||||
*/
|
*/
|
||||||
public THNode(THNode parent, ICElement decl) {
|
public THNode(THNode parent, ICElement decl) {
|
||||||
fParent= parent;
|
fParent= parent;
|
||||||
fRepresentedDecl= decl;
|
fElement= decl;
|
||||||
fHashCode= computeHashCode();
|
fHashCode= computeHashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,8 +44,8 @@ public class THNode implements IAdaptable {
|
||||||
if (fParent != null) {
|
if (fParent != null) {
|
||||||
hashCode= fParent.hashCode() * 31;
|
hashCode= fParent.hashCode() * 31;
|
||||||
}
|
}
|
||||||
if (fRepresentedDecl != null) {
|
if (fElement != null) {
|
||||||
hashCode+= fRepresentedDecl.hashCode();
|
hashCode+= fElement.hashCode();
|
||||||
}
|
}
|
||||||
return hashCode;
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
@ -63,7 +64,7 @@ public class THNode implements IAdaptable {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return CoreUtility.safeEquals(fRepresentedDecl, rhs.fRepresentedDecl);
|
return CoreUtility.safeEquals(fElement, rhs.fElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,13 +75,13 @@ public class THNode implements IAdaptable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ICElement getRepresentedDeclaration() {
|
public ICElement getElement() {
|
||||||
return fRepresentedDecl;
|
return fElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getAdapter(Class adapter) {
|
public Object getAdapter(Class adapter) {
|
||||||
if (adapter.isAssignableFrom(ICElement.class)) {
|
if (adapter.isAssignableFrom(ICElement.class)) {
|
||||||
return getRepresentedDeclaration();
|
return getElement();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -112,8 +113,16 @@ public class THNode implements IAdaptable {
|
||||||
return !fChildren.isEmpty();
|
return !fChildren.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getChildren() {
|
public THNode[] getChildren() {
|
||||||
return fChildren.toArray();
|
return (THNode[]) fChildren.toArray(new THNode[fChildren.size()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsImplementor(boolean val) {
|
||||||
|
fIsImplementor= val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isImplementor() {
|
||||||
|
return fIsImplementor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,9 +112,9 @@ public class THViewPart extends ViewPart {
|
||||||
private static final int ORIENTATION_HORIZONTAL = 1;
|
private static final int ORIENTATION_HORIZONTAL = 1;
|
||||||
private static final int ORIENTATION_VERTICAL = 2;
|
private static final int ORIENTATION_VERTICAL = 2;
|
||||||
private static final int ORIENTATION_SINGLE = 3;
|
private static final int ORIENTATION_SINGLE = 3;
|
||||||
private static final int METHOD_LABEL_OPTIONS_SIMPLE = CElementLabels.M_PARAMETER_TYPES;
|
private static final int MEMBER_LABEL_OPTIONS_SIMPLE = CElementLabels.M_PARAMETER_TYPES;
|
||||||
private static final int METHOD_LABEL_OPTIONS_QUALIFIED = METHOD_LABEL_OPTIONS_SIMPLE | CElementLabels.ALL_POST_QUALIFIED;
|
private static final int MEMBER_LABEL_OPTIONS_QUALIFIED = MEMBER_LABEL_OPTIONS_SIMPLE | CElementLabels.ALL_POST_QUALIFIED;
|
||||||
private static final int METHOD_ICON_OPTIONS = CElementImageProvider.OVERLAY_ICONS;
|
private static final int MEMBER_ICON_OPTIONS = CElementImageProvider.OVERLAY_ICONS;
|
||||||
|
|
||||||
private IMemento fMemento;
|
private IMemento fMemento;
|
||||||
private boolean fShowsMessage= true;
|
private boolean fShowsMessage= true;
|
||||||
|
@ -129,21 +129,21 @@ public class THViewPart extends ViewPart {
|
||||||
private Text fInfoText;
|
private Text fInfoText;
|
||||||
private SashForm fSplitter;
|
private SashForm fSplitter;
|
||||||
private ViewForm fHierarchyViewForm;
|
private ViewForm fHierarchyViewForm;
|
||||||
private ViewForm fMethodViewForm;
|
private ViewForm fMemberViewForm;
|
||||||
private CLabel fMethodLabel;
|
private CLabel fMemberLabel;
|
||||||
|
|
||||||
// viewers
|
// viewers
|
||||||
private THHierarchyModel fModel;
|
private THHierarchyModel fModel;
|
||||||
private THLabelProvider fHierarchyLabelProvider;
|
private THLabelProvider fHierarchyLabelProvider;
|
||||||
private CUILabelProvider fMethodLabelProvider;
|
private CUILabelProvider fMemberLabelProvider;
|
||||||
private TableViewer fMethodViewer;
|
private TableViewer fMemberViewer;
|
||||||
private TreeViewer fHierarchyTreeViewer;
|
private TreeViewer fHierarchyTreeViewer;
|
||||||
|
|
||||||
// filters, sorter
|
// filters, sorter
|
||||||
// private WorkingSetFilterUI fWorkingSetFilterUI;
|
// private WorkingSetFilterUI fWorkingSetFilterUI;
|
||||||
|
|
||||||
// actions
|
// actions
|
||||||
private ToolBarManager fMethodToolbarManager;
|
private ToolBarManager fMemberToolbarManager;
|
||||||
private Action fShowSuperTypeHierarchyAction;
|
private Action fShowSuperTypeHierarchyAction;
|
||||||
private Action fShowSubTypeHierarchyAction;
|
private Action fShowSubTypeHierarchyAction;
|
||||||
private Action fShowTypeHierarchyAction;
|
private Action fShowTypeHierarchyAction;
|
||||||
|
@ -189,13 +189,13 @@ public class THViewPart extends ViewPart {
|
||||||
if (input == null) {
|
if (input == null) {
|
||||||
setMessage(Messages.THViewPart_instruction);
|
setMessage(Messages.THViewPart_instruction);
|
||||||
fHierarchyTreeViewer.setInput(null);
|
fHierarchyTreeViewer.setInput(null);
|
||||||
fMethodViewer.setInput(null);
|
fMemberViewer.setInput(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fShowsMessage= false;
|
fShowsMessage= false;
|
||||||
fModel.setInput(input);
|
fModel.setInput(input);
|
||||||
fHierarchyTreeViewer.setInput(fModel);
|
fHierarchyTreeViewer.setInput(fModel);
|
||||||
fMethodViewer.setInput(fModel);
|
fMemberViewer.setInput(fModel);
|
||||||
fPagebook.showPage(fSplitter);
|
fPagebook.showPage(fSplitter);
|
||||||
updateDescription();
|
updateDescription();
|
||||||
updateHistory(input);
|
updateHistory(input);
|
||||||
|
@ -222,7 +222,7 @@ public class THViewPart extends ViewPart {
|
||||||
private void initSelectionProvider() {
|
private void initSelectionProvider() {
|
||||||
SelectionProviderMediator mediator= new SelectionProviderMediator();
|
SelectionProviderMediator mediator= new SelectionProviderMediator();
|
||||||
mediator.addViewer(fHierarchyTreeViewer);
|
mediator.addViewer(fHierarchyTreeViewer);
|
||||||
mediator.addViewer(fMethodViewer);
|
mediator.addViewer(fMemberViewer);
|
||||||
getSite().setSelectionProvider(new AdaptingSelectionProvider(ICElement.class, mediator));
|
getSite().setSelectionProvider(new AdaptingSelectionProvider(ICElement.class, mediator));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ public class THViewPart extends ViewPart {
|
||||||
fHierarchyLabelProvider.setShowFiles(showFiles);
|
fHierarchyLabelProvider.setShowFiles(showFiles);
|
||||||
fShowFilesInLabelsAction.setChecked(showFiles);
|
fShowFilesInLabelsAction.setChecked(showFiles);
|
||||||
|
|
||||||
fMethodToolbarManager.update(true);
|
fMemberToolbarManager.update(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init(IViewSite site, IMemento memento) throws PartInitException {
|
public void init(IViewSite site, IMemento memento) throws PartInitException {
|
||||||
|
@ -347,14 +347,14 @@ public class THViewPart extends ViewPart {
|
||||||
onContextMenuAboutToShow(m, false);
|
onContextMenuAboutToShow(m, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
menu = manager.createContextMenu(fMethodViewer.getControl());
|
menu = manager.createContextMenu(fMemberViewer.getControl());
|
||||||
fMethodViewer.getControl().setMenu(menu);
|
fMemberViewer.getControl().setMenu(menu);
|
||||||
site.registerContextMenu(CUIPlugin.ID_TYPE_HIERARCHY + ".methods", manager, fMethodViewer); //$NON-NLS-1$
|
site.registerContextMenu(CUIPlugin.ID_TYPE_HIERARCHY + ".members", manager, fMemberViewer); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onContextMenuAboutToShow(IMenuManager menu, boolean hierarchyView) {
|
protected void onContextMenuAboutToShow(IMenuManager menu, boolean hierarchyView) {
|
||||||
CUIPlugin.createStandardGroups(menu);
|
CUIPlugin.createStandardGroups(menu);
|
||||||
StructuredViewer viewer= hierarchyView ? (StructuredViewer) fHierarchyTreeViewer : fMethodViewer;
|
StructuredViewer viewer= hierarchyView ? (StructuredViewer) fHierarchyTreeViewer : fMemberViewer;
|
||||||
final ICElement elem= selectionToElement(viewer.getSelection());
|
final ICElement elem= selectionToElement(viewer.getSelection());
|
||||||
if (elem != null) {
|
if (elem != null) {
|
||||||
menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, fOpenElement);
|
menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, fOpenElement);
|
||||||
|
@ -400,31 +400,31 @@ public class THViewPart extends ViewPart {
|
||||||
Control hierarchyControl= createHierarchyControl(fHierarchyViewForm);
|
Control hierarchyControl= createHierarchyControl(fHierarchyViewForm);
|
||||||
fHierarchyViewForm.setContent(hierarchyControl);
|
fHierarchyViewForm.setContent(hierarchyControl);
|
||||||
|
|
||||||
fMethodViewForm= new ViewForm(fSplitter, SWT.NONE);
|
fMemberViewForm= new ViewForm(fSplitter, SWT.NONE);
|
||||||
Control methodControl= createMethodControl(fMethodViewForm);
|
Control memberControl= createMemberControl(fMemberViewForm);
|
||||||
fMethodViewForm.setContent(methodControl);
|
fMemberViewForm.setContent(memberControl);
|
||||||
|
|
||||||
fMethodLabel = new CLabel(fMethodViewForm, SWT.NONE);
|
fMemberLabel = new CLabel(fMemberViewForm, SWT.NONE);
|
||||||
fMethodLabel.setText(Messages.THViewPart_MethodPane_title);
|
fMemberLabel.setText(Messages.THViewPart_MethodPane_title);
|
||||||
fMethodViewForm.setTopLeft(fMethodLabel);
|
fMemberViewForm.setTopLeft(fMemberLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Control createMethodControl(ViewForm parent) {
|
private Control createMemberControl(ViewForm parent) {
|
||||||
fMethodLabelProvider= new CUILabelProvider(METHOD_LABEL_OPTIONS_SIMPLE, METHOD_ICON_OPTIONS);
|
fMemberLabelProvider= new CUILabelProvider(MEMBER_LABEL_OPTIONS_SIMPLE, MEMBER_ICON_OPTIONS);
|
||||||
fMethodViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
|
fMemberViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
|
||||||
fMethodViewer.setContentProvider(new THMethodContentProvider());
|
fMemberViewer.setContentProvider(new THMemberContentProvider());
|
||||||
fMethodViewer.setLabelProvider(fMethodLabelProvider);
|
fMemberViewer.setLabelProvider(fMemberLabelProvider);
|
||||||
fMethodViewer.addOpenListener(new IOpenListener() {
|
fMemberViewer.addOpenListener(new IOpenListener() {
|
||||||
public void open(OpenEvent event) {
|
public void open(OpenEvent event) {
|
||||||
onOpenElement(event.getSelection());
|
onOpenElement(event.getSelection());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
fMethodViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
fMemberViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||||
public void selectionChanged(final SelectionChangedEvent event) {
|
public void selectionChanged(final SelectionChangedEvent event) {
|
||||||
onMethodSelectionChanged(event);
|
onMemberSelectionChanged(event);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
fMethodViewer.setSorter(new ViewerSorter() {
|
fMemberViewer.setSorter(new ViewerSorter() {
|
||||||
public int category(Object element) {
|
public int category(Object element) {
|
||||||
if (element instanceof ICElement) {
|
if (element instanceof ICElement) {
|
||||||
ICElement celem= (ICElement)element;
|
ICElement celem= (ICElement)element;
|
||||||
|
@ -446,14 +446,17 @@ public class THViewPart extends ViewPart {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ToolBar methodToolBar= new ToolBar(parent, SWT.FLAT | SWT.WRAP);
|
ToolBar memberToolBar= new ToolBar(parent, SWT.FLAT | SWT.WRAP);
|
||||||
parent.setTopCenter(methodToolBar);
|
parent.setTopCenter(memberToolBar);
|
||||||
fMethodToolbarManager= new ToolBarManager(methodToolBar);
|
fMemberToolbarManager= new ToolBarManager(memberToolBar);
|
||||||
return fMethodViewer.getControl();
|
return fMemberViewer.getControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onMethodSelectionChanged(SelectionChangedEvent event) {
|
protected void onMemberSelectionChanged(SelectionChangedEvent event) {
|
||||||
if (fIgnoreSelectionChanges == 0) {
|
if (fIgnoreSelectionChanges == 0) {
|
||||||
|
ICElement elem= selectionToElement(event.getSelection());
|
||||||
|
fModel.onMemberSelectionChanged(elem);
|
||||||
|
fHierarchyTreeViewer.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,8 +488,7 @@ public class THViewPart extends ViewPart {
|
||||||
if (fIgnoreSelectionChanges == 0) {
|
if (fIgnoreSelectionChanges == 0) {
|
||||||
THNode node= selectionToNode(event.getSelection());
|
THNode node= selectionToNode(event.getSelection());
|
||||||
fModel.onHierarchySelectionChanged(node);
|
fModel.onHierarchySelectionChanged(node);
|
||||||
fMethodViewer.refresh();
|
updateView();
|
||||||
updateDescription();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -636,10 +638,10 @@ public class THViewPart extends ViewPart {
|
||||||
fFieldFilterAction= new Action(Messages.THViewPart_HideFields_label, IAction.AS_CHECK_BOX) {
|
fFieldFilterAction= new Action(Messages.THViewPart_HideFields_label, IAction.AS_CHECK_BOX) {
|
||||||
public void run() {
|
public void run() {
|
||||||
if (isChecked()) {
|
if (isChecked()) {
|
||||||
fMethodViewer.addFilter(fFieldFilter);
|
fMemberViewer.addFilter(fFieldFilter);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fMethodViewer.removeFilter(fFieldFilter);
|
fMemberViewer.removeFilter(fFieldFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -649,10 +651,10 @@ public class THViewPart extends ViewPart {
|
||||||
fStaticFilterAction= new Action(Messages.THViewPart_HideStatic_label, IAction.AS_CHECK_BOX) {
|
fStaticFilterAction= new Action(Messages.THViewPart_HideStatic_label, IAction.AS_CHECK_BOX) {
|
||||||
public void run() {
|
public void run() {
|
||||||
if (isChecked()) {
|
if (isChecked()) {
|
||||||
fMethodViewer.addFilter(fStaticFilter);
|
fMemberViewer.addFilter(fStaticFilter);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fMethodViewer.removeFilter(fStaticFilter);
|
fMemberViewer.removeFilter(fStaticFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -662,10 +664,10 @@ public class THViewPart extends ViewPart {
|
||||||
fNonPublicFilterAction= new Action(Messages.THViewPart_HideNonPublic_label, IAction.AS_CHECK_BOX) {
|
fNonPublicFilterAction= new Action(Messages.THViewPart_HideNonPublic_label, IAction.AS_CHECK_BOX) {
|
||||||
public void run() {
|
public void run() {
|
||||||
if (isChecked()) {
|
if (isChecked()) {
|
||||||
fMethodViewer.addFilter(fNonPublicFilter);
|
fMemberViewer.addFilter(fNonPublicFilter);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fMethodViewer.removeFilter(fNonPublicFilter);
|
fMemberViewer.removeFilter(fNonPublicFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -743,12 +745,12 @@ public class THViewPart extends ViewPart {
|
||||||
mm.add(new Separator());
|
mm.add(new Separator());
|
||||||
mm.add(fShowFilesInLabelsAction);
|
mm.add(fShowFilesInLabelsAction);
|
||||||
|
|
||||||
// method toolbar
|
// member toolbar
|
||||||
fMethodToolbarManager.add(fShowInheritedMembersAction);
|
fMemberToolbarManager.add(fShowInheritedMembersAction);
|
||||||
fMethodToolbarManager.add(new Separator());
|
fMemberToolbarManager.add(new Separator());
|
||||||
fMethodToolbarManager.add(fFieldFilterAction);
|
fMemberToolbarManager.add(fFieldFilterAction);
|
||||||
fMethodToolbarManager.add(fStaticFilterAction);
|
fMemberToolbarManager.add(fStaticFilterAction);
|
||||||
fMethodToolbarManager.add(fNonPublicFilterAction);
|
fMemberToolbarManager.add(fNonPublicFilterAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onOpenElement(ISelection selection) {
|
protected void onOpenElement(ISelection selection) {
|
||||||
|
@ -817,14 +819,14 @@ public class THViewPart extends ViewPart {
|
||||||
Image image= null;
|
Image image= null;
|
||||||
THNode node= fModel.getSelectionInHierarchy();
|
THNode node= fModel.getSelectionInHierarchy();
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
elem= node.getRepresentedDeclaration();
|
elem= node.getElement();
|
||||||
if (elem != null) {
|
if (elem != null) {
|
||||||
label= CElementLabels.getElementLabel(elem, 0);
|
label= CElementLabels.getElementLabel(elem, 0);
|
||||||
image= fHierarchyLabelProvider.getImage(elem);
|
image= fHierarchyLabelProvider.getImage(elem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fMethodLabel.setText(label);
|
fMemberLabel.setText(label);
|
||||||
fMethodLabel.setImage(image);
|
fMemberLabel.setImage(image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setContentDescription(message);
|
setContentDescription(message);
|
||||||
|
@ -854,21 +856,33 @@ public class THViewPart extends ViewPart {
|
||||||
protected void onShowInheritedMembers(boolean show) {
|
protected void onShowInheritedMembers(boolean show) {
|
||||||
if (fModel.isShowInheritedMembers() != show) {
|
if (fModel.isShowInheritedMembers() != show) {
|
||||||
fModel.setShowInheritedMembers(show);
|
fModel.setShowInheritedMembers(show);
|
||||||
fMethodLabelProvider.setTextFlags(show ?
|
fMemberLabelProvider.setTextFlags(show ?
|
||||||
METHOD_LABEL_OPTIONS_QUALIFIED : METHOD_LABEL_OPTIONS_SIMPLE);
|
MEMBER_LABEL_OPTIONS_QUALIFIED : MEMBER_LABEL_OPTIONS_SIMPLE);
|
||||||
fMethodViewer.refresh();
|
updateViewers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateViewers() {
|
||||||
|
if (!fShowsMessage) {
|
||||||
|
fIgnoreSelectionChanges++;
|
||||||
|
try {
|
||||||
|
fHierarchyTreeViewer.refresh();
|
||||||
|
fMemberViewer.refresh();
|
||||||
|
setSelections();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
fIgnoreSelectionChanges--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updateView() {
|
private void updateView() {
|
||||||
if (!fShowsMessage) {
|
if (!fShowsMessage) {
|
||||||
fIgnoreSelectionChanges++;
|
fIgnoreSelectionChanges++;
|
||||||
try {
|
try {
|
||||||
fHierarchyTreeViewer.refresh();
|
updateViewers();
|
||||||
fMethodViewer.refresh();
|
|
||||||
updateDescription();
|
updateDescription();
|
||||||
updateActionEnablement();
|
updateActionEnablement();
|
||||||
setSelections();
|
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
fIgnoreSelectionChanges--;
|
fIgnoreSelectionChanges--;
|
||||||
|
@ -884,6 +898,10 @@ public class THViewPart extends ViewPart {
|
||||||
fHierarchyTreeViewer.setSelection(new StructuredSelection(node));
|
fHierarchyTreeViewer.setSelection(new StructuredSelection(node));
|
||||||
fHierarchyTreeViewer.expandToLevel(node, 1);
|
fHierarchyTreeViewer.expandToLevel(node, 1);
|
||||||
}
|
}
|
||||||
|
ICElement elem= fModel.getSelectedMember();
|
||||||
|
if (elem != null) {
|
||||||
|
fMemberViewer.setSelection(new StructuredSelection(elem));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
fIgnoreSelectionChanges--;
|
fIgnoreSelectionChanges--;
|
||||||
|
@ -947,8 +965,8 @@ public class THViewPart extends ViewPart {
|
||||||
return fHierarchyTreeViewer;
|
return fHierarchyTreeViewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TableViewer getMethodViewer() {
|
public TableViewer getMemberViewer() {
|
||||||
return fMethodViewer;
|
return fMemberViewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restoreOrientation(int orientation) {
|
private void restoreOrientation(int orientation) {
|
||||||
|
@ -998,10 +1016,10 @@ public class THViewPart extends ViewPart {
|
||||||
orientation= getBestOrientation();
|
orientation= getBestOrientation();
|
||||||
}
|
}
|
||||||
if (orientation == ORIENTATION_SINGLE) {
|
if (orientation == ORIENTATION_SINGLE) {
|
||||||
fMethodViewForm.setVisible(false);
|
fMemberViewForm.setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
if (fCurrentViewOrientation == ORIENTATION_SINGLE) {
|
if (fCurrentViewOrientation == ORIENTATION_SINGLE) {
|
||||||
fMethodViewForm.setVisible(true);
|
fMemberViewForm.setVisible(true);
|
||||||
}
|
}
|
||||||
boolean horizontal= orientation == ORIENTATION_HORIZONTAL;
|
boolean horizontal= orientation == ORIENTATION_HORIZONTAL;
|
||||||
fSplitter.setOrientation(horizontal ? SWT.HORIZONTAL : SWT.VERTICAL);
|
fSplitter.setOrientation(horizontal ? SWT.HORIZONTAL : SWT.VERTICAL);
|
||||||
|
|
|
@ -32,8 +32,10 @@ import org.eclipse.cdt.core.dom.ast.IEnumeration;
|
||||||
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
||||||
import org.eclipse.cdt.core.index.IIndex;
|
import org.eclipse.cdt.core.index.IIndex;
|
||||||
import org.eclipse.cdt.core.index.IIndexManager;
|
import org.eclipse.cdt.core.index.IIndexManager;
|
||||||
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.model.ICProject;
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
|
import org.eclipse.cdt.core.model.IFunctionDeclaration;
|
||||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||||
import org.eclipse.cdt.core.model.IWorkingCopy;
|
import org.eclipse.cdt.core.model.IWorkingCopy;
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
@ -218,4 +220,21 @@ public class TypeHierarchyUI {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String getLocalElementSignature(ICElement element) {
|
||||||
|
if (element != null) {
|
||||||
|
try {
|
||||||
|
switch (element.getElementType()) {
|
||||||
|
case ICElement.C_METHOD:
|
||||||
|
case ICElement.C_METHOD_DECLARATION:
|
||||||
|
return ((IFunctionDeclaration) element).getSignature();
|
||||||
|
case ICElement.C_FIELD:
|
||||||
|
return element.getElementName();
|
||||||
|
}
|
||||||
|
} catch (CModelException e) {
|
||||||
|
CUIPlugin.getDefault().log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2005, 2006 IBM Corporation and others.
|
* Copyright (c) 2005, 2007 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -444,12 +444,12 @@ public class CElementImageProvider {
|
||||||
if ((renderFlags & OVERLAY_WARNING) !=0) {
|
if ((renderFlags & OVERLAY_WARNING) !=0) {
|
||||||
flags |= CElementImageDescriptor.WARNING;
|
flags |= CElementImageDescriptor.WARNING;
|
||||||
}
|
}
|
||||||
if ((renderFlags & OVERLAY_OVERRIDE) !=0) {
|
// if ((renderFlags & OVERLAY_OVERRIDE) !=0) {
|
||||||
flags |= CElementImageDescriptor.OVERRIDES;
|
// flags |= CElementImageDescriptor.OVERRIDES;
|
||||||
}
|
// }
|
||||||
if ((renderFlags & OVERLAY_IMPLEMENTS) !=0) {
|
// if ((renderFlags & OVERLAY_IMPLEMENTS) !=0) {
|
||||||
flags |= CElementImageDescriptor.IMPLEMENTS;
|
// flags |= CElementImageDescriptor.IMPLEMENTS;
|
||||||
}
|
// }
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2006 IBM Corporation and others.
|
* Copyright (c) 2000, 2007 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -49,7 +49,9 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
/** Flag to render the static adornment */
|
/** Flag to render the static adornment */
|
||||||
public final static int STATIC= 0x008;
|
public final static int STATIC= 0x008;
|
||||||
|
|
||||||
/** Flag to render the runnable adornment */
|
/**
|
||||||
|
* @deprecated flag never had an effect
|
||||||
|
*/
|
||||||
public final static int RUNNABLE= 0x010;
|
public final static int RUNNABLE= 0x010;
|
||||||
|
|
||||||
/** Flag to render the waring adornment */
|
/** Flag to render the waring adornment */
|
||||||
|
@ -58,10 +60,14 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
/** Flag to render the error adornment */
|
/** Flag to render the error adornment */
|
||||||
public final static int ERROR= 0x040;
|
public final static int ERROR= 0x040;
|
||||||
|
|
||||||
/** Flag to render the 'override' adornment */
|
/**
|
||||||
|
* @deprecated flag never had an effect
|
||||||
|
*/
|
||||||
public final static int OVERRIDES= 0x080;
|
public final static int OVERRIDES= 0x080;
|
||||||
|
|
||||||
/** Flag to render the 'implements' adornment */
|
/**
|
||||||
|
* @deprecated flag never had an effect
|
||||||
|
*/
|
||||||
public final static int IMPLEMENTS= 0x100;
|
public final static int IMPLEMENTS= 0x100;
|
||||||
|
|
||||||
/** Flag to render the 'relates to' adornment (for trees, an arrow down) */
|
/** Flag to render the 'relates to' adornment (for trees, an arrow down) */
|
||||||
|
@ -79,6 +85,9 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
/** Flag to render the 'system include' adornment */
|
/** Flag to render the 'system include' adornment */
|
||||||
public final static int SYSTEM_INCLUDE= 0x2000;
|
public final static int SYSTEM_INCLUDE= 0x2000;
|
||||||
|
|
||||||
|
/** Flag to render the 'defines' adornment in the type hierarchy*/
|
||||||
|
public final static int DEFINES= 0x4000;
|
||||||
|
|
||||||
private ImageDescriptor fBaseImage;
|
private ImageDescriptor fBaseImage;
|
||||||
private int fFlags;
|
private int fFlags;
|
||||||
private Point fSize;
|
private Point fSize;
|
||||||
|
@ -103,8 +112,8 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the descriptors adornments. Valid values are: <code>ABSTRACT</code>, <code>FINAL</code>,
|
* Sets the descriptors adornments. Valid values are: <code>ABSTRACT</code>, <code>FINAL</code>,
|
||||||
* <code>SYNCHRONIZED</code>, </code>STATIC<code>, </code>RUNNABLE<code>, </code>WARNING<code>,
|
* </code>STATIC<code>, </code>WARNING<code>,
|
||||||
* </code>ERROR<code>, </code>OVERRIDDEN<code>, or any combination of those.
|
* </code>ERROR<code>, or any combination of those.
|
||||||
*
|
*
|
||||||
* @param adornments the image descritpors adornments
|
* @param adornments the image descritpors adornments
|
||||||
*/
|
*/
|
||||||
|
@ -199,6 +208,10 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
x-= data.width;
|
x-= data.width;
|
||||||
drawImage(data, x, 0);
|
drawImage(data, x, 0);
|
||||||
}
|
}
|
||||||
|
if ((fFlags & DEFINES) != 0) {
|
||||||
|
data= CPluginImages.DESC_OVR_DEFINES.getImageData();
|
||||||
|
drawImage(data, 0, 0);
|
||||||
|
}
|
||||||
if ((fFlags & TEMPLATE) != 0) {
|
if ((fFlags & TEMPLATE) != 0) {
|
||||||
data= CPluginImages.DESC_OVR_TEMPLATE.getImageData();
|
data= CPluginImages.DESC_OVR_TEMPLATE.getImageData();
|
||||||
x-= data.width;
|
x-= data.width;
|
||||||
|
@ -235,26 +248,16 @@ public class CElementImageDescriptor extends CompositeImageDescriptor {
|
||||||
x-= data.width;
|
x-= data.width;
|
||||||
drawImage(data, x, size.y-data.height);
|
drawImage(data, x, size.y-data.height);
|
||||||
}
|
}
|
||||||
/*if ((fFlags & SYNCHRONIZED) != 0) {
|
// if ((fFlags & OVERRIDES) != 0) {
|
||||||
data= CPluginImages.DESC_OVR_SYNCH.getImageData();
|
// data= CPluginImages.DESC_OVR_OVERRIDES.getImageData();
|
||||||
x-= data.width;
|
// x-= data.width;
|
||||||
drawImage(data, x, size.y - data.height);
|
// drawImage(data, x, size.y - data.height);
|
||||||
}
|
// }
|
||||||
if ((fFlags & RUNNABLE) != 0) {
|
// if ((fFlags & IMPLEMENTS) != 0) {
|
||||||
data= CPluginImages.DESC_OVR_RUN.getImageData();
|
// data= CPluginImages.DESC_OVR_IMPLEMENTS.getImageData();
|
||||||
x-= data.width;
|
// x-= data.width;
|
||||||
drawImage(data, x, size.y - data.height);
|
// drawImage(data, x, size.y - data.height);
|
||||||
}
|
// }
|
||||||
if ((fFlags & OVERRIDES) != 0) {
|
|
||||||
data= CPluginImages.DESC_OVR_OVERRIDES.getImageData();
|
|
||||||
x-= data.width;
|
|
||||||
drawImage(data, x, size.y - data.height);
|
|
||||||
}
|
|
||||||
if ((fFlags & IMPLEMENTS) != 0) {
|
|
||||||
data= CPluginImages.DESC_OVR_IMPLEMENTS.getImageData();
|
|
||||||
x-= data.width;
|
|
||||||
drawImage(data, x, size.y - data.height);
|
|
||||||
} */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawBottomLeft() {
|
private void drawBottomLeft() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue