Project: freemind
/*FreeMind - A Program for creating and viewing Mindmaps
 *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev 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. 
 */
/** this is only a test class */ 
package accessories.plugins; 
 
import java.awt.Color; 
import java.util.Timer; 
import java.util.TimerTask; 
import java.util.Vector; 
 
import javax.swing.SwingUtilities; 
 
import freemind.modes.MindMapNode; 
import freemind.modes.mindmapmode.hooks.PermanentMindMapNodeHookAdapter; 
import freemind.view.mindmapview.NodeView; 
import freemind.view.mindmapview.NodeViewVisitor; 
 
/**
 * @author christianfoltin 
 *  
 * @file BlinkingNodeHook.java 
 * @package freemind.modes.mindmapmode 
 * */
 
public class BlinkingNodeHook extends PermanentMindMapNodeHookAdapter { 
 
 private Timer timer = null
 
 /**  */ 
 public BlinkingNodeHook() { 
  super(); 
 
 
 /*
  * (non-Javadoc) 
  *  
  * @see freemind.modes.NodeHook#startupMapHook(java.lang.String) 
  */
 
 public void invoke(MindMapNode node) { 
  super.invoke(node); 
  if (timer == null) { 
   timer = new Timer(); 
   timer.schedule(new TimerColorChanger(), 500500); 
   nodeChanged(getNode()); 
  
 
 
 // add a new node: 
 // MindMapNode newNode=((ControllerAdapter)getController()).newNode(); 
 // ((MapAdapter) getMap()).insertNodeInto(newNode, getNode(), 0); 
 
 static Vector colors = new Vector(); 
 
 protected class TimerColorChanger extends TimerTask { 
   colors.clear(); 
   colors.add(Color.BLUE); 
   colors.add(Color.RED); 
   colors.add(Color.MAGENTA); 
   colors.add(Color.CYAN); 
 
  
 
  /** TimerTask method to enable the selection after a given time. */ 
  public void run() { 
   SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     if (getNode() == null || getController().isBlocked()) 
      return
     getNode().acceptViewVisitor(new NodeViewVisitor() { 
      public void visit(NodeView view) { 
       if (!view.isVisible()) { 
        return
       
       Color col = view.getMainView().getForeground(); 
       int index = -1
       if (col != null && colors.contains(col)) { 
        index = colors.indexOf(col); 
       
       index++; 
       if (index >= colors.size()) 
        index = 0
       view.getMainView().setForeground( 
         (Color) colors.get(index)); 
      
 
     }); 
    
   }); 
  
 
 
 /*
  * (non-Javadoc) 
  *  
  * @see freemind.extensions.MindMapHook#shutdownMapHook() 
  */
 
 public void shutdownMapHook() { 
  timer.cancel(); 
  nodeChanged(getNode()); 
  timer = null
  super.shutdownMapHook(); 
 
 
}