home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.DefaultCellEditor;
- import com.sun.java.swing.JTextField;
- import com.sun.java.swing.JTree;
- import com.sun.java.swing.Timer;
- import com.sun.java.swing.event.CellEditorListener;
- import com.sun.java.swing.event.TreeSelectionEvent;
- import com.sun.java.swing.event.TreeSelectionListener;
- import com.sun.java.swing.tree.TreeCellEditor;
- import com.sun.java.swing.tree.TreePath;
- import java.awt.Component;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseEvent;
- import java.util.EventObject;
-
- public class BasicTreeCellEditor extends BasicTreeCellEditorContainer implements ActionListener, TreeSelectionListener {
- protected boolean canEdit;
- protected JTree changeTree;
- protected TreePath lastPath;
- protected Timer timer;
-
- public BasicTreeCellEditor(BasicTreeCellRenderer var1) {
- super((TreeCellEditor)null, var1);
- JTextField var2 = new JTextField();
- super.realEditor = new DefaultCellEditor(var2);
- ((DefaultCellEditor)super.realEditor).setClickCountToStart(1);
- }
-
- public Component getTreeCellEditorComponent(JTree var1, Object var2, boolean var3, boolean var4, boolean var5, int var6) {
- TreePath var7 = var1.getPathForRow(var6);
- Component var8 = super.getTreeCellEditorComponent(var1, var2, var3, var4, var5, var6);
- this.canEdit = this.lastPath != null && var7 != null && this.lastPath.equals(var7);
- if (this.timer != null) {
- this.timer.stop();
- }
-
- return var8;
- }
-
- public boolean isCellEditable(EventObject var1) {
- if (var1 != null && (!(var1 instanceof MouseEvent) || ((MouseEvent)var1).getClickCount() <= 2)) {
- if (this.canEdit && ((MouseEvent)var1).getClickCount() == 1) {
- if (this.timer == null) {
- this.timer = new Timer(1200, this);
- this.timer.setRepeats(false);
- }
-
- this.timer.start();
- }
-
- return false;
- } else {
- return super.isCellEditable(var1);
- }
- }
-
- public void addCellEditorListener(CellEditorListener var1) {
- super.addCellEditorListener(var1);
- if (var1 instanceof BasicTreeUI) {
- this.setChangeTree(((BasicTreeUI)var1).tree);
- } else {
- this.setChangeTree((JTree)null);
- }
- }
-
- public void removeCellEditorListener(CellEditorListener var1) {
- super.removeCellEditorListener(var1);
- if (var1 instanceof BasicTreeUI) {
- this.setChangeTree((JTree)null);
- }
-
- }
-
- protected void setChangeTree(JTree var1) {
- if (this.changeTree != null) {
- this.changeTree.removeTreeSelectionListener(this);
- }
-
- this.changeTree = var1;
- if (this.changeTree != null) {
- this.changeTree.addTreeSelectionListener(this);
- }
-
- if (this.timer != null) {
- this.timer.stop();
- }
-
- }
-
- public void valueChanged(TreeSelectionEvent var1) {
- if (this.changeTree != null) {
- if (this.changeTree.getSelectionCount() == 1) {
- this.lastPath = this.changeTree.getSelectionPath();
- } else {
- this.lastPath = null;
- }
- }
-
- if (this.timer != null) {
- this.timer.stop();
- }
-
- }
-
- public void actionPerformed(ActionEvent var1) {
- if (this.changeTree != null && this.lastPath != null) {
- this.changeTree.startEditingAtPath(this.lastPath);
- }
-
- }
- }
-