|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.tasklist.compiler.nodestreetable; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyVetoException; import java.util.ArrayList; import java.util.List; import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.Action; import javax.swing.JPopupMenu; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.tree.TreePath; import org.netbeans.modules.tasklist.core.ColumnProperty; import org.netbeans.modules.tasklist.core.TLUtils; import org.netbeans.modules.tasklist.core.TreeTableIntf; import org.netbeans.modules.tasklist.compiler.treetable.TreeTable; import org.openide.ErrorManager; import org.openide.awt.MouseUtils; import org.openide.explorer.ExplorerManager; import org.openide.nodes.Node; import org.openide.util.Utilities; /** * todo comments * @author tim */ public class NodesTreeTable extends TreeTable implements TreeTableIntf { private static final long serialVersionUID = 1; private static final Logger LOGGER = TLUtils.getLogger(NodesTreeTable.class); static { LOGGER.setLevel(Level.OFF); } /** * todo comment */ public static final String COMPARATOR_KEY = "comparator"; /** * todo comment */ public static final String RENDERER_KEY = "renderer"; private ExplorerManager em; /** Creates a new instance of NodesTreeTable */ public NodesTreeTable(ExplorerManager explorerManager, ColumnProperty[] properties, Node root) { super(new NodesTreeTableModel(properties, root)); this.em = explorerManager; this.em.setRootContext(root); this.em.setExploredContext(root); this.em.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName() == ExplorerManager.PROP_ROOT_CONTEXT) { ((NodesTreeTableModel) getTreeTableModel()).setRoot(em.getRootContext()); } } }); addMouseListener(new MouseUtils.PopupMouseAdapter() { public void showPopup(MouseEvent e) { int row = rowAtPoint(e.getPoint()); int col = columnAtPoint(e.getPoint()); Action[] actions; if (row < 0 || col < 0) return; setRowSelectionInterval(row, row); Node n = (Node) getNodeForRow(row); actions = n.getActions(false); JPopupMenu pm = Utilities.actionsToPopup(actions, NodesTreeTable.this); if(pm != null) pm.show(NodesTreeTable.this, e.getX(), e.getY()); } }); addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (!MouseUtils.isDoubleClick(e)) return; int row = rowAtPoint(e.getPoint()); int col = columnAtPoint(e.getPoint()); if (row < 0 || col < 0) return; setRowSelectionInterval(row, row); Node n = (Node) getNodeForRow(row); Action action = n.getPreferredAction(); if (action != null) { action.actionPerformed( new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null)); } } }); getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { int row = getSelectedRow(); Node[] nodes; if (row < 0) { nodes = new Node[0]; } else { nodes = new Node [] {(Node) getNodeForRow(row)}; } if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine(em.getRootContext() + ""); // NOI18N LOGGER.fine(nodes.length == 0 ? "null" : nodes[0].toString()); // NOI18N } try { em.setSelectedNodes(nodes); } catch (PropertyVetoException ex) { ErrorManager.getDefault().notify(ex); } } } ); } public boolean isExpanded(Node n) { return this.getTree().isExpanded(new TreePath(getPathToNode(n))); } public void setHorizontalScrollBarPolicy(int policy) { // todo } public void setTreePreferredWidth(int width) { getColumnModel().getColumn(0).setPreferredWidth(width); } public void collapseNode(Node n) { this.getTree().collapsePath(new TreePath(getPathToNode(n))); } public void setVerticalScrollBarPolicy(int policy) { // todo } public javax.swing.JTable getTable() { return this; } public void expandNode(Node n) { this.getTree().expandPath(new TreePath(getPathToNode(n))); } private Node[] getPathToNode(Node n) { List l = new ArrayList(); while (n != null) { l.add(0, n); n = n.getParentNode(); } return (Node[]) l.toArray(new Node[l.size()]); } public javax.swing.table.TableColumnModel getHeaderModel() { return getColumnModel(); } public void setProperties(org.openide.nodes.Node.Property[] props) { ((NodesTreeTableModel) getModel()).setProperties((ColumnProperty[]) props); } public void setRootVisible(boolean v) { getTree().setRootVisible(v); } public void expandAll() { // todo } public void createDefaultColumnsFromModel() { super.createDefaultColumnsFromModel(); if (!(getTreeTableModel() instanceof NodesTreeTableModel)) return; ColumnProperty[] properties = ((NodesTreeTableModel) getTreeTableModel()).getProperties(); TableColumnModel m = getColumnModel(); for (int i = 0; i < m.getColumnCount(); i++) { TableColumn tc = m.getColumn(i); tc.setPreferredWidth(properties[i].width); tc.setWidth(properties[i].width); TableCellRenderer tcr = (TableCellRenderer) properties[i].getValue(RENDERER_KEY); if (tcr != null) tc.setCellRenderer(tcr); } } public void setTableAutoResizeMode(int mode) { setAutoResizeMode(mode); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.