package jdepend.client.report.way.mapui.layout; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; import jdepend.framework.util.BundleUtil; import jdepend.client.report.way.mapui.GraphJDepend; import jdepend.client.report.way.mapui.layout.specifiedposition.SpecifiedPositionMgr; import prefuse.action.Action; import prefuse.action.ActionList; import prefuse.action.layout.SpecifiedLayout; import prefuse.action.layout.graph.NodeLinkTreeLayout; import prefuse.action.layout.graph.RadialTreeLayout; public class LayoutMgr { private LayoutInfo currentLayout; private List<LayoutInfo> layouts; private GraphJDepend display; public LayoutMgr(GraphJDepend display) { this.display = display; layouts = new ArrayList<LayoutInfo>(); layouts.add(new LayoutInfo(BundleUtil.getString(BundleUtil.Command_RadialTreeLayout), new RadialTreeLayout( GraphJDepend.tree))); layouts.add(new LayoutInfo(BundleUtil.getString(BundleUtil.Command_NodeLinkTreeLayout), new NodeLinkTreeLayout( GraphJDepend.tree))); if (display.getMapData().isHaveSpecifiedPosition()) { LayoutInfo specifiedLayout = new LayoutInfo(BundleUtil.getString(BundleUtil.Command_SpecifiedLayout), new SpecifiedLayout(GraphJDepend.tree, "xField", "yField")); currentLayout = specifiedLayout; layouts.add(specifiedLayout); } else { currentLayout = layouts.get(0); } } public void reset() { this.deleteSpecifiedPosition(); this.setCurrentLayout(layouts.get(0)); } public LayoutInfo getCurrentLayout() { return currentLayout; } public void setCurrentLayout(LayoutInfo currentLayout) { // 切换布局管理器 currentLayout.getLayout().setLayoutBounds(new Rectangle(this.display.getWidth(), this.display.getHeight())); Action treeLayout = this.display.getVisualization().getAction("treeLayout"); this.display.getVisualization().putAction("treeLayout", currentLayout.getLayout()); ActionList filter = (ActionList) this.display.getVisualization().getAction("filter"); filter.remove(treeLayout); filter.add(currentLayout.getLayout()); this.currentLayout = currentLayout; this.deleteSpecifiedPosition(); } public List<LayoutInfo> getLayouts() { return layouts; } private void deleteSpecifiedPosition(){ String group = this.display.getMapData().getGroup(); String command = this.display.getMapData().getCommand(); SpecifiedPositionMgr.getInstance().deleteTheCommandSpecifiedPosition(group, command); } }