applied LGPLv3 and source code formatting.
[vamsas.git] / src / uk / ac / vamsas / client / picking / TestApp.java
1 /*\r
2  * This file is part of the Vamsas Client version 0.1. \r
3  * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite, \r
4  *  Andrew Waterhouse and Dominik Lindner.\r
5  * \r
6  * Earlier versions have also been incorporated into Jalview version 2.4 \r
7  * since 2008, and TOPALi version 2 since 2007.\r
8  * \r
9  * The Vamsas Client is free software: you can redistribute it and/or modify\r
10  * it under the terms of the GNU Lesser General Public License as published by\r
11  * the Free Software Foundation, either version 3 of the License, or\r
12  * (at your option) any later version.\r
13  *  \r
14  * The Vamsas Client is distributed in the hope that it will be useful,\r
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
17  * GNU Lesser General Public License for more details.\r
18  * \r
19  * You should have received a copy of the GNU Lesser General Public License\r
20  * along with the Vamsas Client.  If not, see <http://www.gnu.org/licenses/>.\r
21  */\r
22 package uk.ac.vamsas.client.picking;\r
23 \r
24 import java.util.logging.*;\r
25 \r
26 import uk.ac.vamsas.objects.core.Input;\r
27 import uk.ac.vamsas.objects.core.Pos;\r
28 import uk.ac.vamsas.objects.core.Seg;\r
29 \r
30 /**\r
31  * Simple example of a (runnable) class that shows how to use the picking API.\r
32  * use this to test new messages. Bear in mind that any active pick server only\r
33  * relays messages that could be parsed at compile time - that means that you\r
34  * must make sure that you close all currently running vamsas pick servers and\r
35  * start a new one which copes with the new message in order to be able to\r
36  * receive any of the new message classes.\r
37  */\r
38 public class TestApp implements IMessageHandler {\r
39   public static void main(String[] args) throws Exception {\r
40     TestApp app = new TestApp();\r
41   }\r
42 \r
43   public TestApp() {\r
44     IPickManager manager = new SocketManager();\r
45     manager.registerMessageHandler(this);\r
46     while (true) {\r
47       try {\r
48         Thread.sleep((int) (Math.random() * 5000));\r
49       } catch (InterruptedException e) {\r
50       }\r
51 \r
52       int rnd = (int) (Math.random() * 100);\r
53       CustomMessage msg = new CustomMessage("" + rnd);\r
54 \r
55       manager.sendMessage(msg);\r
56 \r
57       try {\r
58         Thread.sleep((int) (Math.random() * 5000));\r
59       } catch (InterruptedException e) {\r
60       }\r
61 \r
62       MouseOverMessage mom = new MouseOverMessage("wibble", 10);\r
63       manager.sendMessage(mom);\r
64 \r
65       try {\r
66         Thread.sleep((int) (Math.random() * 5000));\r
67       } catch (InterruptedException e) {\r
68       }\r
69 \r
70       try {\r
71         Input range = new Input();\r
72         for (int in = 0, inL = (2 + ((int) (Math.random() * 10f))); in < inL; in++) {\r
73           if ((inL % 2) == 1) {\r
74             Seg sg = new Seg();\r
75             sg.setStart((int) (Math.random() * 1000f));\r
76             sg.setEnd((int) (Math.random() * 1000f));\r
77             sg.setInclusive((((int) (Math.random() * 10f)) % 2) == 0);\r
78             range.addSeg(sg);\r
79           } else {\r
80             Pos p = new Pos();\r
81             p.setI((int) (Math.random() * 1000f));\r
82             range.addPos(p);\r
83           }\r
84         }\r
85         String[] ids = new String[(int) (Math.random() * 10)];\r
86         for (int id = 0; id < ids.length; id++) {\r
87           ids[id] = "object" + id;\r
88         }\r
89 \r
90         SelectionMessage sel = new SelectionMessage("mysel", ids,\r
91             (ids.length > 0) ? range : null, (ids.length == 0) ? true : false);\r
92         sel.validate();\r
93         manager.sendMessage(sel);\r
94       } catch (Exception e) {\r
95         System.err.println("Failed to construct and send selection message.");\r
96         e.printStackTrace();\r
97       }\r
98     }\r
99   }\r
100 \r
101   public void handleMessage(Message message) {\r
102     System.out.println("Handler received " + message.getRawMessage());\r
103     if (message instanceof MouseOverMessage) {\r
104       MouseOverMessage mm = (MouseOverMessage) message;\r
105       System.out.println("MouseOver : " + mm.getPosition() + " on id "\r
106           + mm.getVorbaID());\r
107     }\r
108     if (message instanceof SelectionMessage) {\r
109       SelectionMessage sm = (SelectionMessage) message;\r
110 \r
111       System.out.println("Selection "\r
112           + ((sm.getSelectionID() == null) ? "on " : "'" + sm.getSelectionID()\r
113               + "' on ")\r
114           + sm.getVorbaIDs().length\r
115           + ((sm.getRanges() == null) ? "." : " over "\r
116               + ((sm.getRanges().getPosCount() > 0) ? ""\r
117                   + sm.getRanges().getPosCount() + " positions" : ""\r
118                   + sm.getRanges().getSegCount() + "intervals.")));\r
119     }\r
120   }\r
121 }\r