package com.intellij.lang.javascript.uml;
import com.intellij.diagram.DiagramEdgeCreationPolicy;
import com.intellij.diagram.DiagramNode;
import com.intellij.lang.javascript.psi.ecmal4.JSAttributeList;
import com.intellij.lang.javascript.psi.ecmal4.JSClass;
import com.intellij.lang.javascript.psi.util.JSProjectUtil;
import org.jetbrains.annotations.NotNull;
public class FlashUmlEdgeCreationPolicy extends DiagramEdgeCreationPolicy<Object> {
public boolean acceptSource(@NotNull final DiagramNode<Object> source) {
if (!(source.getIdentifyingElement() instanceof JSClass)) return false;
final JSClass clazz = (JSClass)source.getIdentifyingElement();
JSAttributeList attributeList = clazz.getAttributeList();
if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.FINAL)) return false;
if (JSProjectUtil.isInLibrary(clazz)) return false;
return true;
}
public boolean acceptTarget(@NotNull final DiagramNode<Object> target) {
if (!(target.getIdentifyingElement() instanceof JSClass)) return false;
final JSClass clazz = (JSClass)target.getIdentifyingElement();
JSAttributeList attributeList = clazz.getAttributeList();
if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.FINAL)) return false;
return true;
}
}