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

Last change on this file since 853 was 853, checked in by fglaser, 12 years ago
  • JFCMonitor now logs component class parents
  • Renamed WindowMonitor? to JFCWindowMonitor
  • Property svn:mime-type set to text/plain
File size: 1.6 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                if (evt.getPropertyName().equals("AccessibleName")){
43                        AccessibleContext context = (AccessibleContext) evt.getSource();
44                        Component component = (Component) context.getAccessibleParent();
45                        StringBuilder builder = new StringBuilder();
46                        builder.append("<componentNameChange hash=\"");
47                        if (!JFCComponent.isKnown(component)){
48                                        System.err.println("Referenced component is not known");
49                                        throw new AssertionError("Referenced component is not known.");
50                        }
51                        builder.append(Integer.toHexString(component.hashCode()));
52                        builder.append("\" newName=\"" + evt.getNewValue());
53                        builder.append("\"/>" + StringTools.ENDLINE);
54                        outputWriter.write(builder.toString());
55                }               
56        }
57       
58}
Note: See TracBrowser for help on using the repository browser.