applied LGPLv3 and source code formatting.
[vamsas.git] / src / uk / ac / vamsas / client / picking / TestApp.java
index 50b338a..72a49a5 100644 (file)
+/*\r
+ * This file is part of the Vamsas Client version 0.1. \r
+ * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite, \r
+ *  Andrew Waterhouse and Dominik Lindner.\r
+ * \r
+ * Earlier versions have also been incorporated into Jalview version 2.4 \r
+ * since 2008, and TOPALi version 2 since 2007.\r
+ * \r
+ * The Vamsas Client is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *  \r
+ * The Vamsas Client is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU Lesser General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with the Vamsas Client.  If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
 package uk.ac.vamsas.client.picking;\r
 \r
 import java.util.logging.*;\r
 \r
+import uk.ac.vamsas.objects.core.Input;\r
+import uk.ac.vamsas.objects.core.Pos;\r
+import uk.ac.vamsas.objects.core.Seg;\r
+\r
 /**\r
  * Simple example of a (runnable) class that shows how to use the picking API.\r
+ * use this to test new messages. Bear in mind that any active pick server only\r
+ * relays messages that could be parsed at compile time - that means that you\r
+ * must make sure that you close all currently running vamsas pick servers and\r
+ * start a new one which copes with the new message in order to be able to\r
+ * receive any of the new message classes.\r
  */\r
-public class TestApp implements IMessageHandler\r
-{\r
-       public static void main(String[] args)\r
-               throws Exception\r
-       {\r
-               TestApp app = new TestApp();\r
-       }\r
-       \r
-       public TestApp()\r
-       {\r
-               IPickManager manager = new SocketManager();\r
-               manager.registerMessageHandler(this);\r
-               \r
-               while (true)\r
-               {                       \r
-                       try { Thread.sleep((int) (Math.random()*20000)); }\r
-                       catch (InterruptedException e) {}\r
-                       \r
-                       int rnd = (int) (Math.random()*100);\r
-                       CustomMessage msg = new CustomMessage("" + rnd);\r
-                       \r
-//                     manager.sendMessage(msg);\r
-\r
-                       MouseOverMessage mom = new MouseOverMessage("wibble", 10);\r
-                       manager.sendMessage(mom);\r
-               }\r
-       }\r
-       \r
-       public void handleMessage(Message message)\r
-       {\r
-//             System.out.println("Handler received " + message.getRawMessage());\r
-       }\r
-}
\ No newline at end of file
+public class TestApp implements IMessageHandler {\r
+  public static void main(String[] args) throws Exception {\r
+    TestApp app = new TestApp();\r
+  }\r
+\r
+  public TestApp() {\r
+    IPickManager manager = new SocketManager();\r
+    manager.registerMessageHandler(this);\r
+    while (true) {\r
+      try {\r
+        Thread.sleep((int) (Math.random() * 5000));\r
+      } catch (InterruptedException e) {\r
+      }\r
+\r
+      int rnd = (int) (Math.random() * 100);\r
+      CustomMessage msg = new CustomMessage("" + rnd);\r
+\r
+      manager.sendMessage(msg);\r
+\r
+      try {\r
+        Thread.sleep((int) (Math.random() * 5000));\r
+      } catch (InterruptedException e) {\r
+      }\r
+\r
+      MouseOverMessage mom = new MouseOverMessage("wibble", 10);\r
+      manager.sendMessage(mom);\r
+\r
+      try {\r
+        Thread.sleep((int) (Math.random() * 5000));\r
+      } catch (InterruptedException e) {\r
+      }\r
+\r
+      try {\r
+        Input range = new Input();\r
+        for (int in = 0, inL = (2 + ((int) (Math.random() * 10f))); in < inL; in++) {\r
+          if ((inL % 2) == 1) {\r
+            Seg sg = new Seg();\r
+            sg.setStart((int) (Math.random() * 1000f));\r
+            sg.setEnd((int) (Math.random() * 1000f));\r
+            sg.setInclusive((((int) (Math.random() * 10f)) % 2) == 0);\r
+            range.addSeg(sg);\r
+          } else {\r
+            Pos p = new Pos();\r
+            p.setI((int) (Math.random() * 1000f));\r
+            range.addPos(p);\r
+          }\r
+        }\r
+        String[] ids = new String[(int) (Math.random() * 10)];\r
+        for (int id = 0; id < ids.length; id++) {\r
+          ids[id] = "object" + id;\r
+        }\r
+\r
+        SelectionMessage sel = new SelectionMessage("mysel", ids,\r
+            (ids.length > 0) ? range : null, (ids.length == 0) ? true : false);\r
+        sel.validate();\r
+        manager.sendMessage(sel);\r
+      } catch (Exception e) {\r
+        System.err.println("Failed to construct and send selection message.");\r
+        e.printStackTrace();\r
+      }\r
+    }\r
+  }\r
+\r
+  public void handleMessage(Message message) {\r
+    System.out.println("Handler received " + message.getRawMessage());\r
+    if (message instanceof MouseOverMessage) {\r
+      MouseOverMessage mm = (MouseOverMessage) message;\r
+      System.out.println("MouseOver : " + mm.getPosition() + " on id "\r
+          + mm.getVorbaID());\r
+    }\r
+    if (message instanceof SelectionMessage) {\r
+      SelectionMessage sm = (SelectionMessage) message;\r
+\r
+      System.out.println("Selection "\r
+          + ((sm.getSelectionID() == null) ? "on " : "'" + sm.getSelectionID()\r
+              + "' on ")\r
+          + sm.getVorbaIDs().length\r
+          + ((sm.getRanges() == null) ? "." : " over "\r
+              + ((sm.getRanges().getPosCount() > 0) ? ""\r
+                  + sm.getRanges().getPosCount() + " positions" : ""\r
+                  + sm.getRanges().getSegCount() + "intervals.")));\r
+    }\r
+  }\r
+}\r