source: trunk/quest-plugin-mfc/src/main/java/de/ugoe/cs/quest/plugin/mfc/eventcore/WindowsEvent.java @ 581

Last change on this file since 581 was 566, checked in by sherbold, 12 years ago
  • adapted MFC plugin to new event core
  • Property svn:mime-type set to text/plain
File size: 2.4 KB
Line 
1package de.ugoe.cs.quest.plugin.mfc.eventcore;
2
3import java.io.ByteArrayInputStream;
4
5import javax.xml.parsers.DocumentBuilder;
6import javax.xml.parsers.DocumentBuilderFactory;
7
8import org.w3c.dom.Document;
9import org.w3c.dom.Element;
10import org.w3c.dom.NodeList;
11
12import de.ugoe.cs.quest.eventcore.Event;
13
14
15/**
16 * <p>
17 * Convenience class for working with Windows MFC events.
18 * </p>
19 *
20 * @author Steffen Herbold
21 * @version 1.0
22 * @deprecated This class is deprecated and only kept for now for documentation - some features still need to be extracted and reconstructed elsewhere
23 */
24public class WindowsEvent extends Event {
25
26        /**
27         * <p>
28         * Id for object serialization.
29         * </p>
30         */
31        private static final long serialVersionUID = 1L;
32
33        /**
34         * <p>
35         * Constructor. Creates a new WindowEvent.
36         * </p>
37         *
38         * @see de.ugoe.cs.quest.eventcore.Event#Event(String)
39         * @param type
40         *            type of the event.
41         */
42        public WindowsEvent(String type) {
43                super(new MFCEventType("foo"));
44        }
45
46        //@Override
47        protected boolean targetEquals(String otherTarget) {
48                return MFCTargetComparator.compare(target.toString(), otherTarget);
49        }
50       
51        int targetHash = 0;
52       
53        //@Override
54        protected int targetHashCode() {
55                if( targetHash==0 ) {
56                        int multiplier = 17;
57                        if (target != null) {
58                                Document doc;
59                                try {
60                                        DocumentBuilder documentBuilder = DocumentBuilderFactory
61                                                        .newInstance().newDocumentBuilder();
62                                        doc = documentBuilder.parse(new ByteArrayInputStream(
63                                                        ("<dummy>" + target + "</dummy>").getBytes("UTF-8")));
64                                } catch (Exception e) {
65                                        e.printStackTrace();
66                                        return 0;
67                                }
68                                doc.getDocumentElement().normalize();
69                                NodeList widgets = doc.getElementsByTagName("window");
70
71                                for (int i = 0; i < widgets.getLength(); i++) {
72                                        Element currentWidget = (Element) widgets.item(i);
73                                        targetHash = targetHash* multiplier + widgetHashCode(currentWidget);
74                                }
75                        }
76                }
77                return targetHash;
78        }
79       
80        private int widgetHashCode(Element currentWidget) {
81                int hashCode = 0;
82                int multiplier = 41;
83                hashCode = hashCode * multiplier + currentWidget.getAttribute("class").hashCode();
84                hashCode = hashCode * multiplier + currentWidget.getAttribute("resourceId").hashCode();
85                hashCode = hashCode * multiplier + currentWidget.getAttribute("isModal").hashCode();
86                return hashCode;
87        }
88}
Note: See TracBrowser for help on using the repository browser.