1 package com.bonevich.erj.ui;
2
3 import com.bonevich.erj.model.*;
4 import com.bonevich.erj.ui.editor.IdentifierTextField;
5
6 import java.awt.*;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9
10 import javax.swing.*;
11 import javax.swing.tree.TreeCellEditor;
12 import javax.swing.tree.TreeCellRenderer;
13
14 import java.util.EventObject;
15
16 /***
17 *
18 * @author Jeffrey Bonevich <bonevich@telocity.com>
19 * @version $Id: ErjTreeCellEditor.html,v 1.1 2009/03/07 17:55:33 jbonevic Exp $
20 */
21 public class ErjTreeCellEditor
22 extends DefaultCellEditor //AbstractCellEditor implements TreeCellEditor
23 {
24 private ErjTreeNode _nodeEditing;
25 private TreeCellRenderer _renderer;
26 private JTextField _editor;
27 private JPanel _panel = new JPanel();
28 private JLabel _icon = new JLabel();
29 private Component _strut = Box.createHorizontalStrut(5);
30
31 public ErjTreeCellEditor(ErjTreeCellRenderer renderer)
32 {
33 super(new IdentifierTextField());
34 _renderer = renderer;
35 _editor = (JTextField)editorComponent;
36 initComponents();
37 addListeners();
38 }
39
40 private void initComponents()
41 {
42 _panel.setLayout(new FlowLayout(FlowLayout.CENTER,0,0));
43 _panel.add(_icon);
44 _panel.add(_strut);
45 _panel.add(_editor);
46
47 _editor.setOpaque(false);
48 _panel.setOpaque(false);
49 _icon.setOpaque(false);
50 }
51
52 private void addListeners()
53 {
54 _editor.addActionListener(
55 new ActionListener()
56 {
57 public void actionPerformed(ActionEvent e)
58 {
59 //System.err.println("edited " + _nodeEditing);
60 ModelElement elt = (ModelElement)_nodeEditing.getUserObject();
61 String newId = _editor.getText();
62 elt.setIdentifier(newId);
63 if (!elt.isNameInitialized())
64 {
65 elt.setName(newId);
66 }
67 ErjFrame.getInstance().getApplication().getCurrentProject().markAsModified();
68 }
69 }
70 );
71 }
72
73 public Component getTreeCellEditorComponent(
74 JTree tree, Object value,
75 boolean selected, boolean expanded,
76 boolean leaf, int row
77 )
78 {
79 _nodeEditing = (ErjTreeNode) value;
80
81 ModelElement elt = (ModelElement)_nodeEditing.getUserObject();
82 _editor.setText(elt.getIdentifier());
83 _editor.selectAll();
84
85 JLabel label = (JLabel)_renderer.getTreeCellRendererComponent(
86 tree, value, selected, expanded, leaf, row, true
87 );
88 _icon.setIcon(label.getIcon());
89
90 return _panel;
91 }
92
93 public Object getCellEditorValue()
94 {
95 return _nodeEditing.getUserObject();
96 }
97
98 } /*** end class ErjTreeCellEditor */
This page was automatically generated by Maven