/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Christian Foltin and others *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package accessories.plugins; import java.awt.KeyboardFocusManager; import javax.swing.JSplitPane; import freemind.main.FreeMind; import freemind.modes.mindmapmode.hooks.MindMapNodeHookAdapter; /** * @author foltin * */ public class NodeNote extends MindMapNodeHookAdapter { public final static String NODE_NOTE_PLUGIN = "accessories/plugins/NodeNote.properties"; public final static String EMPTY_EDITOR_STRING = "<html>\n <head>\n\n </head>\n <body>\n <p>\n \n </p>\n </body>\n</html>\n"; public final static String EMPTY_EDITOR_STRING_ALTERNATIVE = "<html>\n <head>\n \n </head>\n <body>\n <p>\n \n </p>\n </body>\n</html>\n"; public final static String EMPTY_EDITOR_STRING_ALTERNATIVE2 = "<html>\n <head>\n \n \n </head>\n <body>\n <p>\n \n </p>\n </body>\n</html>\n"; public void startupMapHook() { super.startupMapHook(); String foldingType = getResourceString("command"); // get registration: NodeNoteRegistration registration = (NodeNoteRegistration) this .getPluginBaseClass(); JSplitPane splitPane = null; if (foldingType.equals("jump")) { // jump to the notes: splitPane = getSplitPaneToScreen(registration); int oldSize = splitPane.getDividerLocation(); NodeNoteRegistration.sPositionToRecover = new Integer(oldSize); // int maximumDividerLocation = // splitPane.getMaximumDividerLocation(); // if (maximumDividerLocation < oldSize) { // openSplitPane(splitPane, maximumDividerLocation); // } else { // NodeNoteRegistration.sPositionToRecover = null; // } KeyboardFocusManager.getCurrentKeyboardFocusManager() .clearGlobalFocusOwner(); requestFocusForNotePanel(); } else { // show hidden window: if (registration.getSplitPane() == null) { // the window is currently hidden. show it: splitPane = getSplitPaneToScreen(registration); // openSplitPane(splitPane, maximumDividerLocation); requestFocusForNotePanel(); } else { // it is shown, hide it: // int newLoc = splitPane.getHeight() - // splitPane.getDividerSize(); // int currentLoc = splitPane.getDividerLocation(); // splitPane.setDividerLocation(newLoc); // splitPane.setLastDividerLocation(currentLoc); registration.hideNotesPanel(); getMindMapController().getFrame().setProperty( FreeMind.RESOURCES_USE_SPLIT_PANE, "false"); } } } protected void requestFocusForNotePanel() { NodeNoteRegistration.getHtmlEditorPanel() .getMostRecentFocusOwner().requestFocus(); } private JSplitPane getSplitPaneToScreen(NodeNoteRegistration registration) { JSplitPane splitPane; splitPane = registration.getSplitPane(); if (splitPane == null) { // no split panes are used. // jump to the notes: registration.showNotesPanel(); splitPane = registration.getSplitPane(); getMindMapController().getFrame().setProperty( FreeMind.RESOURCES_USE_SPLIT_PANE, "true"); } return splitPane; } private void openSplitPane(JSplitPane splitPane, int maximumDividerLocation) { int newLoc = splitPane.getLastDividerLocation(); int currentLoc = splitPane.getDividerLocation(); if (newLoc > maximumDividerLocation) { newLoc = maximumDividerLocation; } splitPane.setDividerLocation(newLoc); splitPane.setLastDividerLocation(currentLoc); } }