Package org.freeplane.plugin.workspace.components

Source Code of org.freeplane.plugin.workspace.components.WorkspaceCellEditor

/**
* author: Marcel Genzmehr
* 24.07.2011
*/
package org.freeplane.plugin.workspace.components;

import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.EventObject;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreePath;

import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode;
import org.freeplane.plugin.workspace.nodes.AFolderNode;

/**
*
*/
public class WorkspaceCellEditor extends DefaultTreeCellEditor {

  private static final Icon DEFAULT_ICON = new ImageIcon(WorkspaceNodeRenderer.class.getResource("/images/16x16/text-x-preview.png"));
  private static final Icon DEFAULT_FOLDER_CLOSED_ICON = new ImageIcon(WorkspaceNodeRenderer.class.getResource("/images/16x16/folder-blue.png"));
  private static final Icon DEFAULT_FOLDER_OPEN_ICON = new ImageIcon(WorkspaceNodeRenderer.class.getResource("/images/16x16/folder-blue_open.png"));
 
  /***********************************************************************************
   * CONSTRUCTORS
   **********************************************************************************/

  /**
   * @param tree
   * @param renderer
   */
  public WorkspaceCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
    super(tree, renderer);
  }

  /***********************************************************************************
   * METHODS
   **********************************************************************************/

  public Component getTreeCellEditorComponent(JTree tree, Object treeNode, boolean isSelected, boolean expanded, boolean leaf,
      int row) {
    if (treeNode instanceof AWorkspaceTreeNode) {
      AWorkspaceTreeNode node = (AWorkspaceTreeNode) treeNode;
      setNodeIcon(renderer,node);
      return super.getTreeCellEditorComponent(tree, node.getName(), isSelected, expanded, leaf, row)
    }
    return super.getTreeCellEditorComponent(tree, treeNode, isSelected, expanded, leaf, row);
  }

  public boolean isCellEditable(EventObject event) {   
    if (event != null && event.getSource() instanceof JTree) {
      setTree((JTree) event.getSource());
      if (event instanceof MouseEvent) {
        TreePath path = tree.getPathForLocation(((MouseEvent) event).getX(), ((MouseEvent) event).getY());
        if (path != null) {
          AWorkspaceTreeNode treeNode = (AWorkspaceTreeNode) path.getLastPathComponent();
          if(!treeNode.isEditable()) {
            return false;
          }         
        }
      }
    }
    else if(event == null && WorkspaceController.getCurrentModeExtension().getView().getSelectionPath() != null) {
      return false;
    }
    return super.isCellEditable(event);
  }
 
  /**
   * @param value
   */
  protected void setNodeIcon(DefaultTreeCellRenderer renderer, AWorkspaceTreeNode wsNode) {
    renderer.setOpenIcon(DEFAULT_FOLDER_OPEN_ICON);
    renderer.setClosedIcon(DEFAULT_FOLDER_CLOSED_ICON);
   
    if(wsNode.setIcons(renderer)) {
      return;
    }   
    if(!wsNode.isLeaf() || wsNode instanceof AFolderNode) {
      renderer.setLeafIcon(DEFAULT_FOLDER_CLOSED_ICON);
    }
    else {
      renderer.setLeafIcon(DEFAULT_ICON);
    }
   
   
  }
  /***********************************************************************************
   * REQUIRED METHODS FOR INTERFACES
   **********************************************************************************/
TOP

Related Classes of org.freeplane.plugin.workspace.components.WorkspaceCellEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.