new Selection message. This still needs work!
[vamsas.git] / src / uk / ac / vamsas / client / picking / TestApp.java
1 package uk.ac.vamsas.client.picking;\r
2 \r
3 import java.util.logging.*;\r
4 \r
5 import uk.ac.vamsas.objects.core.Input;\r
6 import uk.ac.vamsas.objects.core.Pos;\r
7 import uk.ac.vamsas.objects.core.Seg;\r
8 \r
9 /**\r
10  * Simple example of a (runnable) class that shows how to use the picking API.\r
11  * use this to test new messages. Bear in mind that any active pick server only\r
12  * relays messages that could be parsed at compile time - that means that you\r
13  * must make sure that you close all currently running vamsas pick servers and\r
14  * start a new one which copes with the new message in order to be able to\r
15  * receive any of the new message classes.\r
16  */\r
17 public class TestApp implements IMessageHandler {\r
18   public static void main(String[] args) throws Exception {\r
19     TestApp app = new TestApp();\r
20   }\r
21 \r
22   public TestApp() {\r
23     IPickManager manager = new SocketManager();\r
24     manager.registerMessageHandler(this);\r
25     while (true) {\r
26       try {\r
27         Thread.sleep((int) (Math.random() * 5000));\r
28       } catch (InterruptedException e) {\r
29       }\r
30 \r
31       int rnd = (int) (Math.random() * 100);\r
32       CustomMessage msg = new CustomMessage("" + rnd);\r
33 \r
34       manager.sendMessage(msg);\r
35 \r
36       try {\r
37         Thread.sleep((int) (Math.random() * 5000));\r
38       } catch (InterruptedException e) {\r
39       }\r
40 \r
41       MouseOverMessage mom = new MouseOverMessage("wibble", 10);\r
42       manager.sendMessage(mom);\r
43 \r
44       try {\r
45         Thread.sleep((int) (Math.random() * 5000));\r
46       } catch (InterruptedException e) {\r
47       }\r
48 \r
49       try {\r
50         Input range = new Input();\r
51         for (int in = 0, inL = (2 + ((int) (Math.random() * 10f))); in < inL; in++) {\r
52           if ((inL % 2) == 1) {\r
53             Seg sg = new Seg();\r
54             sg.setStart((int) (Math.random() * 1000f));\r
55             sg.setEnd((int) (Math.random() * 1000f));\r
56             sg.setInclusive((((int) (Math.random() * 10f)) % 2) == 0);\r
57             range.addSeg(sg);\r
58           } else {\r
59             Pos p = new Pos();\r
60             p.setI((int) (Math.random() * 1000f));\r
61             range.addPos(p);\r
62           }\r
63         }\r
64         String[] ids = new String[(int) (Math.random() * 10)];\r
65         for (int id = 0; id < ids.length; id++) {\r
66           ids[id] = "object" + id;\r
67         }\r
68         \r
69         SelectionMessage sel = new SelectionMessage("mysel", ids, (ids.length>0) ? range : null,(ids.length==0) ? true : false);\r
70         sel.validate();\r
71         manager.sendMessage(sel);\r
72       } catch (Exception e) {\r
73         System.err.println("Failed to construct and send selection message.");\r
74         e.printStackTrace();\r
75       }\r
76     }\r
77   }\r
78 \r
79   public void handleMessage(Message message) {\r
80     System.out.println("Handler received " + message.getRawMessage());\r
81     if (message instanceof MouseOverMessage) {\r
82       MouseOverMessage mm = (MouseOverMessage) message;\r
83       System.out.println("MouseOver : " + mm.getPosition() + " on id "\r
84           + mm.getVorbaID());\r
85     }\r
86     if (message instanceof SelectionMessage) {\r
87       SelectionMessage sm = (SelectionMessage) message;\r
88 \r
89       System.out.println("Selection "\r
90           + ((sm.getSelectionID() == null) ? "on " : "'" + sm.getSelectionID()\r
91               + "' on ")\r
92           + sm.getVorbaIDs().length\r
93           + ((sm.getRanges() == null) ? "." : " over "\r
94               + ((sm.getRanges().getPosCount() > 0) ? ""\r
95                   + sm.getRanges().getPosCount() + " positions" : ""\r
96                   + sm.getRanges().getSegCount() + "intervals.")));\r
97     }\r
98   }\r
99 }