1 11 package org.eclipse.jdt.internal.ui.refactoring; 12 13 import java.util.Arrays ; 14 import java.util.Comparator ; 15 import java.util.HashSet ; 16 import java.util.Set ; 17 18 import org.eclipse.core.runtime.Assert; 19 20 import org.eclipse.jdt.core.dom.ITypeBinding; 22 23 import org.eclipse.jface.viewers.ITreeContentProvider; 24 import org.eclipse.jface.viewers.Viewer; 25 26 import org.eclipse.jdt.internal.corext.refactoring.structure.ChangeTypeRefactoring; 27 28 class ChangeTypeContentProvider implements ITreeContentProvider { 29 30 private ChangeTypeRefactoring fGeneralizeType; 31 32 ChangeTypeContentProvider(ChangeTypeRefactoring gt){ 33 fGeneralizeType= gt; 34 } 35 36 public Object [] getChildren(Object element) { 37 if (element instanceof RootType){ 38 return ((RootType)element).getChildren(); 39 } 40 Object [] superTypes = getDirectSuperTypes((ITypeBinding)element).toArray(); 41 Arrays.sort(superTypes, new Comparator (){ 42 public int compare(Object o1, Object o2) { 43 String name1 = ((ITypeBinding)o1).getQualifiedName(); 44 String name2 = ((ITypeBinding)o2).getQualifiedName(); 45 return name1.compareTo(name2); 46 } 47 }); 48 return superTypes; 49 } 50 51 56 public Set getDirectSuperTypes(ITypeBinding type){ 57 Set result= new HashSet (); 58 if (type.getSuperclass() != null){ 59 result.add(type.getSuperclass()); 60 } 61 ITypeBinding[] interfaces= type.getInterfaces(); 62 for (int i=0; i < interfaces.length; i++){ 63 result.add(interfaces[i]); 64 } 65 if (fGeneralizeType.getOriginalType().isInterface() && type != fGeneralizeType.getObject()){ 66 result.add(fGeneralizeType.getObject()); 67 } 68 return result; 69 } 70 71 public Object [] getElements(Object element) { 72 Assert.isTrue(element instanceof RootType); 73 return ((RootType)element).getChildren(); 74 } 75 76 public boolean hasChildren(Object element) { 77 return getChildren(element).length > 0; 78 } 79 80 public Object getParent(Object element) { 81 return null; 82 } 83 84 public void dispose() { 85 } 86 87 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { 88 } 89 90 95 static class RootType { 96 RootType(ITypeBinding root){ 97 fRoot = root; 98 } 99 public ITypeBinding[] getChildren(){ 100 return new ITypeBinding[]{ fRoot }; 101 } 102 private ITypeBinding fRoot; 103 } 104 } 105 | Popular Tags |