Package bran.japidplugin

Source Code of bran.japidplugin.JavaElementChangeListner

package bran.japidplugin;

import org.eclipse.jdt.core.ElementChangedEvent;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IElementChangedListener;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaElementDelta;

public class JavaElementChangeListner implements IElementChangedListener {

  @Override
  public void elementChanged(ElementChangedEvent event) {
    boolean res = hasTypeAddedOrRemoved(event.getDelta());
   
  }

  private boolean hasTypeAddedOrRemoved(IJavaElementDelta delta) {
    IJavaElement elem = delta.getElement();
    int kind = delta.getKind();
//    boolean changed = false;
//    boolean added = false;
//    boolean removed = false;
//    if (kind == IJavaElementDelta.CHANGED)
//      changed = true;
//    else if (kind == IJavaElementDelta.ADDED)
//      added = true;
//    else if (kind == IJavaElementDelta.REMOVED)
//      removed = true;
   
   
    boolean isAddedOrRemoved = (kind != IJavaElementDelta.CHANGED);
   
    switch(elem.getElementType()) {
    case IJavaElement.JAVA_MODEL:
    case IJavaElement.JAVA_PROJECT:
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
    case IJavaElement.PACKAGE_FRAGMENT:
        if (isAddedOrRemoved)
          return true;
        return processChildrenDelta(delta.getAffectedChildren());
    case IJavaElement.COMPILATION_UNIT:
      ICompilationUnit cu = (ICompilationUnit) elem;
      if (cu.getPrimary().equals(cu)) {
        System.out.println("code change:" + cu.getElementName());
        if (isAddedOrRemoved || isPossibleStructruralChange(delta.getFlags())) {
          return true;
        }
      }
      return processChildrenDelta(delta.getAffectedChildren());
    case IJavaElement.TYPE:
      if (isAddedOrRemoved)
        return true;
      return processChildrenDelta(delta.getAffectedChildren());
      default:
        return false;
    }
  }

  private boolean isPossibleStructruralChange(int flags) {
    return (flags & IJavaElementDelta.F_CONTENT!= 0 && (flags & IJavaElementDelta.F_FINE_GRAINED) == 0;
  }

  private boolean hasSet(int fContent) {
    // TODO Auto-generated method stub
    return false;
  }

  private boolean processChildrenDelta(IJavaElementDelta[] children) {
    for(int i = 0; i < children.length; i++) {
      if (hasTypeAddedOrRemoved(children[i]))
        return true;
    }
    return false;
  }
}
TOP

Related Classes of bran.japidplugin.JavaElementChangeListner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.