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

📄 mapview.java

📁 思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        while (i.hasNext()) {            NodeView nodeView = (NodeView)i.next();            if ( nodeView == oldSelected ) {                break;             }        }        /* Remove all selections for the siblings in the connected component between old and new.*/        ListIterator i_backup = i;        while (i.hasNext()) {            NodeView nodeView = (NodeView)i.next();            if((nodeView.isLeft() == oldPositionLeft || nodeView.isLeft() == newPositionLeft)) {                if ( isSelected(nodeView) )                     deselect(nodeView);                else                    break;            }        }        /* other direction. */        i = i_backup;        if(i.hasPrevious()) {            i.previous(); /* this is old selected! */            while (i.hasPrevious()) {                NodeView nodeView = (NodeView)i.previous();                if(nodeView.isLeft() == oldPositionLeft || nodeView.isLeft() == newPositionLeft){                    if ( isSelected(nodeView) )                         deselect(nodeView);                    else                        break;                }            }        }        /* reset iterator */        i = newSelected.getSiblingViews().listIterator();        /* find starting point. */        i = newSelected.getSiblingViews().listIterator();        while (i.hasNext()) {            NodeView nodeView = (NodeView)i.next();            if ( nodeView == newSelected || nodeView == oldSelected ) {                if( ! isSelected(nodeView) )                    toggleSelected(nodeView);                break;             }        }        /* select all up to the end point.*/        while (i.hasNext()) {            NodeView nodeView = (NodeView)i.next();            if( (nodeView.isLeft() == oldPositionLeft || nodeView.isLeft() == newPositionLeft) && ! isSelected(nodeView) )                toggleSelected(nodeView);            if ( nodeView == newSelected || nodeView == oldSelected ) {                break;             }        }        // now, make oldSelected the last of the list in order to make this repeatable:        toggleSelected(oldSelected);        toggleSelected(oldSelected);        return true;    }    //    // get/set methods    //    public MindMap getModel() {        return model;    }    // e.g. for dragging cursor (PN)    public void setMoveCursor(boolean isHand) {        int requiredCursor = (isHand && !disableMoveCursor)             ? Cursor.MOVE_CURSOR : Cursor.DEFAULT_CURSOR;        if (getCursor().getType() != requiredCursor) {            setCursor(new Cursor(requiredCursor));        }    }    NodeMouseMotionListener getNodeMouseMotionListener() {        return getController().getNodeMouseMotionListener();    }    NodeMotionListener getNodeMotionListener() {        return getController().getNodeMotionListener();    }    NodeKeyListener getNodeKeyListener() {        return getController().getNodeKeyListener();    }    DragGestureListener getNodeDragListener() {        return getController().getNodeDragListener();    }    DropTargetListener getNodeDropListener() {        return getController().getNodeDropListener();    }    public NodeView getSelected() {        if(selected.size() > 0)            return (NodeView)selected.get(0);        else            return null;    }    private NodeView getSelected(int i) {        return (NodeView)selected.get(i);    }    public LinkedList getSelecteds() {        // return an ArrayList of NodeViews.        LinkedList result = new LinkedList();        for (int i=0; i<selected.size();i++) {            result.add( getSelected(i) );        }        return result;    }    public ArrayList /*of NodeViews*/ getSelectedsSortedByY() {        TreeMap sortedNodes = new TreeMap();        for (int i=0; i<selected.size();i++) {            sortedNodes.put(new Integer(getSelected(i).getY()), getSelected(i)); }        ArrayList selectedNodes = new ArrayList();        for(Iterator it = sortedNodes.entrySet().iterator();it.hasNext();) {            selectedNodes.add( ((Map.Entry)it.next()).getValue() ); }        return selectedNodes;    }        /**     * @return an ArrayList of MindMapNode objects.     */    public ArrayList /*of MindMapNodes*/ getSelectedNodesSortedByY() {        TreeMap sortedNodes = new TreeMap();        for (int i=0; i<selected.size();i++) {            sortedNodes.put(new Integer(getSelected(i).getY()), getSelected(i).getModel()); }        ArrayList selectedNodes = new ArrayList();        for(Iterator it = sortedNodes.entrySet().iterator();it.hasNext();) {            selectedNodes.add( ((Map.Entry)it.next()).getValue() ); }        return selectedNodes;    }    public boolean isSelected(NodeView n) {        if (isPrinting) return false;        return selected.contains(n);    }    public float getZoom() {        return zoom; }    public int getZoomed(int number) {        return (int)(number*zoom); }    public void setZoom(float zoom) {        this.zoom = zoom;        getRoot().updateAll();        getMindMapLayout().updateTreeHeightsAndRelativeYOfWholeMap();        getMindMapLayout().layout(true);        repaint();    }    /*****************************************************************     **             P A I N T I N G                                 **     *****************************************************************/    public void paintChildren(Graphics graphics) {        paintClouds(rootView, graphics);        HashMap labels = new HashMap();        ArrowLinkViews = new Vector();        collectLabels(rootView, labels);        paintLinks(rootView, (Graphics2D)graphics, labels, null);        super.paintChildren(graphics);        paintEdges(rootView, (Graphics2D)graphics);            }    /** @param iterativeLevel describes the n-th nested cloud that is to be painted.*/    protected void paintClouds(NodeView source, Graphics graphics){        for(ListIterator e = source.getChildrenViews().listIterator(); e.hasNext(); ) {            NodeView target = (NodeView)e.next();            if(target.getModel().getCloud() != null) {                CloudView cloud = new CloudView(target.getModel().getCloud(), target);                cloud.paint(graphics);            }                			paintClouds(target,graphics);        }    }    /** collect all existing labels in the current map.*/    protected void collectLabels(NodeView source, HashMap labels) {        // check for existing registry:        if(getModel().getLinkRegistry()==null)            return;        // apply own label:        String label = getModel().getLinkRegistry().getLabel(source.getModel());        if(label != null)             labels.put(label, source);        for(ListIterator e = source.getChildrenViews().listIterator(); e.hasNext(); ) {            NodeView target = (NodeView)e.next();            collectLabels(target, labels);        }    }    protected void paintLinks(NodeView source, Graphics2D graphics, HashMap labels, HashSet /* MindMapLink s*/ LinkAlreadyVisited) {        // check for existing registry:        if(getModel().getLinkRegistry()==null)            return;        if(LinkAlreadyVisited == null)            LinkAlreadyVisited = new HashSet();        // references first        // paint own labels:        Vector vec = getModel().getLinkRegistry().getAllLinks(source.getModel());        for(int i = 0; i< vec.size(); ++i) {            MindMapLink ref = (MindMapLink) vec.get(i);            if(LinkAlreadyVisited.add(ref)) {                // determine type of link                if(ref  instanceof MindMapArrowLink) {                    ArrowLinkView arrowLink = new ArrowLinkView((MindMapArrowLink) ref, ref.getSource().getViewer(), ref.getTarget().getViewer());                    arrowLink.paint(graphics);                    ArrowLinkViews.add(arrowLink);                    // resize map?                    // adjust container size                    Rectangle rec = arrowLink.getBounds();                    // the following does not work correctly. fc, 23.10.2003://                     if (rec.x < 0) {//                         getMindMapLayout().resizeMap(rec.x);//                     } else if (rec.x+rec.width > getSize().width) {//                         getMindMapLayout().resizeMap(rec.x+rec.width);//                     }                }            }        }        for(ListIterator e = source.getChildrenViews().listIterator(); e.hasNext(); ) {            NodeView target = (NodeView)e.next();            paintLinks(target, graphics, labels, LinkAlreadyVisited);        }    }    public MindMapArrowLink detectCollision(Point p) {        if(ArrowLinkViews == null)            return null;        for(int i = 0; i < ArrowLinkViews.size(); ++i) {            ArrowLinkView arrowView = (ArrowLinkView) ArrowLinkViews.get(i);            if(arrowView.detectCollision(p))                return arrowView.getModel();        }        return null;    }    	/**	  * Call preparePrinting() before printing 	  * and  endPrinting() after printing	  * to minimize calculation efforts	  */	public void preparePrinting() {		_preparePrinting();		isPreparedForPrinting = true;	}	 	private void _preparePrinting() {		if (isPreparedForPrinting == false){			isPrinting = true;			/* repaint for printing:*/			setZoom(getZoom());        			background = getBackground();			boundingRectangle = getInnerBounds(rootView);		}	}	 /**	  * Call preparePrinting() before printing 	  * and  endPrinting() after printing	  * to minimize calculation efforts	  */	public void endPrinting() {		isPreparedForPrinting = false;		_endPrinting();	}		 private void _endPrinting() {		if (isPreparedForPrinting == false){			setBackground(background);			isPrinting = false;			/* repaint for end printing:*/			setZoom(getZoom());			fitToPage = Tools.safeEquals(controller.getProperty("fit_to_page"),"true");		}	 }    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {        // TODO:        // ask user for :        // - center in page (in page format ?)        // - print zoom or maximize (in page format ?)        // - print selection only        // remember those parameters from one session to another        //    (as orientation & margin from pf)        // User parameters        double userZoomFactor = 1;        try {            userZoomFactor = Double.parseDouble(controller.getProperty("user_zoom")); }        catch (Exception e) {}

⌨️ 快捷键说明

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