package jdepend.client.report.way.mapui; import java.awt.event.MouseEvent; import java.util.Iterator; import jdepend.model.Relation; import prefuse.controls.NeighborHighlightControl; import prefuse.visual.EdgeItem; import prefuse.visual.NodeItem; import prefuse.visual.VisualItem; public class JDependHighlightControl extends NeighborHighlightControl { @Override protected void setNeighborHighlight(NodeItem n, boolean state) { Iterator iter = n.edges(); while (iter.hasNext()) { EdgeItem eitem = (EdgeItem) iter.next(); NodeItem nitem = eitem.getAdjacentItem(n); if (eitem.isVisible() || this.isHighlightWithInvisibleEdge()) { // 相互依赖 String attentionType = eitem.getTable().getString(eitem.getRow(), "attentionType"); if (attentionType.equals(Relation.MutualDependAttentionType)) { eitem.getTable().setBoolean(eitem.getRow(), "mutualColor", state); if (nitem.isVisible()) { nitem.getTable().setBoolean(nitem.getRow(), "mutualColor", state); } // 传出依赖 } else if (eitem.getSourceItem().equals(n)) { eitem.getTable().setBoolean(eitem.getRow(), "CeColor", state); if (nitem.isVisible()) { nitem.getTable().setBoolean(nitem.getRow(), "CeColor", state); } // 传入依赖 } else { eitem.getTable().setBoolean(eitem.getRow(), "CaColor", state); if (nitem.isVisible()) { nitem.getTable().setBoolean(nitem.getRow(), "CaColor", state); } } } } } protected void setEdgeHighlight(EdgeItem e, boolean state) { NodeItem sourceItem = e.getSourceItem(); NodeItem targetItem = e.getTargetItem(); if (e.isVisible()) { e.setHighlighted(state); } if (sourceItem.isVisible()) { sourceItem.setHighlighted(state); } if (targetItem.isVisible()) { targetItem.setHighlighted(state); } } /** * @see prefuse.controls.Control#itemEntered(prefuse.visual.VisualItem, * java.awt.event.MouseEvent) */ public void itemEntered(VisualItem item, MouseEvent e) { if (item instanceof NodeItem) { setNeighborHighlight((NodeItem) item, true); } else if (item instanceof EdgeItem) { setEdgeHighlight((EdgeItem) item, true); } } /** * @see prefuse.controls.Control#itemExited(prefuse.visual.VisualItem, * java.awt.event.MouseEvent) */ public void itemExited(VisualItem item, MouseEvent e) { if (item instanceof NodeItem) { setNeighborHighlight((NodeItem) item, false); } else if (item instanceof EdgeItem) { setEdgeHighlight((EdgeItem) item, false); } } }