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

📄 mapview.java

📁 思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        // %%% and therefore is the scrollRectToVisible called twice ? (PN)        //     I don't think so and therefore I'll comment one call out... (PN)        if (node != null) {    		JViewport mapViewport = (JViewport)getParent();          int viewPortScrollMode = mapViewport.getScrollMode();           mapViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE );            scrollRectToVisible( new Rectangle(x - HORIZ_SPACE, node.getLocation().y - VERT_SPACE,                                               width + HORIZ_SPACE2, node.getSize().height + VERT_SPACE2) );            mapViewport.setScrollMode(viewPortScrollMode);            // (PN)   scrollRectToVisible( new Rectangle(xLeft, node.getLocation().y - VERT_SPACE,            //                                           xRight, node.getSize().height + VERT_SPACE2) );        }    }	/**	 * Returns the size of the visible part of the view in view coordinates. 	 */	public Dimension getViewportSize(){		JViewport mapViewport = (JViewport)getParent();		return mapViewport == null ? null : mapViewport.getExtentSize();	}    /**     * Scroll the viewport of the map to the south-west, i.e. scroll the map itself to the north-east.     */    public void scrollBy(int x, int y, boolean repaint) {        JViewport mapViewport = (JViewport)getParent();		if(mapViewport != null){        Point currentPoint = mapViewport.getViewPosition();                 // Get View Position        currentPoint.translate(x, y);                                       // Add the difference to it        // Watch for the boundaries        //    Low boundaries        if (currentPoint.getX()<0) {            currentPoint.setLocation(0, currentPoint.getY()); }        if (currentPoint.getY()<0) {            currentPoint.setLocation(currentPoint.getX(), 0); }        //    High boundaries        double maxX = getSize().getWidth() - mapViewport.getExtentSize().getWidth();     // getView() gets viewed area - JPanel        double maxY = getSize().getHeight() - mapViewport.getExtentSize().getHeight();        if (currentPoint.getX()>maxX) {            currentPoint.setLocation(maxX, currentPoint.getY()); }        if (currentPoint.getY()>maxY) {            currentPoint.setLocation(currentPoint.getX(), maxY); }		int oldScrollMode = mapViewport.getScrollMode();		if (repaint) {			mapViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);		}		mapViewport.setViewPosition(currentPoint);		if (repaint) {			mapViewport.setScrollMode(oldScrollMode);		}    }    }    //    // Node Navigation    //    private NodeView getNeighbour(int directionCode) {        NodeView oldSelected = getSelected();        NodeView newSelected = null;        switch (directionCode) {        case KeyEvent.VK_LEFT:            setSiblingMaxLevel(oldSelected.getModel().getNodeLevel()); // for case of return            if(oldSelected.isRoot()){                LinkedList left = ((RootNodeView)oldSelected).getLeft();                if (left.size() == 0) return null;                newSelected = oldSelected.getModel().getPreferredChild().getViewer();                if (!left.contains(newSelected)) {                    newSelected = (NodeView)left.getFirst();                }            } else if(!oldSelected.isLeft()) {                newSelected = oldSelected.getParentView();            } else {                if (oldSelected.getModel().isFolded()) { // If folded in the direction, unfold                    getController().getModeController().setFolded(oldSelected.getModel(), false);                    return null;                }                if (oldSelected.getChildrenViews().size() == 0) return null;                newSelected = oldSelected.getModel().getPreferredChild().getViewer();            }            setSiblingMaxLevel(newSelected.getModel().getNodeLevel());            break;        case KeyEvent.VK_RIGHT:            setSiblingMaxLevel(oldSelected.getModel().getNodeLevel()); // for case of return            if(oldSelected.isRoot()) {                LinkedList right = ((RootNodeView)oldSelected).getRight();                if (right.size() == 0) return null;                newSelected = oldSelected.getModel().getPreferredChild().getViewer();                if (!right.contains(newSelected)) {                    newSelected = (NodeView)right.getFirst();                }            } else if(oldSelected.isLeft()) {                newSelected = oldSelected.getParentView();            } else {                if (oldSelected.getModel().isFolded()) { // If folded in the direction, unfold//                  URGENT: Change to controller setFolded.//                    getModel().setFolded(oldSelected.getModel(), false);                     getController().getModeController().setFolded(oldSelected.getModel(), false);                    return null;                }                if (oldSelected.getChildrenViews().size() == 0) return null;                newSelected = oldSelected.getModel().getPreferredChild().getViewer();            }            setSiblingMaxLevel(newSelected.getModel().getNodeLevel());            break;        case KeyEvent.VK_UP:            newSelected = oldSelected.getPreviousSibling();            break;        case KeyEvent.VK_DOWN:            newSelected = oldSelected.getNextSibling();            break;        case KeyEvent.VK_PAGE_UP:            newSelected = oldSelected.getPreviousPage();            break;        case KeyEvent.VK_PAGE_DOWN:            newSelected = oldSelected.getNextPage();            break;        }        return newSelected;    }        public void move(KeyEvent e) {        NodeView newSelected = getNeighbour(e.getKeyCode());        if (newSelected != null) {            extendSelectionWithKeyMove(newSelected, e);            scrollNodeToVisible( newSelected );            e.consume();        }    }    private void extendSelectionWithKeyMove(NodeView newlySelectedNodeView, KeyEvent e) {        if (e.isShiftDown()) {            // left or right            if (e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_RIGHT) {                shiftSelectionOrigin = null;                NodeView toBeNewSelected = newlySelectedNodeView.isParentOf(getSelected()) ?                    newlySelectedNodeView : getSelected();                selectBranch(toBeNewSelected, false);                makeTheSelected(toBeNewSelected);                return; }            if (shiftSelectionOrigin == null) {                shiftSelectionOrigin = getSelected(); }            int deltaY = newlySelectedNodeView.getY() - shiftSelectionOrigin.getY();            // page up and page down            NodeView currentSelected = getSelected();            if (e.getKeyCode() == KeyEvent.VK_PAGE_UP) {                for (;;) {                    if (currentSelected.getY() > shiftSelectionOrigin.getY())                        deselect(currentSelected);                     else                        makeTheSelected(currentSelected);                                    if (currentSelected.getY() <= newlySelectedNodeView.getY())                        break;                    currentSelected = currentSelected.getPreviousSibling(); }                return; }            if (e.getKeyCode() == KeyEvent.VK_PAGE_DOWN) {                for (;;) {                    if (currentSelected.getY() < shiftSelectionOrigin.getY())                        deselect(currentSelected);                     else                        makeTheSelected(currentSelected);                    if (currentSelected.getY() >= newlySelectedNodeView.getY())                        break;                    currentSelected = currentSelected.getNextSibling(); }                return; }            boolean enlargingMove = (deltaY > 0) && (e.getKeyCode() == KeyEvent.VK_DOWN) ||                (deltaY < 0) && (e.getKeyCode() == KeyEvent.VK_UP);            if (enlargingMove) {                toggleSelected(newlySelectedNodeView); }            else {                toggleSelected(getSelected());                makeTheSelected(newlySelectedNodeView); }}        else {            shiftSelectionOrigin = null;            selectAsTheOnlyOneSelected(newlySelectedNodeView); }}    public void moveToRoot() {        selectAsTheOnlyOneSelected( getRoot() );        centerNode( getRoot() );    }    /**     * Select the node, resulting in only that one being selected.     */    public void selectAsTheOnlyOneSelected(NodeView newSelected) {        LinkedList oldSelecteds = getSelecteds();        //select new node        this.selected.clear();        this.selected.add(newSelected);        newSelected.requestFocus();        // set last focused as preferred (PN)         if (newSelected.getModel().getParentNode() != null) {            newSelected.getModel().getParentNode().setPreferredChild(newSelected.getModel());        }        scrollNodeToVisible(newSelected);        newSelected.repaint();        for(ListIterator e = oldSelecteds.listIterator();e.hasNext();) {            NodeView oldSelected = (NodeView)e.next();            if (oldSelected != null) {                oldSelected.repaint();            }        }    }    /**     * Add the node to the selection if it is not yet there, remove it otherwise.     */    public void toggleSelected(NodeView newSelected) {        NodeView oldSelected = getSelected();        if (isSelected(newSelected)) {            if (selected.size() > 1) {                selected.remove(newSelected);                oldSelected=newSelected;            }        }        else {            selected.add(newSelected);        }        getSelected().requestFocus();        getSelected().repaint();        if(oldSelected != null)            oldSelected.repaint();    }    /**     * Add the node to the selection if it is not yet there, making it the focused selected node.     */    public void makeTheSelected(NodeView newSelected) {        if (isSelected(newSelected)) {            selected.moveToFirst(newSelected);         } else {			selected.add(newSelected);        }                   getSelected().requestFocus();        getSelected().repaint(); }    public void deselect(NodeView newSelected) {        if (isSelected(newSelected)) {            selected.remove(newSelected);            newSelected.repaint();        }    }    /**     * Select the node and his descendants. On extend = false clear up the previous selection.     * if extend is false, the past selection will be empty.     * if yes, the selection will extended with this node and its children     */    public void selectBranch(NodeView newlySelectedNodeView, boolean extend) {        //if (!extend || !isSelected(newlySelectedNodeView))        //    toggleSelected(newlySelectedNodeView);        if (!extend) {            selectAsTheOnlyOneSelected(newlySelectedNodeView); }        else if (!isSelected(newlySelectedNodeView)) {            toggleSelected(newlySelectedNodeView); }        //select(newSelected,extend);        for (ListIterator e = newlySelectedNodeView.getChildrenViews().listIterator(); e.hasNext(); ) {            NodeView target = (NodeView)e.next();            selectBranch(target,true);        }    }    public boolean selectContinuous(NodeView newSelected) {        /* fc, 25.1.2004: corrected due to completely inconsistent behaviour.*/        NodeView oldSelected = null;        // search for the last already selected item among the siblings:        LinkedList selList = getSelecteds();        ListIterator j = selList.listIterator(/*selList.size()*/);        while(j.hasNext()) {            NodeView selectedNode = (NodeView)j.next();            if(selectedNode != newSelected && newSelected.isSiblingOf(selectedNode)) {                oldSelected = selectedNode;                break;            }        }        // no such sibling found. select the new one, and good bye.        if(oldSelected == null) {            if(!isSelected(newSelected)) {                toggleSelected(newSelected);                return true;            }            return false;        }        // fc, bug fix: only select the nodes on the same side:        boolean oldPositionLeft = oldSelected.isLeft();        boolean newPositionLeft = newSelected.isLeft();        /* find old starting point. */        ListIterator i = newSelected.getSiblingViews().listIterator();

⌨️ 快捷键说明

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