refactored VamsasClient to jalview.gui, and created Vamsas session menu.
[jalview.git] / src / jalview / gui / VamsasClient.java
diff --git a/src/jalview/gui/VamsasClient.java b/src/jalview/gui/VamsasClient.java
new file mode 100755 (executable)
index 0000000..d17f746
--- /dev/null
@@ -0,0 +1,138 @@
+/**
+ * 
+ */
+package jalview.gui;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.Vector;
+import java.util.jar.JarOutputStream;
+
+import javax.swing.JInternalFrame;
+
+import jalview.bin.Cache;
+
+import org.vamsas.client.UserHandle;
+import org.vamsas.client.simpleclient.FileWatcher;
+import org.vamsas.client.simpleclient.VamsasArchive;
+import org.vamsas.client.simpleclient.VamsasFile;
+import org.vamsas.objects.core.VamsasDocument;
+import org.vamsas.test.simpleclient.ArchiveClient;
+
+/**
+ * @author jimp
+ *
+ */
+public class VamsasClient extends ArchiveClient {
+       Desktop us;
+       // Cache.preferences for vamsas client session arena
+       // preferences for check for default session at startup.
+       // user and organisation stuff.
+       public VamsasClient(Desktop jdesktop,
+                       String sessionPath) {
+               super("Jalview User", "Dundee", // new org.vamsas.client.ClientHandle("jalview","2.7"),
+                               sessionPath);
+               us=jdesktop;
+       }
+       public void initial_update() {
+               Cache.log.info("Jalview loading the Vamsas Session.");
+               // load in the vamsas archive for the first time
+               
+               // VamsasArchive doc = new VamsasArchive();
+       }
+       public void get_update(VamsasArchive doc) {
+               Cache.log.info("Jalview updating from Vamsas Session.");
+       }
+       public void push_update() {
+               // collect all uncached alignments and put them into the vamsas dataset.
+               // store them.
+               Cache.log.info("Jalview updating the Vamsas Session.");
+       }
+       public void end_session() {
+               // stop any update/watcher thread.
+               Cache.log.info("Jalview disconnecting from the Vamsas Session.");
+       }
+       public void updateVamsasDocument(VamsasDocument doc) {
+               // wander through frames 
+               JInternalFrame[] frames = Desktop.desktop.getAllFrames();
+
+        if (frames == null)
+        {
+            return;
+        }
+
+        try
+        {      
+               Vector shortNames = new Vector();
+               
+               //REVERSE ORDER
+            for (int i = frames.length - 1; i > -1; i--)
+            {
+                if (frames[i] instanceof AlignFrame)
+                {
+                       AlignFrame af = (AlignFrame) frames[i];
+                       // check if this frame has an associated alignment object ?
+                       // update alignment and root from frame.
+                       
+                       
+                    String shortName = af.getTitle();
+
+                    if (shortName.indexOf(File.separatorChar) > -1)
+                    {
+                        shortName = shortName.substring(shortName.lastIndexOf(
+                                    File.separatorChar) + 1);
+                    }
+
+                    int count = 1;
+
+                    while (shortNames.contains(shortName))
+                    {
+                        if (shortName.endsWith("_" + (count - 1)))
+                        {
+                            shortName = shortName.substring(0,
+                                    shortName.lastIndexOf("_"));
+                        }
+
+                        shortName = shortName.concat("_" + count);
+                        count++;
+                    }
+
+                    shortNames.addElement(shortName);
+
+                    if (!shortName.endsWith(".xml"))
+                    {
+                        shortName = shortName + ".xml";
+                    }
+
+                }
+            }
+        }
+        catch (Exception e) {
+               Cache.log.error("Vamsas Document store exception",e);
+        }
+       }
+       protected class VamsasClientWatcher extends Thread implements Runnable {
+               /* (non-Javadoc)
+                * @see java.lang.Thread#run()
+                */
+               VamsasClient client=null;
+               VamsasClientWatcher(VamsasClient client) {
+                       this.client = client;
+               }
+               public void run() {
+                       VamsasArchive docio = client.watch(0);
+                       client.get_update(docio);
+               }
+               
+       }
+       /**
+        * @param args
+        */
+       public static void main(String[] args) {
+               // TODO Auto-generated method stub
+
+       }
+
+}