Package nz.govt.natlib.meta.ui.tree

Source Code of nz.govt.natlib.meta.ui.tree.FileTree$TreeRendererSelector

/*
*  Copyright 2006 The National Library of New Zealand
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/

package nz.govt.natlib.meta.ui.tree;

import java.awt.Component;
import java.util.HashMap;

import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellRenderer;

/**
* @author unascribed
* @version 1.0
*/
public class FileTree extends JTree {

  private HashMap renderers;

  public FileTree(FileModel model) {
    super(model);
    setRootVisible(false);
    setShowsRootHandles(true);
    renderers = new HashMap();
    TreeRendererSelector renderer = new TreeRendererSelector();
    setCellRenderer(renderer);
    setRenderers();

    ToolTipManager.sharedInstance().registerComponent(this);
  }

  private void setRenderers() {
    addRenderer(FolderNode.class, new FolderRenderer());
    addRenderer(ObjectFolderNode.class, new ObjectFolderRenderer());
    addRenderer(FileNode.class, new FileRenderer());
  }

  public void addRenderer(Class type, TreeCellRenderer renderer) {
    renderers.put(type, renderer);
  }

  /**
   * Standard functionality for a table - I guess 'tree' missed out!
   * @author unascribed
   * @version 1.0
   */
  private class TreeRendererSelector extends DefaultTreeCellRenderer {
    public Component getTreeCellRendererComponent(JTree tree, Object value,
        boolean selected, boolean expanded, boolean leaf, int row,
        boolean hasFocus) {
      // decide which renderer to use - or use the default.
      TreeCellRenderer renderer = (TreeCellRenderer) renderers.get(value
          .getClass());
      Component rendererComponent = null;

      if (renderer != null) {
        rendererComponent = renderer.getTreeCellRendererComponent(tree,
            value, selected, expanded, leaf, row, hasFocus);
      } else {
        rendererComponent = super.getTreeCellRendererComponent(tree,
            value, selected, expanded, leaf, row, hasFocus);
      }

      return rendererComponent;
    }
  }

}
TOP

Related Classes of nz.govt.natlib.meta.ui.tree.FileTree$TreeRendererSelector

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.