📄 graph.java
字号:
}); setTitle(STRINGS.getString("title.graph")); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setLocationRelativeTo(this.view); // xxx: jre 1.5 //setAlwaysOnTop(false); getContentPane().add(display); pack(); setVisible(true); while (display.getGraphics() == null) { } this.filter.runNow(); this.layout.runNow(); //this.forces.runNow(); } private void shutdownGraph() { if (listener!=null){ MyJxtaObjectRepository.getObjectRepository().removeListener(listener); listener=null; } } private void applyLayout() { layout = new ActionList(registry); layout.add(new TreeFilter(false, true, true)); layout.add(new RadialTreeLayout()); layout.add(new LayoutColorFunction()); } private void applyAnimation() { animate = new ActionList(registry,1500,20); animate.setPacingFunction(new SlowInSlowOutPacer()); animate.add(new PolarLocationAnimator()); animate.add(new ColorAnimator()); animate.add(new RepaintAction()); animate.alwaysRunAfter(layout); } private void applyUpdateAndFilters() { update = new ActionList(registry); update.add(fu_colorFunction); update.add(new RepaintAction()); filter = new ActionList(registry); filter.add(new FisheyeTreeFilter(-5)); filter.add(new TreeEdgeFilter()); } private void applyForces() { ForceSimulator fs = new ForceSimulator(); fs = new ForceSimulator(); fs.addForce(new NBodyForce(-0.6f, 15f, 3f)); fs.addForce(new DragForce()); forces = new ActionList(registry, 1000); forces.add(new ForceDirectedLayout(fs, true)); forces.add(fu_colorFunction); forces.add(new RepaintAction()); forces.alwaysRunAfter(animate); } /** Setup Node and Edge Renderers for items in the registry. Images are * taken from resouces. The node items use the same images as jxtatreetable */ private void applyRenderers() { TextImageItemRenderer nr = new TextImageItemRenderer() { final BasicStroke m_stroke = new BasicStroke(5); public BasicStroke getStroke(VisualItem item) { return m_stroke; } // }; nr.setHorizontalAlignment(TextImageItemRenderer.ALIGNMENT_LEFT); nr.setVerticalAlignment(TextImageItemRenderer.ALIGNMENT_CENTER); nr.setHorizontalPadding(3); nr.setVerticalPadding(0); nr.setMaxImageDimensions(50,50); nr.setRoundedCorner(8, 8); nr.setRenderType(ShapeRenderer.RENDER_TYPE_FILL); /** associates attribute id and item label */ nr.setTextAttributeName(JxtaNodeLoader.LABEL); /** associates attribute id and item image */ nr.setImageAttributeName(JxtaNodeLoader.IMAGE); /** add images into prufuse resources */ Resources res = Resources.getInstance(); nr.getImageFactory().addImage("TreeTable.PeerGroup", res.getIconResource("TreeTable.PeerGroupJoined").getImage()); nr.getImageFactory().addImage("TreeTable.PeerPresent", res.getIconResource("TreeTable.PeerPresent").getImage()); nr.getImageFactory().addImage("TreeTable.Share", res.getIconResource("TreeTable.Share").getImage()); DefaultEdgeRenderer er = new DefaultEdgeRenderer(); /**push the renderers into registry */ registry.setRendererFactory(new DefaultRendererFactory( nr, er, null)); } public final class RadialColorFunction extends ColorFunction { private final Color graphEdgeColor = Color.LIGHT_GRAY; private final Color highlightColor = new Color(50,50,255); private final Color focusColor = new Color(255,50,50); private final ColorMap colorMap; public RadialColorFunction(int thresh) { colorMap = new ColorMap( ColorMap.getInterpolatedMap(thresh+1, Color.RED, Color.BLACK), 0, thresh); } // public Paint getFillColor(VisualItem item) { if ( item instanceof NodeItem ) { return Color.WHITE; } else if ( item instanceof AggregateItem ) { return Color.LIGHT_GRAY; } else if ( item instanceof EdgeItem ) { return getColor(item); } else { return Color.BLACK; } } // public Paint getColor(VisualItem item) { if ( item.isFocus() ) { return focusColor; } else if ( item.isHighlighted() ) { return highlightColor; } else if (item instanceof NodeItem) { int d = ((NodeItem)item).getDepth(); return colorMap.getColor(d); } else if (item instanceof EdgeItem) { EdgeItem e = (EdgeItem) item; if ( e.isTreeEdge() ) { int d, d1, d2; d1 = ((NodeItem)e.getFirstNode()).getDepth(); d2 = ((NodeItem)e.getSecondNode()).getDepth(); d = Math.max(d1, d2); return colorMap.getColor(d); } else { return graphEdgeColor; } } else { return Color.BLACK; } } // } // end of inner class RadialColorFunction public final class ForcesAndUpdateColorFunction extends ColorFunction { private final Color pastelRed = new Color(221,238,240); private final Color pastelOrange = new Color(242, 215, 121);// private Color lightGray = new Color(220, 220, 255); public Paint getColor(VisualItem vi) { Paint p = null; if (vi instanceof EdgeItem) { if (vi.isHighlighted()) { p = pastelOrange; } else { p = Color.LIGHT_GRAY; } } else { p = Color.BLACK; } return p; } public Paint getFillColor(VisualItem vi) { Paint p = null; if (vi.isHighlighted()) { p = pastelOrange; } else if (vi instanceof NodeItem) { p = pastelRed; } else { p = Color.BLACK; } return p; } } public final class LayoutColorFunction extends ColorFunction {// private Color pastelRed = Color.RED;; //new Color(255, 125, 125); private final Color pastelOrange = Color.ORANGE;// new Color(255, 200, 125);// private Color lightGray = Color.BLUE; //new Color(220, 220, 255); public Paint getColor(VisualItem vi) { Paint p = null; if (vi instanceof EdgeItem) { if (vi.isHighlighted()) { p = pastelOrange; } else { p = Color.LIGHT_GRAY; } } else { p = Color.BLACK; } return p; } public Paint getFillColor(VisualItem vi) { Paint p = null; if (vi.isHighlighted()) { p = pastelOrange; } else if (vi instanceof NodeItem) { p = Color.WHITE; } else { p = Color.BLACK; } return p; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -