package jdepend.client.report.way.mapui; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.UUID; import prefuse.visual.VisualItem; class HideVisualItemMgr { private GraphJDepend display; private Map<String, HashSet<VisualItem>> hideItems = new LinkedHashMap<String, HashSet<VisualItem>>(); private Map<String, HashSet<VisualItem>> unHideItems = new LinkedHashMap<String, HashSet<VisualItem>>(); HideVisualItemMgr(GraphJDepend display) { super(); this.display = display; } void addStepHideItems(HashSet<VisualItem> currentHideItems) { // 记录本次隐藏的显示对象 String operationId = UUID.randomUUID().toString(); hideItems.put(operationId, currentHideItems); } HashSet<VisualItem> getHideItems() { HashSet<VisualItem> hItems = new HashSet<VisualItem>(); for (String operId : hideItems.keySet()) { hItems.addAll(hideItems.get(operId)); } return hItems; } void reset() { hideItems = new LinkedHashMap<String, HashSet<VisualItem>>(); unHideItems = new LinkedHashMap<String, HashSet<VisualItem>>(); } void unStepHide() { if (hideItems.size() > 0) { String lastOperationId = null; for (String operationId : hideItems.keySet()) { lastOperationId = operationId; } unHideItems.put(lastOperationId, hideItems.get(lastOperationId)); hideItems.remove(lastOperationId); } } void nextStepHide() { if (unHideItems.size() > 0) { String lastOperationId = null; for (String operationId : unHideItems.keySet()) { lastOperationId = operationId; } hideItems.put(lastOperationId, unHideItems.get(lastOperationId)); unHideItems.remove(lastOperationId); } } void repaint() { // 计算所有被隐藏的显示对象 HashSet<VisualItem> hItems = getHideItems(); // 遍历所有显示对象,隐藏记录的hideItems Iterator iter = display.getVisualization().items(); while (iter.hasNext()) { VisualItem i = (VisualItem) iter.next(); if (hItems.contains(i)) { i.setVisible(false); } else { i.setVisible(true); } } display.getVisualization().repaint(); } }