Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 4 package org.terracotta.dso; 5 6 7 import org.eclipse.jdt.core.ElementChangedEvent; 8 import org.eclipse.jdt.core.ICompilationUnit; 9 import org.eclipse.jdt.core.IElementChangedListener; 10 import org.eclipse.jdt.core.IJavaElement; 11 import org.eclipse.jdt.core.IJavaElementDelta; 12 13 22 23 public class ElementChangedListener implements IElementChangedListener { 24 private static final boolean 25 m_debug = Boolean.getBoolean("ElementChangedListener.debug"); 26 27 public void elementChanged(ElementChangedEvent ece) { 28 TcPlugin plugin = TcPlugin.getDefault(); 29 IJavaElementDelta delta = ece.getDelta(); 30 int kind = delta.getKind(); 31 int flags = delta.getFlags(); 32 33 if(m_debug) { 34 dump(delta); 35 } 36 37 switch(kind) { 38 case IJavaElementDelta.CHANGED: 39 case IJavaElementDelta.ADDED: 40 { 41 if((flags & IJavaElementDelta.F_CONTENT) != 0 || 42 (flags & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0 || 43 ((flags & IJavaElementDelta.F_CHILDREN) != 0 && 44 (flags & IJavaElementDelta.F_FINE_GRAINED) != 0)) 45 { 46 IJavaElement elem = delta.getElement(); 47 48 if(plugin.hasTerracottaNature(elem)) { 49 if(elem instanceof ICompilationUnit) { 50 TcPlugin.getDefault().inspect((ICompilationUnit)elem); 51 } 52 } 53 } 54 } 55 } 56 } 57 58 private static void dump(IJavaElementDelta delta) { 59 int kind = delta.getKind(); 60 int flags = delta.getFlags(); 61 StringBuffer sb = new StringBuffer (); 62 63 sb.append(delta); 64 65 switch(kind) { 66 case IJavaElementDelta.ADDED: 67 sb.append(" ADDED"); 68 IJavaElement movedFrom = delta.getMovedFromElement(); 69 if(movedFrom != null) { 70 sb.append("moved_from: " + movedFrom); 71 } 72 break; 73 case IJavaElementDelta.REMOVED: 74 sb.append(" REMOVED"); 75 IJavaElement movedTo = delta.getMovedToElement(); 76 if(movedTo != null) { 77 sb.append("moved_to: " + movedTo); 78 } 79 break; 80 case IJavaElementDelta.CHANGED: 81 sb.append(" CHANGED"); 82 break; 83 } 84 85 if((flags & IJavaElementDelta.F_CONTENT) != 0) { 86 sb.append(" F_CONTENT"); 87 } 88 if((flags & IJavaElementDelta.F_MODIFIERS) != 0) { 89 sb.append(" F_MODIFIERS"); 90 } 91 if((flags & IJavaElementDelta.F_CHILDREN) != 0) { 92 sb.append(" F_CHILDREN"); 93 94 IJavaElementDelta[] children = delta.getAffectedChildren(); 95 if(children != null && children.length > 0) { 96 sb.append("\n"); 97 if(children.length == 2) { 98 if(children[0].getKind() == IJavaElementDelta.ADDED && 99 children[1].getKind() == IJavaElementDelta.REMOVED) 100 { 101 IJavaElement fromElem = children[1].getElement(); 102 IJavaElement toElem = children[0].getElement(); 103 104 if(fromElem.getElementType() == toElem.getElementType()) { 105 sb.append(fromElem.getElementName() + " moved to " + toElem.getElementName()); 106 } 107 } 108 } 109 for(int i = 0; i < children.length; i++) { 110 dump(children[i]); 111 } 112 } 113 } 114 if((flags & IJavaElementDelta.F_MOVED_FROM) == IJavaElementDelta.F_MOVED_FROM) { 115 sb.append(" F_MOVED_FROM"); 116 } 117 if((flags & IJavaElementDelta.F_MOVED_TO) == IJavaElementDelta.F_MOVED_TO) { 118 sb.append(" F_MOVED_TO"); 119 } 120 if((flags & IJavaElementDelta.F_ADDED_TO_CLASSPATH) != 0) { 121 sb.append(" F_ADDED_TO_CLASSPATH"); 122 } 123 if((flags & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) != 0) { 124 sb.append(" F_REMOVED_FROM_CLASSPATH"); 125 } 126 if((flags & IJavaElementDelta.F_REORDER) != 0) { 127 sb.append(" F_REORDER"); 128 } 129 if((flags & IJavaElementDelta.F_OPENED) != 0) { 130 sb.append(" F_OPENED"); 131 } 132 if((flags & IJavaElementDelta.F_CLOSED) != 0) { 133 sb.append(" F_CLOSED"); 134 } 135 if((flags & IJavaElementDelta.F_SUPER_TYPES) != 0) { 136 sb.append(" F_SUPER_TYPES"); 137 } 138 if((flags & IJavaElementDelta.F_SOURCEATTACHED) != 0) { 139 sb.append(" F_SOURCEATTACHED"); 140 } 141 if((flags & IJavaElementDelta.F_SOURCEDETACHED) != 0) { 142 sb.append(" F_SOURCEDETACHED"); 143 } 144 if((flags & IJavaElementDelta.F_FINE_GRAINED) != 0) { 145 sb.append(" F_FINE_GRAINED"); 146 } 147 if((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0) { 148 sb.append(" F_ARCHIVE_CONTENT_CHANGED"); 149 } 150 if((flags & IJavaElementDelta.F_PRIMARY_WORKING_COPY) != 0) { 151 sb.append(" F_PRIMARY_WORKING_COPY"); 152 } 153 if((flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) { 154 sb.append(" F_CLASSPATH_CHANGED"); 155 } 156 if((flags & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { 157 sb.append(" F_PRIMARY_RESOURCE"); 158 } 159 160 System.out.println(sb.toString()); 161 } 162 } 163
| Popular Tags
|