Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
15 arune 1
/*
2
 * File created by arune
3
 * at 2004-dec
4
 */
5
package Macbeth.Modules.modTestMenu;
6
 
7
import java.util.*;
8
import java.net.URL;
9
import java.io.InputStreamReader;
10
import java.io.BufferedReader;
11
 
12
import Macbeth.System.*;
13
import Macbeth.Utilities.*;
14
import Macbeth.XML.XMLDataHandler;
15
 
16
/**
17
 *
18
 *
19
 * @author arune
20
 */
21
public class modTestMenu extends MbModule {
22
    private String menuMiddleId;
23
 
24
    //menusystem specific bool, if this submenu is activated
25
    private boolean activated;
26
 
27
    /**
28
     * Creates a new instance of modTestMenu.
29
     */
30
    public modTestMenu() {
31
        //construct MbModule
32
        super();
33
        //initial values
34
        menuMiddleId = "0";
35
        activated = false;
36
        //register our packet data handler
37
        setPacketDataHandler(new PacketDataHandler());
38
    }
39
 
40
    public String name() {
41
        return "TestMenu";
42
    }
43
 
44
    public String description() {
45
        return "jadajada";
46
    }
47
 
48
    /**
49
     * This method sets default values on all _required_ data
50
     * fields in the data repository.
51
     */
52
    public void initDataFields() {
53
        //set default values on all REQUIRED option fields before starting up subsystems
54
//        options.putField("host", "localhost");
55
//        options.putField("port", "2050");
56
    }
57
 
58
    public void startup() throws MbStartupException {
59
        //startup MbModule
60
        super.startup();
61
 
62
        sendToMenuSys("<registersubmod displayname=\"Testmeny pimpim\" displaydesc=\"En meny som testar allt det som testas kan\" visible=\"true\" />");
63
    }
64
 
65
    /**
66
     * Shuts down this module.
67
     */
68
    public void shutdown() {
69
        sendToMenuSys("<unregistersubmod />");
70
        //shut down MbModule        
71
        super.shutdown();
72
    }
73
 
74
    private void sendToMenuSys(String dataToSend) {
75
        MbPacket p = new MbPacket();
76
        p.setDestination(new MbLocation("self", "MenuSystem"));
77
        p.appendContents(dataToSend);
78
        sendPacket(p);
79
    }
80
 
81
    /**
82
     * Takes care of XML-data found in incoming packets.
83
     */
84
    private class PacketDataHandler implements XMLDataHandler {
85
        public void XMLstartElement(String element, HashMap attributes) {
86
            if (element.equals("activate")) {
87
                //menusystem activates this submenu
88
                //we should send a menu to display
89
                activated = true;
90
                String dataToSend = "";
91
                dataToSend = dataToSend + "<packet menuid=\"MainMenu\"><data>";
92
                dataToSend = dataToSend + "<middleid>" + menuMiddleId + "</middleid>";
93
                dataToSend = dataToSend + "<list id=\"menudata\">";
94
 
95
                for (int i = 0; i < 200; i++) {
96
                    dataToSend = dataToSend + "<item id=\"" + i + "\" title=\"Test item #" + i + "\" desc=\"Description test test test, dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla\" />";
97
                    /*
98
                    dataToSend = dataToSend + "<item>";
99
                    dataToSend = dataToSend + "<id>" + i + "</id>";
100
                    dataToSend = dataToSend + "<title>Test item #" + i + "</title>";
101
                    dataToSend = dataToSend + "<description>Description test test test, dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla</description>";
102
                    dataToSend = dataToSend + "</item>";
103
                    */
104
                }
105
 
106
                dataToSend = dataToSend + "</list>";
107
                dataToSend = dataToSend + "</data></packet>";
108
 
109
                sendToMenuSys(dataToSend);
110
 
111
            } else if (element.equals("refresh")) {
112
                //menusystem wants a refreshed menu
113
                String dataToSend = "";
114
                dataToSend = dataToSend + "<packet menuid=\"MainMenu\"><data>";
115
                dataToSend = dataToSend + "<middleid>" + menuMiddleId + "</middleid>";
116
                dataToSend = dataToSend + "<list id=\"menudata\">";
117
                for (int i = 0; i < 200; i++) {
118
                    dataToSend = dataToSend + "<item id=\"" + i + "\" title=\"Test item #" + i + "\" desc=\"Description test test test, dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla\" />";
119
                    /*
120
                    dataToSend = dataToSend + "<item>";
121
                    dataToSend = dataToSend + "<id>" + i + "</id>";
122
                    dataToSend = dataToSend + "<title>Test item #" + i + "</title>";
123
                    dataToSend = dataToSend + "<description>Description test test test" + i*i + "</description>";
124
                    dataToSend = dataToSend + "</item>";
125
                    */
126
                }
127
                dataToSend = dataToSend + "</list>";
128
                dataToSend = dataToSend + "</data></packet>";
129
 
130
                sendToMenuSys(dataToSend);
131
 
132
            } else if (element.equals("deactivate")) {
133
                //menusystem deactivates this submenu
134
                activated = false;
135
 
136
            } else if (element.equals("padLeft") && attributes.containsKey("state") && attributes.containsKey("level")) {
137
                //user pressed padleft on his remote
138
                //we should traverse back one step or deactivate
139
                //if we are in submenu root
140
                String state = (String)attributes.get("state");
141
                int level = Integer.parseInt((String)attributes.get("level"));
142
 
143
                if (level >= 2) {
144
                    if (state.equals("DOWN")) {
145
                        activated = false;
146
 
147
                        sendToMenuSys("<deactivates />");
148
                    }
149
                }
150
            } else if (element.equals("padRight") && attributes.containsKey("state") && attributes.containsKey("level")) {
151
                //user pressed padright on his remote
152
                //we should traverse forward one step 
153
                String state = (String)attributes.get("state");
154
                int level = Integer.parseInt((String)attributes.get("level"));
155
 
156
                if (level >= 2) {
157
                    if (state.equals("DOWN")) {
158
                    }
159
                }
160
 
161
            } else if (element.equals("padOk") && attributes.containsKey("state") && attributes.containsKey("level")) {
162
                //user pressed padOk on his remote
163
                // 
164
                String state = (String)attributes.get("state");
165
                int level = Integer.parseInt((String)attributes.get("level"));
166
 
167
                if (level >= 3) {
168
                    if (state.equals("DOWN")) {
169
                    }
170
                }
171
 
172
            } else if (element.equals("padUp") && attributes.containsKey("state") && attributes.containsKey("level")) {
173
                //user pressed padright on his remote
174
                //we should traverse forward one step 
175
                String state = (String)attributes.get("state");
176
                int level = Integer.parseInt((String)attributes.get("level"));
177
 
178
                if (level >= 1) {
179
                    if (state.equals("DOWN")) {
180
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>1</scroll></command></packet>");
181
                    } else {
182
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>0</scroll></command></packet>");
183
                    }
184
                }
185
 
186
            } else if (element.equals("padDown") && attributes.containsKey("state") && attributes.containsKey("level")) {
187
                //user pressed padright on his remote
188
                //we should traverse forward one step 
189
                String state = (String)attributes.get("state");
190
                int level = Integer.parseInt((String)attributes.get("level"));
191
 
192
                if (level >= 1) {
193
                    if (state.equals("DOWN")) {
194
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>-1</scroll></command></packet>");
195
                    } else {
196
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>0</scroll></command></packet>");
197
                    }
198
                }
199
 
200
            } else if (element.equals("middleid") && attributes.containsKey("value") && attributes.containsKey("menuid") && attributes.containsKey("userlevel")) {
201
                String middleId = (String)attributes.get("value");
202
                String menuId = (String)attributes.get("menuid");
203
                int userlevel = 0;
204
                try {
205
                    userlevel = Integer.parseInt((String)attributes.get("userlevel"));
206
                } catch (NumberFormatException ex) {
207
                    _errors.println("There was a faulty userlevel sent to me: " + (String)attributes.get("userlevel"));
208
                }
209
 
210
                if (userlevel >= 2 && menuId.equals("MainMenu")) {
211
                    menuMiddleId = middleId;
212
                }              
213
            }
214
 
215
        }
216
 
217
        public void XMLendElement(String element) {}
218
        public void XMLelementData(String data) {}
219
        public void XMLdocumentStart() {}
220
        public void XMLdocumentEnd() {}
221
    }
222
 
223
}