Subversion Repositories HomeAutomation

Rev

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

  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. }