X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FVamsasApplication.java;h=6444667736e08e625e551e928a7481b719b4945c;hb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;hp=777d71bbeef0d60da9df32b6a636b08530bdaed2;hpb=3642de417a2240bef7edc3810a0d0cbe24b03da3;p=jalview.git diff --git a/src/jalview/gui/VamsasApplication.java b/src/jalview/gui/VamsasApplication.java index 777d71b..6444667 100644 --- a/src/jalview/gui/VamsasApplication.java +++ b/src/jalview/gui/VamsasApplication.java @@ -1,20 +1,22 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) - * Copyright (C) 2009 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; @@ -28,12 +30,14 @@ 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; @@ -45,7 +49,6 @@ 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,12 +75,13 @@ public class VamsasApplication implements SelectionSource Desktop jdesktop = null; // our jalview desktop reference - private boolean inInitialUpdate=true; + 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, String sessionName) + public VamsasApplication(Desktop jdesktop, File sessionPath, + String sessionName) { // JBPNote: // we should create a session URI from the sessionPath and pass it to @@ -86,7 +90,6 @@ public class VamsasApplication implements SelectionSource initClientSession(null, sessionPath, sessionName); } - private static uk.ac.vamsas.client.IClientFactory getClientFactory() throws IOException { @@ -138,10 +141,11 @@ public class VamsasApplication implements SelectionSource */ private void initClientSession(String sess, File vamsasDocument) { - initClientSession(sess,vamsasDocument,null); + initClientSession(sess, vamsasDocument, null); } - private boolean initClientSession(String sess, File vamsasDocument, String newDocSessionName) + private boolean initClientSession(String sess, File vamsasDocument, + String newDocSessionName) { try { @@ -152,18 +156,19 @@ 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 { - if (newDocSessionName!=null) + if (newDocSessionName != null) { vclient = clientfactory.openAsNewSessionIClient(app, - vamsasDocument,newDocSessionName); - } else { + vamsasDocument, newDocSessionName); + } + else + { vclient = clientfactory.openAsNewSessionIClient(app, - vamsasDocument); + vamsasDocument); } } catch (InvalidSessionDocumentException e) { @@ -171,8 +176,8 @@ public class VamsasApplication implements SelectionSource .showInternalMessageDialog( Desktop.desktop, - "VAMSAS Document could not be opened as a new session - please choose another", - "VAMSAS Document Import Failed", + MessageManager.getString("label.vamsas_doc_couldnt_be_opened_as_new_session"), + MessageManager.getString("label.vamsas_document_import_failed"), JOptionPane.ERROR_MESSAGE); } @@ -220,14 +225,12 @@ public class VamsasApplication implements SelectionSource } catch (Error e) { Cache.log - .warn( - "Probable SERIOUS VAMSAS client incompatibility - carrying on regardless", + .warn("Probable SERIOUS VAMSAS client incompatibility - carrying on regardless", e); } catch (Exception e) { Cache.log - .warn( - "Probable VAMSAS client incompatibility - carrying on regardless", + .warn("Probable VAMSAS client incompatibility - carrying on regardless", e); } } @@ -239,8 +242,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")); } /** @@ -260,8 +263,7 @@ 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(); @@ -303,8 +305,7 @@ public class VamsasApplication implements SelectionSource } catch (Exception e) { Cache.log - .warn( - "Exception whilst refreshing jalview windows after a vamsas document update.", + .warn("Exception whilst refreshing jalview windows after a vamsas document update.", e); } } @@ -318,7 +319,6 @@ public class VamsasApplication implements SelectionSource { Cache.log.info("Jalview updating to the Vamsas Session."); - dealWithDocumentUpdate(true); Cache.log.info("Jalview finished updating to the Vamsas Session."); } @@ -347,7 +347,9 @@ public class VamsasApplication implements SelectionSource 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 { @@ -441,7 +443,7 @@ public class VamsasApplication implements SelectionSource */ public int updateVamsasDocument(IClientDocument doc) { - int storedviews=0; + int storedviews = 0; ensureJvVamsas(); errorsDuringUpdate = false; errorsDuringAppUpdate = false; @@ -554,7 +556,7 @@ public class VamsasApplication implements SelectionSource * * @param fromJalview * true to update from jalview to the vamsas document - * @return total number of stored alignments in the document after the update + * @return total number of stored alignments in the document after the update */ protected int dealWithDocumentUpdate(boolean fromJalview) { @@ -574,7 +576,7 @@ public class VamsasApplication implements SelectionSource } if (fromJalview) { - storedviews+=updateVamsasDocument(cdoc); + storedviews += updateVamsasDocument(cdoc); if (Cache.log.isDebugEnabled()) { Cache.log @@ -617,7 +619,7 @@ public class VamsasApplication implements SelectionSource // recover object map backup, since its probably corrupted with references // to Vobjects that don't exist anymore. recover_objectMappingBackup(); - storedviews=0; + storedviews = 0; } Cache.log.debug("Finished updating from document change."); disableGui(false); @@ -709,13 +711,13 @@ public class VamsasApplication implements SelectionSource { if (_backup_vobj2jv == null) { - if (inInitialUpdate) { + if (inInitialUpdate) + { // nothing to recover so just return; } - - throw new Error( - "IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made."); + + throw new Error(MessageManager.getString("error.implementation_error_cannot_recover_vamsas_object_mappings")); } jv2vobj.clear(); Iterator el = _backup_jv2vobj.entrySet().iterator(); @@ -756,8 +758,8 @@ 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; @@ -789,8 +791,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) @@ -910,23 +912,22 @@ public class VamsasApplication implements SelectionSource for (int p = 0; p < prange.length; p += 2) { int d = (prange[p] <= prange[p + 1]) ? 1 : -1; - // 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); - } + // 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); + } // mark all the columns in the range. for (int sr = prange[p], er = prange[p + 1], de = er + d; sr != de; sr += d) @@ -959,10 +960,14 @@ 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); @@ -998,7 +1003,7 @@ public class VamsasApplication implements SelectionSource AlignmentI visal = null; if (source instanceof AlignViewport) { - visal = ((AlignViewport) source).getAlignment(); + visal = ((AlignmentViewport) source).getAlignment(); } SelectionMessage sm = null; if ((seqsel == null || seqsel.getSize() == 0) @@ -1009,7 +1014,7 @@ public class VamsasApplication implements SelectionSource { // the empty selection. sm = new SelectionMessage("jalview", new String[] - { ((AlignViewport) source).getSequenceSetId() }, null, + { ((AlignmentViewport) source).getSequenceSetId() }, null, true); } else @@ -1022,10 +1027,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) { @@ -1052,10 +1055,9 @@ public class VamsasApplication implements SelectionSource { // gather selected columns outwith the sequence positions // too - Enumeration cols = colsel.getSelected().elements(); - while (cols.hasMoreElements()) + for (Object obj : colsel.getSelected()) { - int ival = ((Integer) cols.nextElement()).intValue(); + int ival = ((Integer) obj).intValue(); Pos p = new Pos(); p.setI(ival + 1); range.addPos(p); @@ -1063,13 +1065,13 @@ public class VamsasApplication implements SelectionSource } else { - int[] intervals = colsel.getVisibleContigs(seqsel - .getStartRes(), seqsel.getEndRes() + 1); + int[] intervals = colsel.getVisibleContigs( + seqsel.getStartRes(), seqsel.getEndRes() + 1); for (int iv = 0; iv < intervals.length; iv += 2) { Seg s = new Seg(); s.setStart(intervals[iv] + 1); // vamsas indices begin at - // 1, not zero. + // 1, not zero. s.setEnd(intervals[iv + 1] + 1); s.setInclusive(true); range.addSeg(s);