X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FVamsasApplication.java;h=d2086e0788a736b71acc3cfd51dbb4b463756ca7;hb=53b99b41ed7f26f2724f3ed87d524eb83c5208f4;hp=16da5db1b31cd84cfdfbe5987a7784108cf2579d;hpb=9dfdf03ab75e5d95a8aba4ddf77e18730548b9f5;p=jalview.git
diff --git a/src/jalview/gui/VamsasApplication.java b/src/jalview/gui/VamsasApplication.java
index 16da5db..d2086e0 100644
--- a/src/jalview/gui/VamsasApplication.java
+++ b/src/jalview/gui/VamsasApplication.java
@@ -1,26 +1,29 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.gui;
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.HiddenColumns;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.io.VamsasAppDatastore;
@@ -28,24 +31,24 @@ import jalview.structure.SelectionListener;
import jalview.structure.SelectionSource;
import jalview.structure.StructureSelectionManager;
import jalview.structure.VamsasListener;
+import jalview.structure.VamsasSource;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
-import java.util.Enumeration;
import java.util.Hashtable;
import java.util.IdentityHashMap;
import java.util.Iterator;
import javax.swing.JInternalFrame;
-import javax.swing.JOptionPane;
import uk.ac.vamsas.client.ClientHandle;
import uk.ac.vamsas.client.IClient;
import uk.ac.vamsas.client.IClientDocument;
import uk.ac.vamsas.client.InvalidSessionDocumentException;
-import uk.ac.vamsas.client.NoDefaultSessionException;
import uk.ac.vamsas.client.UserHandle;
import uk.ac.vamsas.client.VorbaId;
import uk.ac.vamsas.client.picking.IMessageHandler;
@@ -62,7 +65,7 @@ import uk.ac.vamsas.objects.core.Seg;
* @author jimp
*
*/
-public class VamsasApplication implements SelectionSource
+public class VamsasApplication implements SelectionSource, VamsasSource
{
IClient vclient = null;
@@ -72,16 +75,19 @@ public class VamsasApplication implements SelectionSource
Desktop jdesktop = null; // our jalview desktop reference
+ private boolean inInitialUpdate = true;
+
// Cache.preferences for vamsas client session arena
// preferences for check for default session at startup.
// user and organisation stuff.
- public VamsasApplication(Desktop jdesktop, File sessionPath)
+ public VamsasApplication(Desktop jdesktop, File sessionPath,
+ String sessionName)
{
// JBPNote:
// we should create a session URI from the sessionPath and pass it to
// the clientFactory - but the vamsas api doesn't cope with that yet.
this.jdesktop = jdesktop;
- initClientSession(null, sessionPath);
+ initClientSession(null, sessionPath, sessionName);
}
private static uk.ac.vamsas.client.IClientFactory getClientFactory()
@@ -115,7 +121,7 @@ public class VamsasApplication implements SelectionSource
/**
* @throws IOException
- * or other if clientfactory instantiation failed.
+ * or other if clientfactory instantiation failed.
* @return list of current sessions or null if no session exists.
*/
public static String[] getSessionList() throws Exception
@@ -128,12 +134,18 @@ public class VamsasApplication implements SelectionSource
* session
*
* @param sess
- * null or a valid session url
+ * null or a valid session url
* @param vamsasDocument
- * null or a valid vamsas document file
+ * null or a valid vamsas document file
* @return false if no vamsas connection was made
*/
- private boolean initClientSession(String sess, File vamsasDocument)
+ private void initClientSession(String sess, File vamsasDocument)
+ {
+ initClientSession(sess, vamsasDocument, null);
+ }
+
+ private boolean initClientSession(String sess, File vamsasDocument,
+ String newDocSessionName)
{
try
{
@@ -144,22 +156,30 @@ public class VamsasApplication implements SelectionSource
{
if (sess != null)
{
- throw new Error(
- "Implementation Error - cannot import existing vamsas document into an existing session, Yet!");
+ throw new Error(MessageManager.getString(
+ "error.implementation_error_cannot_import_vamsas_doc"));
}
try
{
- vclient = clientfactory.openAsNewSessionIClient(app,
- vamsasDocument);
+ if (newDocSessionName != null)
+ {
+ vclient = clientfactory.openAsNewSessionIClient(app,
+ vamsasDocument, newDocSessionName);
+ }
+ else
+ {
+ vclient = clientfactory.openAsNewSessionIClient(app,
+ vamsasDocument);
+ }
} catch (InvalidSessionDocumentException e)
{
- JOptionPane
- .showInternalMessageDialog(
- Desktop.desktop,
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- "VAMSAS Document could not be opened as a new session - please choose another",
- "VAMSAS Document Import Failed",
- JOptionPane.ERROR_MESSAGE);
+ MessageManager.getString(
+ "label.vamsas_doc_couldnt_be_opened_as_new_session"),
+ MessageManager
+ .getString("label.vamsas_document_import_failed"),
+ JvOptionPane.ERROR_MESSAGE);
}
}
@@ -181,8 +201,8 @@ public class VamsasApplication implements SelectionSource
} catch (Exception e)
{
- jalview.bin.Cache.log
- .error("Couldn't instantiate vamsas client !", e);
+ jalview.bin.Cache.log.error("Couldn't instantiate vamsas client !",
+ e);
return false;
}
return true;
@@ -205,16 +225,14 @@ public class VamsasApplication implements SelectionSource
}
} catch (Error e)
{
- Cache.log
- .warn(
- "Probable SERIOUS VAMSAS client incompatibility - carrying on regardless",
- e);
+ Cache.log.warn(
+ "Probable SERIOUS VAMSAS client incompatibility - carrying on regardless",
+ e);
} catch (Exception e)
{
- Cache.log
- .warn(
- "Probable VAMSAS client incompatibility - carrying on regardless",
- e);
+ Cache.log.warn(
+ "Probable VAMSAS client incompatibility - carrying on regardless",
+ e);
}
}
@@ -225,8 +243,8 @@ public class VamsasApplication implements SelectionSource
*/
private ClientHandle getJalviewHandle()
{
- return new ClientHandle("jalview.bin.Jalview", jalview.bin.Cache
- .getProperty("VERSION"));
+ return new ClientHandle("jalview.bin.Jalview",
+ jalview.bin.Cache.getProperty("VERSION"));
}
/**
@@ -246,15 +264,17 @@ public class VamsasApplication implements SelectionSource
{
if (!inSession())
{
- throw new Error(
- "Impementation error! Vamsas Operations when client not initialised and connected.");
+ throw new Error(MessageManager.getString(
+ "error.implementation_error_vamsas_operation_not_init"));
}
addDocumentUpdateHandler();
addStoreDocumentHandler();
startSession();
- Cache.log
- .debug("Jalview loading the Vamsas Session for the first time.");
+ inInitialUpdate = true;
+ Cache.log.debug(
+ "Jalview loading the Vamsas Session for the first time.");
dealWithDocumentUpdate(false); // we don't push an update out to the
+ inInitialUpdate = false;
// document yet.
Cache.log.debug("... finished update for the first time.");
}
@@ -286,10 +306,9 @@ public class VamsasApplication implements SelectionSource
}
} catch (Exception e)
{
- Cache.log
- .warn(
- "Exception whilst refreshing jalview windows after a vamsas document update.",
- e);
+ Cache.log.warn(
+ "Exception whilst refreshing jalview windows after a vamsas document update.",
+ e);
}
}
@@ -298,43 +317,58 @@ public class VamsasApplication implements SelectionSource
Thread udthread = new Thread(new Runnable()
{
+ @Override
public void run()
{
Cache.log.info("Jalview updating to the Vamsas Session.");
dealWithDocumentUpdate(true);
- /*
- * IClientDocument cdoc=null; try { cdoc = vclient.getClientDocument(); }
- * catch (Exception e) { Cache.log.error("Failed to get client document
- * for update."); // RAISE A WARNING DIALOG disableGui(false); return; }
- * updateVamsasDocument(cdoc); updateJalviewGui();
- * cdoc.setVamsasRoots(cdoc.getVamsasRoots()); // propagate update flags
- * back vclient.updateDocument(cdoc);
- */
Cache.log.info("Jalview finished updating to the Vamsas Session.");
- // TODO Auto-generated method stub
}
});
udthread.start();
}
+ /**
+ * leave a session, prompting the user to save if necessary
+ */
public void end_session()
{
+ end_session(true);
+ }
+
+ private boolean promptUser = true;
+
+ /**
+ * leave a session, optionally prompting the user to save if necessary
+ *
+ * @param promptUser
+ * when true enable prompting by this application
+ */
+
+ public void end_session(boolean promptUser)
+ {
if (!inSession())
- throw new Error("Jalview not connected to Vamsas session.");
+ {
+ throw new Error(MessageManager
+ .getString("error.jalview_no_connected_vamsas_session"));
+ }
Cache.log.info("Jalview disconnecting from the Vamsas Session.");
try
{
if (joinedSession)
{
+ boolean ourprompt = this.promptUser;
+ this.promptUser = promptUser;
vclient.finalizeClient();
Cache.log.info("Jalview has left the session.");
+ this.promptUser = ourprompt; // restore default value
}
else
{
- Cache.log
- .warn("JV Client leaving a session that's its not joined yet.");
+ Cache.log.warn(
+ "JV Client leaving a session that's its not joined yet.");
}
joinedSession = false;
vclient = null;
@@ -409,9 +443,11 @@ public class VamsasApplication implements SelectionSource
* bindings is made.
*
* @param doc
+ * @return number of views stored in document (updated and new views)
*/
- public void updateVamsasDocument(IClientDocument doc)
+ public int updateVamsasDocument(IClientDocument doc)
{
+ int storedviews = 0;
ensureJvVamsas();
errorsDuringUpdate = false;
errorsDuringAppUpdate = false;
@@ -423,7 +459,7 @@ public class VamsasApplication implements SelectionSource
if (frames == null)
{
- return;
+ return 0;
}
Hashtable skipList = new Hashtable();
Hashtable viewset = new Hashtable();
@@ -446,11 +482,10 @@ public class VamsasApplication implements SelectionSource
} catch (Exception e)
{
errorsDuringUpdate = true;
- Cache.log.error("Exception synchronizing "
- + af.getTitle()
+ Cache.log.error("Exception synchronizing " + af.getTitle()
+ " "
- + (af.getViewport().viewName == null ? "" : " view "
- + af.getViewport().viewName)
+ + (af.getViewport().viewName == null ? ""
+ : " view " + af.getViewport().viewName)
+ " to document.", e);
stored = false;
}
@@ -460,6 +495,7 @@ public class VamsasApplication implements SelectionSource
}
else
{
+ storedviews++;
// could try to eliminate sequenceSetId from skiplist ..
// (skipList.containsKey(af.getViewport().getSequenceSetId()))
// remember sequenceSetId so we can skip all the other views on
@@ -505,6 +541,7 @@ public class VamsasApplication implements SelectionSource
errorsDuringAppUpdate = true;
}
vds.clearSkipList();
+ return storedviews;
}
private Entry baseProvEntry()
@@ -521,10 +558,12 @@ public class VamsasApplication implements SelectionSource
* do a vamsas document update or update jalview from the vamsas document
*
* @param fromJalview
- * true to update from jalview to the vamsas document
+ * true to update from jalview to the vamsas document
+ * @return total number of stored alignments in the document after the update
*/
- protected void dealWithDocumentUpdate(boolean fromJalview)
+ protected int dealWithDocumentUpdate(boolean fromJalview)
{
+ int storedviews = 0;
// called by update handler for document update.
Cache.log.debug("Updating jalview from changed vamsas document.");
disableGui(true);
@@ -540,11 +579,11 @@ public class VamsasApplication implements SelectionSource
}
if (fromJalview)
{
- this.updateVamsasDocument(cdoc);
+ storedviews += updateVamsasDocument(cdoc);
if (Cache.log.isDebugEnabled())
{
- Cache.log
- .debug("Time taken to update Vamsas Document from jalview\t= "
+ Cache.log.debug(
+ "Time taken to update Vamsas Document from jalview\t= "
+ (System.currentTimeMillis() - time));
time = System.currentTimeMillis();
}
@@ -561,8 +600,8 @@ public class VamsasApplication implements SelectionSource
updateJalview(cdoc);
if (Cache.log.isDebugEnabled())
{
- Cache.log
- .debug("Time taken to update Jalview from vamsas document Roots\t= "
+ Cache.log.debug(
+ "Time taken to update Jalview from vamsas document Roots\t= "
+ (System.currentTimeMillis() - time));
time = System.currentTimeMillis();
}
@@ -582,10 +621,12 @@ public class VamsasApplication implements SelectionSource
ee.printStackTrace(System.err);
// recover object map backup, since its probably corrupted with references
// to Vobjects that don't exist anymore.
- this.recover_objectMappingBackup();
+ recover_objectMappingBackup();
+ storedviews = 0;
}
Cache.log.debug("Finished updating from document change.");
disableGui(false);
+ return storedviews;
}
private void addDocumentUpdateHandler()
@@ -593,6 +634,7 @@ public class VamsasApplication implements SelectionSource
final VamsasApplication client = this;
vclient.addDocumentUpdateHandler(new PropertyChangeListener()
{
+ @Override
public void propertyChange(PropertyChangeEvent evt)
{
Cache.log.debug("Dealing with document update event.");
@@ -610,26 +652,35 @@ public class VamsasApplication implements SelectionSource
uk.ac.vamsas.client.Events.DOCUMENT_REQUESTTOCLOSE,
new PropertyChangeListener()
{
+ @Override
public void propertyChange(PropertyChangeEvent evt)
{
- Cache.log
- .debug("Asking user if the vamsas session should be stored.");
- int reply = JOptionPane
- .showInternalConfirmDialog(
- Desktop.desktop,
- "The current VAMSAS session has unsaved data - do you want to save it ?",
- "VAMSAS Session Shutdown",
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
-
- if (reply == JOptionPane.YES_OPTION)
+ if (client.promptUser)
+ {
+ Cache.log.debug(
+ "Asking user if the vamsas session should be stored.");
+ int reply = JvOptionPane.showInternalConfirmDialog(
+ Desktop.desktop,
+ "The current VAMSAS session has unsaved data - do you want to save it ?",
+ "VAMSAS Session Shutdown",
+ JvOptionPane.YES_NO_OPTION,
+ JvOptionPane.QUESTION_MESSAGE);
+
+ if (reply == JvOptionPane.YES_OPTION)
+ {
+ Cache.log.debug("Prompting for vamsas store filename.");
+ Desktop.instance.vamsasSave_actionPerformed(null);
+ Cache.log
+ .debug("Finished attempt at storing document.");
+ }
+ Cache.log.debug(
+ "finished dealing with REQUESTTOCLOSE event.");
+ }
+ else
{
- Cache.log.debug("Prompting for vamsas store filename.");
- Desktop.instance.vamsasSave_actionPerformed(null);
- Cache.log.debug("Finished attempt at storing document.");
+ Cache.log.debug(
+ "Ignoring store document request (promptUser==false)");
}
- Cache.log
- .debug("finished dealing with REQUESTTOCLOSE event.");
}
});
Cache.log.debug("Added Jalview handler for vamsas document updates.");
@@ -658,14 +709,20 @@ public class VamsasApplication implements SelectionSource
* IO failed
*
* @throws Error
- * if backup_objectMapping was not called.
+ * if backup_objectMapping was not called.
*/
public void recover_objectMappingBackup()
{
if (_backup_vobj2jv == null)
{
- throw new Error(
- "IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made.");
+ if (inInitialUpdate)
+ {
+ // nothing to recover so just
+ return;
+ }
+
+ throw new Error(MessageManager.getString(
+ "error.implementation_error_cannot_recover_vamsas_object_mappings"));
}
jv2vobj.clear();
Iterator el = _backup_jv2vobj.entrySet().iterator();
@@ -706,12 +763,13 @@ public class VamsasApplication implements SelectionSource
{
final IPickManager pm = vclient.getPickManager();
final StructureSelectionManager ssm = StructureSelectionManager
- .getStructureSelectionManager();
- final SelectionSource me = this;
+ .getStructureSelectionManager(Desktop.instance);
+ final VamsasApplication me = this;
pm.registerMessageHandler(new IMessageHandler()
{
String last = null;
+ @Override
public void handleMessage(Message message)
{
if (vobj2jv == null)
@@ -739,8 +797,8 @@ public class VamsasApplication implements SelectionSource
// Cache.log.debug("Handling Mouse over "+mm.getVorbaID()+"
// bound to "+jvobj+" at "+mm.getPosition());
// position is character position in aligned sequence
- ssm.mouseOverVamsasSequence((SequenceI) jvobj, mm
- .getPosition());
+ ssm.mouseOverVamsasSequence((SequenceI) jvobj,
+ mm.getPosition(), me);
}
}
if (message instanceof uk.ac.vamsas.client.picking.SelectionMessage)
@@ -748,12 +806,14 @@ public class VamsasApplication implements SelectionSource
// we only care about AlignmentSequence selections
SelectionMessage sm = (SelectionMessage) message;
sm.validate();
- System.err.println("Received\n"+sm.getRawMessage());
- Object[] jvobjs = sm.getVorbaIDs()==null ? null : new Object[sm.getVorbaIDs().length];
- if (jvobjs==null)
+ System.err.println("Received\n" + sm.getRawMessage());
+ Object[] jvobjs = sm.getVorbaIDs() == null ? null
+ : new Object[sm.getVorbaIDs().length];
+ if (jvobjs == null)
{
- // TODO: rationalise : can only clear a selection over a referred to object
- ssm.sendSelection(null,null,me);
+ // TODO: rationalise : can only clear a selection over a
+ // referred to object
+ ssm.sendSelection(null, null, null, me);
return;
}
Class type = null;
@@ -764,7 +824,7 @@ public class VamsasApplication implements SelectionSource
if (jvobjs[o] == null)
{
// can't cope with selections for unmapped objects
- //continue;
+ continue;
}
if (type == null)
{
@@ -773,9 +833,9 @@ public class VamsasApplication implements SelectionSource
;
if (type != jvobjs[o].getClass())
{
- send=false;
+ send = false;
// discard - can't cope with selections over mixed objects
- //continue;
+ // continue;
}
}
SequenceGroup jselection = null;
@@ -784,7 +844,8 @@ public class VamsasApplication implements SelectionSource
{
if (jvobjs.length == 1)
{
- // TODO if (sm.isNone())// send a message to select the specified columns over the
+ // TODO if (sm.isNone())// send a message to select the
+ // specified columns over the
// given
// alignment
@@ -797,15 +858,17 @@ public class VamsasApplication implements SelectionSource
SequenceI seq;
boolean aligned = ((jalview.datamodel.Sequence) jvobjs[0])
.getDatasetSequence() != null;
- int maxWidth=0;
+ int maxWidth = 0;
if (aligned)
{
jselection = new SequenceGroup();
- jselection.addSequence(seq =
- (jalview.datamodel.Sequence) jvobjs[0], false);
+ jselection.addSequence(
+ seq = (jalview.datamodel.Sequence) jvobjs[0],
+ false);
maxWidth = seq.getLength();
}
- for (int c = 1; aligned && jvobjs.length > 1 && c < jvobjs.length; c++)
+ for (int c = 1; aligned && jvobjs.length > 1
+ && c < jvobjs.length; c++)
{
if (((jalview.datamodel.Sequence) jvobjs[c])
.getDatasetSequence() == null)
@@ -816,12 +879,13 @@ public class VamsasApplication implements SelectionSource
else
{
jselection.addSequence(
- seq = (jalview.datamodel.Sequence) jvobjs[c], false);
- if (maxWidth 0) ? 1 : 0;
+
+ if (jselection.getStartRes() > 0
+ && prange[p + l] == jselection.getStartRes())
+ {
+ jselection.setStartRes(prange[p + l] - 1);
+ }
+ if (jselection.getEndRes() <= maxWidth && prange[p
+ + u] == (jselection.getEndRes() + 2))
{
- if (jselection!=null)
- {
- // set the bounds of the selected area using the first interval.
- jselection.setStartRes(prange[p]-1);
- jselection.setEndRes(prange[p+1]-1);
- rangeset=true;
- }
- } else {
- // try to join up adjacent columns to make a larger selection
- // lower and upper bounds
- int l=(d<0) ? 1 : 0;
- int u=(d>0) ? 1 : 0;
-
- if (jselection.getStartRes()>0 && prange[p+l]==jselection.getStartRes())
- {
- jselection.setStartRes(prange[p+l]-1);
- }
- if (jselection.getEndRes()<=maxWidth && prange[p+u]==(jselection.getEndRes()+2))
- {
- jselection.setEndRes(prange[p+u]-1);
- }
+ jselection.setEndRes(prange[p + u] - 1);
}
// mark all the columns in the range.
- for (int sr=prange[p],er=prange[p+1],de=er+d; sr!=de; sr+=d)
+ for (int sr = prange[p], er = prange[p + 1], de = er
+ + d; sr != de; sr += d)
{
- colsel.addElement(sr-1);
+ colsel.addElement(sr - 1);
}
}
}
@@ -887,7 +947,7 @@ public class VamsasApplication implements SelectionSource
}
if (send)
{
- ssm.sendSelection(jselection, colsel, me);
+ ssm.sendSelection(jselection, colsel, null, me);
}
// discard message.
for (int c = 0; c < jvobjs.length; c++)
@@ -906,17 +966,22 @@ public class VamsasApplication implements SelectionSource
int i = -1;
- public void mouseOver(SequenceI seq, int index)
+ @Override
+ public void mouseOverSequence(SequenceI seq, int index,
+ VamsasSource source)
{
if (jv2vobj == null)
+ {
return;
+ }
if (seq != last || i != index)
{
VorbaId v = (VorbaId) jv2vobj.get(seq);
if (v != null)
{
- Cache.log.debug("Mouse over " + v.getId() + " bound to "
- + seq + " at " + index);
+ // this should really be a trace message.
+ // Cache.log.debug("Mouse over " + v.getId() + " bound to "
+ // + seq + " at " + index);
last = seq;
i = index;
MouseOverMessage message = new MouseOverMessage(v.getId(),
@@ -929,32 +994,41 @@ public class VamsasApplication implements SelectionSource
selecter = new SelectionListener()
{
+ @Override
public void selection(SequenceGroup seqsel,
- ColumnSelection colsel, SelectionSource source)
+ ColumnSelection colsel, HiddenColumns hidden,
+ SelectionSource source)
{
- if (vobj2jv==null)
+ if (vobj2jv == null)
{
- Cache.log.warn("Selection listener still active for dead session.");
+ Cache.log.warn(
+ "Selection listener still active for dead session.");
// not in a session.
return;
}
if (source != me)
{
- AlignmentI visal=null;
+ AlignmentI visal = null;
if (source instanceof AlignViewport)
{
- visal = ((AlignViewport) source).getAlignment();
+ visal = ((AlignmentViewport) source).getAlignment();
}
SelectionMessage sm = null;
if ((seqsel == null || seqsel.getSize() == 0)
- && (colsel == null || colsel.getSelected() == null || colsel
- .getSelected().size() == 0))
+ && (colsel == null || colsel.getSelected() == null
+ || colsel.getSelected().size() == 0))
{
if (source instanceof AlignViewport)
{
// the empty selection.
- sm = new SelectionMessage("jalview", new String[] { ((AlignViewport)source).getSequenceSetId()}, null, true);
- } else {
+ sm = new SelectionMessage("jalview",
+ new String[]
+ { ((AlignmentViewport) source)
+ .getSequenceSetId() },
+ null, true);
+ }
+ else
+ {
// the empty selection.
sm = new SelectionMessage("jalview", null, null, true);
}
@@ -963,10 +1037,8 @@ public class VamsasApplication implements SelectionSource
{
String[] vobj = new String[seqsel.getSize()];
int o = 0;
- Enumeration sels = seqsel.getSequences(null).elements();
- while (sels.hasMoreElements())
+ for (SequenceI sel : seqsel.getSequences(null))
{
- SequenceI sel = (SequenceI) sels.nextElement();
VorbaId v = (VorbaId) jv2vobj.get(sel);
if (v != null)
{
@@ -981,39 +1053,57 @@ public class VamsasApplication implements SelectionSource
t = null;
}
Input range = null;
- if (seqsel!=null && colsel != null)
+ if (seqsel != null && colsel != null)
{
// deparse the colsel into positions on the vamsas alignment
// sequences
range = new Input();
- if (colsel.getSelected()!=null && colsel.getSelected().size()>0 && visal!=null && seqsel.getSize()==visal.getHeight())
+ if (colsel.getSelected() != null
+ && colsel.getSelected().size() > 0
+ && visal != null
+ && seqsel.getSize() == visal.getHeight())
{
- // gather selected columns outwith the sequence positions too
- Enumeration cols = colsel.getSelected().elements();
- while (cols.hasMoreElements())
+ // gather selected columns outwith the sequence positions
+ // too
+ for (Integer ival : colsel.getSelected())
{
- int ival = ((Integer) cols.nextElement()).intValue();
Pos p = new Pos();
- p.setI(ival+1);
+ p.setI(ival.intValue() + 1);
range.addPos(p);
}
- } else {
- int[] intervals = colsel.getVisibleContigs(seqsel.getStartRes(), seqsel.getEndRes()+1);
- for (int iv=0;iv 0)
+ {
+ sm = new SelectionMessage("jalview", vobj, range);
+ }
+ else
+ {
+ sm = null;
+ }
+ }
+ if (sm != null)
+ {
+ sm.validate(); // debug
+ Cache.log.debug("Selection Message\n" + sm.getRawMessage());
+ pm.sendMessage(sm);
}
- sm.validate(); // debug
- Cache.log.debug("Selection Message\n"+sm.getRawMessage());
- pm.sendMessage(sm);
}
}
@@ -1026,4 +1116,13 @@ public class VamsasApplication implements SelectionSource
}
}
}
+
+ public String getCurrentSession()
+ {
+ if (vclient != null)
+ {
+ return (vclient.getSessionUrn());
+ }
+ return null;
+ }
}