source: trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/JFCNameChangeListener.java @ 854

Last change on this file since 854 was 854, checked in by fglaser, 12 years ago
  • JFCMonitor: improved JFCNameChangeListener now listens on AccessibleContext? and Component.name
  • Property svn:mime-type set to text/plain
File size: 1.8 KB
Line 
1/**
2 *
3 */
4package de.ugoe.cs.quest.jfcmonitor;
5
6import java.awt.Component;
7import java.beans.PropertyChangeEvent;
8import java.beans.PropertyChangeListener;
9
10import javax.accessibility.AccessibleContext;
11
12import de.ugoe.cs.util.StringTools;
13
14/**
15 * <p>
16 * Listener that listens on the name change of a component.     
17 * </p>
18 * @author Fabian Glaser
19 * @version 1.0
20 */
21public class JFCNameChangeListener implements PropertyChangeListener {
22         /**
23     * <p>
24     * Writer for logging events.
25     * </p>
26     */
27    final private JFCMonitorOutputWriter outputWriter;
28   
29    /**
30     * <p>
31     * Constructor. Creates a new JFCNameChangeListener with a given
32     * {@link JFCMonitorOutputWriter}. 
33     * </p>
34     * @param outputWriter
35     */
36    public JFCNameChangeListener(JFCMonitorOutputWriter outputWriter){
37        this.outputWriter = outputWriter;
38    }
39       
40        @Override
41        public void propertyChange(PropertyChangeEvent evt) {
42                String propertyName = evt.getPropertyName();
43                Component component = null;
44               
45                if (propertyName.equals("AccessibleName")){
46                        AccessibleContext context = (AccessibleContext) evt.getSource();
47                        component = (Component) context.getAccessibleParent();
48                }
49               
50                if (propertyName.equals("name")){
51                        component = (Component) evt.getSource();
52                }
53               
54                if (propertyName.equals("")){
55                       
56                }
57               
58                if (component != null){
59                        if (!JFCComponent.isKnown(component)){
60                                System.err.println("Referenced component is not known");
61                                throw new AssertionError("Referenced component is not known.");
62                        }
63                        StringBuilder builder = new StringBuilder();
64                        builder.append("<componentNameChange hash=\"");
65                        builder.append(Integer.toHexString(component.hashCode()));
66                        builder.append("\" newName=\"" + evt.getNewValue());
67                        builder.append("\" source=\"" + propertyName);
68                        builder.append("\" />" + StringTools.ENDLINE);
69                        outputWriter.write(builder.toString());
70                }
71        }
72       
73}
Note: See TracBrowser for help on using the repository browser.