📄 mapview.java
字号:
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 + -