⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.java

📁 myjxta是用jxta开发的一个p2p通讯软件 有聊天 文件共享 视频3大功能 界面采用swing
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  Copyright (c) 2001 Sun Microsystems, Inc.  All rights *  reserved. * *  Redistribution and use in source and binary forms, with or without *  modification, are permitted provided that the following conditions *  are met: * *  1. Redistributions of source code must retain the above copyright *  notice, this list of conditions and the following disclaimer. * *  2. Redistributions in binary form must reproduce the above copyright *  notice, this list of conditions and the following disclaimer in *  the documentation and/or other materials provided with the *  distribution. * *  3. The end-user documentation included with the redistribution, *  if any, must include the following acknowledgment: *  "This product includes software developed by the *  Sun Microsystems, Inc. for Project JXTA." *  Alternately, this acknowledgment may appear in the software itself, *  if and wherever such third-party acknowledgments normally appear. * *  4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" *  must not be used to endorse or promote products derived from this *  software without prior written permission. For written *  permission, please contact Project JXTA at http://www.jxta.org. * *  5. Products derived from this software may not be called "JXTA", *  nor may "JXTA" appear in their name, without prior written *  permission of Sun. * *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *  SUCH DAMAGE. *  ==================================================================== * *  This software consists of voluntary contributions made by many *  individuals on behalf of Project JXTA.  For more *  information on Project JXTA, please see *  <http://www.jxta.org/>. * *  This license is based on the BSD license adopted by the Apache Foundation. * *  $Id: Graph.java,v 1.8 2006/10/09 22:17:52 nano Exp $ */package net.jxta.myjxta.ui;import edu.berkeley.guir.prefuse.*;import edu.berkeley.guir.prefuse.action.RepaintAction;import edu.berkeley.guir.prefuse.action.animate.ColorAnimator;import edu.berkeley.guir.prefuse.action.animate.PolarLocationAnimator;import edu.berkeley.guir.prefuse.action.assignment.ColorFunction;import edu.berkeley.guir.prefuse.action.filter.FisheyeTreeFilter;import edu.berkeley.guir.prefuse.action.filter.TreeEdgeFilter;import edu.berkeley.guir.prefuse.action.filter.TreeFilter;import edu.berkeley.guir.prefuse.activity.ActionList;import edu.berkeley.guir.prefuse.activity.SlowInSlowOutPacer;import edu.berkeley.guir.prefuse.event.ControlAdapter;import edu.berkeley.guir.prefuse.event.FocusEvent;import edu.berkeley.guir.prefuse.event.FocusListener;import edu.berkeley.guir.prefuse.graph.*;import edu.berkeley.guir.prefuse.graph.event.GraphLoaderListener;import edu.berkeley.guir.prefuse.graph.external.GraphLoader;import edu.berkeley.guir.prefuse.render.DefaultEdgeRenderer;import edu.berkeley.guir.prefuse.render.DefaultRendererFactory;import edu.berkeley.guir.prefuse.render.ShapeRenderer;import edu.berkeley.guir.prefuse.render.TextImageItemRenderer;import edu.berkeley.guir.prefuse.util.ColorMap;import edu.berkeley.guir.prefusex.controls.*;import edu.berkeley.guir.prefusex.force.DragForce;import edu.berkeley.guir.prefusex.force.ForceSimulator;import edu.berkeley.guir.prefusex.force.NBodyForce;import edu.berkeley.guir.prefusex.layout.ForceDirectedLayout;import edu.berkeley.guir.prefusex.layout.RadialTreeLayout;import net.jxta.myjxta.MyJXTA;import net.jxta.myjxta.ui.graph.JxtaNodeLoader;import net.jxta.myjxta.ui.model.JxtaTreeModelListener;import net.jxta.myjxta.util.Resources;import net.jxta.myjxta.util.objectmodel.JxtaNode;import net.jxta.myjxta.util.objectmodel.MyJxtaObjectRepository;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.ResourceBundle;/** * * @version $Id: Graph.java,v 1.8 2006/10/09 22:17:52 nano Exp $ * * @author james todd [gonzo at jxta dot org] */public final class Graph        extends JDialog {        private static final int WIDTH = 350;    private static final int HEIGHT = WIDTH;    private static final int PAN = 175;    private static final ResourceBundle STRINGS = Resources.getStrings();        private MyJXTA myjxta = null;    private MyJXTAView view = null;    private ItemRegistry registry = null;    private JxtaNodeLoader loader = null;    private JxtaTreeModelListener listener = null;    private ActionList filter = null;    private ActionList forces = null;    private ActionList layout = null;    private ActionList update = null;    private ActionList animate = null;    private Tree t = null;    private final ForcesAndUpdateColorFunction fu_colorFunction;        public Graph(MyJXTA myjxta) {        // xxx: this will not work for non Swing apps        super((MyJXTAView)myjxta.getView());                this.myjxta = myjxta;        // xxx: won't work for non-swing apps        this.view = (MyJXTAView)this.myjxta.getView();                //Tree t = new DefaultTree();        t = new DefaultTree();                this.registry = new ItemRegistry(t);        this.loader = new JxtaNodeLoader(this.registry);                Node root = this.loader.loadNode(GraphLoader.LOAD_CHILDREN, null,                MyJxtaObjectRepository.getRoot());                t.setRoot((TreeNode)root);                this.loader.addGraphLoaderListener(new GraphLoaderListener() {            public void entityLoaded(GraphLoader loader, Entity e) {                process();            }                        public void entityUnloaded(GraphLoader loader, Entity e) {                process();            }                        private void process() {                //forces.cancel();                filter.runNow();                layout.runNow();                                //forces.runNow();            }        });                fu_colorFunction = new ForcesAndUpdateColorFunction();                                applyRenderers();                applyLayout();                applyAnimation();                applyUpdateAndFilters();                applyForces();                Display display = new Display();                display.setItemRegistry(this.registry);        display.setPreferredSize(new Dimension(WIDTH, HEIGHT));        display.pan(PAN, PAN);        display.addControlListener(new FocusControl(layout));        display.addControlListener(new NeighborHighlightControl(update));        display.addControlListener(new DragControl());        display.addControlListener(new ControlAdapter() {//            private boolean wasFixed = false;                        public void itemEntered(VisualItem vi, MouseEvent me) {                ((Display)me.getSource()).                        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));                                //wasFixed = vi.isFixed();                                //vi.setFixed(true);            }                        public void itemExited(VisualItem vi, MouseEvent me) {                ((Display)me.getSource()).setCursor(Cursor.getDefaultCursor());                                //vi.setFixed(wasFixed);            }                        public void itemReleased(VisualItem vi, MouseEvent me) {                //vi.setFixed(wasFixed);            }        });        display.addControlListener(new PanControl());        display.addControlListener(new ZoomControl());                this.registry.getDefaultFocusSet().addFocusListener(new FocusListener() {            public void focusChanged(FocusEvent e) {                NodeItem n = registry.getNodeItem((Node)e.getFirstRemoved());                                if (n != null) {                    //n.setFixed(false);                }                                filter.runNow();            }        });        this.registry.getDefaultFocusSet().set(root);                MyJxtaObjectRepository.getObjectRepository().addListener(this.listener =                new JxtaTreeModelListener() {            public void nodeAdded(JxtaNode n) {                loader.loadNode(GraphLoader.LOAD_PARENT, n);            }                        public void nodeRemoved(JxtaNode n) {                // xxx: implement            }                        public void nodeUpdated(JxtaNode n) {                // xxx: implement            }        });                /** detach from backing tree */        addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                e.getWindow().setVisible(false);                shutdownGraph();                super.windowClosing(e);            }            public void windowClosed(WindowEvent we) {                shutdownGraph();            }                    });                /** run layout on window resize */        addComponentListener(new ComponentAdapter() {            public void componentResized(ComponentEvent e) {                layout.runNow();            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -