/* * Copyright (c) 2014 tabletoptool.com team. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * rptools.com team - initial implementation * tabletoptool.com team - further development */ package com.t3.client.ui.assetpanel; import java.awt.event.MouseListener; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeSelectionModel; import com.t3.client.AppActions; import com.t3.swing.PopupListener; /** */ public class AssetTree extends JTree implements TreeSelectionListener { private Directory selectedDirectory; private AssetPanel assetPanel; public AssetTree(AssetPanel assetPanel) { super(assetPanel.getModel().getImageFileTreeModel()); this.assetPanel = assetPanel; setCellRenderer(new AssetTreeCellRenderer()); addMouseListener(createPopupListener()); addTreeSelectionListener(this); getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); getSelectionModel().addTreeSelectionListener(this); } @Override public int getRowHeight() { return -1; } public Directory getSelectedAssetGroup() { return selectedDirectory; } private MouseListener createPopupListener() { PopupListener listener = new PopupListener(createPopupMenu()); return listener; } private JPopupMenu createPopupMenu() { JPopupMenu menu = new JPopupMenu (); menu.add(new JMenuItem(AppActions.REMOVE_ASSET_ROOT)); return menu; } public void refresh() { ((ImageFileTreeModel) getModel()).refresh(); } //// // Tree Selection Listener /* (non-Javadoc) * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent) */ @Override public void valueChanged(TreeSelectionEvent e) { // Keep memory tight // TODO: make this an option if (selectedDirectory != null) { selectedDirectory.refresh(); } selectedDirectory = null; Object node = e.getPath().getLastPathComponent(); if (node instanceof Directory) { selectedDirectory = ((Directory) node); assetPanel.setDirectory((Directory) node); } } }