/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * 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 Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.javascript; import jalview.appletgui.AlignFrame; /** * The following public methods may be called * externally, eg via javascript in an HTML page. * *
TODO: introduce abstract interface for jalview.appletgui.AlignFrame
* * Most function arguments are strings, which contain serialised versions of lists. * Lists of things are separated by a separator character - either the default or a user supplied one. * Ranges and positions on an alignment or sequence can be specified as a list, where an item containing a single number is a single position, and an item like 1-2 specifies columns 1 and 2 as a range. */ /** * @author jimp * */ public interface JalviewLiteJsApi { /** * @return String list of selected sequence IDs, each terminated by the * 'boolean not' character (""+0x00AC) or (¬) */ public abstract String getSelectedSequences(); /** * @param sep * separator string or null for default * @return String list of selected sequence IDs, each terminated by given * separator string */ public abstract String getSelectedSequences(String sep); /** * @param alf * alignframe containing selection * @return String list of selected sequence IDs, each terminated by current * default separator sequence * */ public abstract String getSelectedSequencesFrom(AlignFrame alf); /** * get list of selected sequence IDs separated by given separator * * @param alf * window containing selection * @param sep * separator string to use - default is 'boolean not' * @return String list of selected sequence IDs, each terminated by the given * separator */ public abstract String getSelectedSequencesFrom(AlignFrame alf, String sep); /** * * @param sequenceId * id of sequence to highlight * @param position * integer position [ tobe implemented or range ] on sequence * @param alignedPosition * true/false/empty string - indicate if position is an alignment * column or unaligned sequence position */ public abstract void highlight(String sequenceId, String position, String alignedPosition); /** * * @param sequenceId * id of sequence to highlight * @param position * integer position [ tobe implemented or range ] on sequence * @param alignedPosition * false, blank or something else - indicate if position is an * alignment column or unaligned sequence position */ public abstract void highlightIn(AlignFrame alf, String sequenceId, String position, String alignedPosition); /** * select regions of the currrent alignment frame * * @param sequenceIds * String separated list of sequence ids or empty string * @param columns * String separated list { column range or column, ..} or empty * string */ public abstract void select(String sequenceIds, String columns); /** * select regions of the currrent alignment frame * * @param toselect * String separated list { column range, seq1...seqn sequence ids } * @param sep * separator between toselect fields */ public abstract void select(String sequenceIds, String columns, String sep); /** * select regions of the given alignment frame * * @param alf * @param toselect * String separated list { column range, seq1...seqn sequence ids } * @param sep * separator between toselect fields */ public abstract void selectIn(AlignFrame alf, String sequenceIds, String columns); /** * select regions of the given alignment frame * * @param alf * @param toselect * String separated list { column range, seq1...seqn sequence ids } * @param sep * separator between toselect fields */ public abstract void selectIn(AlignFrame alf, String sequenceIds, String columns, String sep); /** * get sequences selected in current alignFrame and return their alignment in * format 'format' either with or without suffix * * @param alf * - where selection is * @param format * - format of alignment file * @param suffix * - "true" to append /start-end string to each sequence ID * @return selected sequences as flat file or empty string if there was no * current selection */ public abstract String getSelectedSequencesAsAlignment(String format, String suffix); /** * get sequences selected in alf and return their alignment in format 'format' * either with or without suffix * * @param alf * - where selection is * @param format * - format of alignment file * @param suffix * - "true" to append /start-end string to each sequence ID * @return selected sequences as flat file or empty string if there was no * current selection */ public abstract String getSelectedSequencesAsAlignmentFrom( AlignFrame alf, String format, String suffix); /** * get a separator separated list of sequence IDs reflecting the order of the * current alignment * * @return */ public abstract String getAlignmentOrder(); /** * get a separator separated list of sequence IDs reflecting the order of the * alignment in alf * * @param alf * @return */ public abstract String getAlignmentOrderFrom(AlignFrame alf); /** * get a sep separated list of sequence IDs reflecting the order of the * alignment in alf * * @param alf * @param sep * - separator to use * @return */ public abstract String getAlignmentOrderFrom(AlignFrame alf, String sep); /** * re-order the current alignment using the given list of sequence IDs * * @param order * - sep separated list * @param undoName * - string to use when referring to ordering action in undo buffer * @return 'true' if alignment was actually reordered. empty string if * alignment did not contain sequences. */ public abstract String orderBy(String order, String undoName); /** * re-order the current alignment using the given list of sequence IDs * separated by sep * * @param order * - sep separated list * @param undoName * - string to use when referring to ordering action in undo buffer * @param sep * @return 'true' if alignment was actually reordered. empty string if * alignment did not contain sequences. */ public abstract String orderBy(String order, String undoName, String sep); /** * re-order the given alignment using the given list of sequence IDs separated * by sep * * @param alf * @param order * - sep separated list * @param undoName * - string to use when referring to ordering action in undo buffer * @param sep * @return 'true' if alignment was actually reordered. empty string if * alignment did not contain sequences. */ public abstract String orderAlignmentBy(AlignFrame alf, String order, String undoName, String sep); /** * get alignment as format (format names FASTA, BLC, CLUSTAL, MSF, PILEUP, * PFAM - see jalview.io.AppletFormatAdapter for full list) * * @param format * @return */ public abstract String getAlignment(String format); /** * get alignment displayed in alf as format * * @param alf * @param format * @return */ public abstract String getAlignmentFrom(AlignFrame alf, String format); /** * get alignment as format with jalview start-end sequence suffix appended * * @param format * @param suffix * @return */ public abstract String getAlignment(String format, String suffix); /** * get alignment displayed in alf as format with or without the jalview * start-end sequence suffix appended * * @param alf * @param format * @param suffix * @return */ public abstract String getAlignmentFrom(AlignFrame alf, String format, String suffix); /** * add the given features or annotation to the current alignment * * @param annotation */ public abstract void loadAnnotation(String annotation); /** * add the given features or annotation to the given alignment view * * @param alf * @param annotation */ public abstract void loadAnnotationFrom(AlignFrame alf, String annotation); /** * parse the given string as a jalview feature or GFF annotation file and * optionally enable feature display on the current alignFrame * * @param features * - gff or features file * @param autoenabledisplay * - when true, feature display will be enabled if any features can * be parsed from the string. */ public abstract void loadFeatures(String features, boolean autoenabledisplay); /** * parse the given string as a jalview feature or GFF annotation file and * optionally enable feature display on the given alignFrame. * * @param alf * @param features * - gff or features file * @param autoenabledisplay * - when true, feature display will be enabled if any features can * be parsed from the string. * @return true if data parsed as features */ public abstract boolean loadFeaturesFrom(AlignFrame alf, String features, boolean autoenabledisplay); /** * get the sequence features in the given format (Jalview or GFF) * * @param format * @return */ public abstract String getFeatures(String format); /** * get the sequence features in alf in the given format (Jalview or GFF) * * @param alf * @param format * @return */ public abstract String getFeaturesFrom(AlignFrame alf, String format); /** * get current alignment's annotation as an annotation file * * @return */ public abstract String getAnnotation(); /** * get alignment view alf's annotation as an annotation file * * @param alf * @return */ public abstract String getAnnotationFrom(AlignFrame alf); /** * create a new view and return the alignFrame instance * * @return */ public abstract AlignFrame newView(); /** * create a new view named name and return the alignFrame instance * * @param name * @return */ public abstract AlignFrame newView(String name); /** * create a new view on alf and return the alignFrame instance * * @param alf * @return */ public abstract AlignFrame newViewFrom(AlignFrame alf); /** * create a new view named name on alf * * @param alf * @param name * @return */ public abstract AlignFrame newViewFrom(AlignFrame alf, String name); /** * * @param text * alignment file as a string * @param title * window title * @return null or new alignment frame */ public abstract AlignFrame loadAlignment(String text, String title); /** * register a javascript function to handle any alignment mouseover events * * @param listener * name of javascript function (called with arguments * [jalview.appletgui.AlignFrame,String(sequence id),String(column in * alignment), String(position in sequence)] */ public abstract void setMouseoverListener(String listener); /** * register a javascript function to handle mouseover events * * @param af * (null or specific alignframe for which events are to be listened * for) * @param listener * name of javascript function */ public abstract void setMouseoverListener(AlignFrame af, String listener); /** * register a javascript function to handle any alignment selection events. * Events are generated when the user completes a selection event, or when the * user deselects all selected regions. * * @param listener * name of javascript function (called with arguments * [jalview.appletgui.AlignFrame, String(sequence set id), * String(separator separated list of sequences which were selected), * String(separator separated list of column ranges (i.e. single * number or hyphenated range) that were selected)] */ public abstract void setSelectionListener(String listener); public abstract void setSelectionListener(AlignFrame af, String listener); /** * register a javascript function to handle events normally routed to a Jmol * structure viewer. * * @param listener * - javascript function (arguments are variable, see * jalview.javascript.MouseOverStructureListener for full details) * @param modelSet * - separator separated list of PDB file URIs that this viewer is * handling. These files must be in the same order they appear in * Jmol (e.g. first one is frame 1, second is frame 2, etc). * @see jalview.javascript.MouseOverStructureListener */ public abstract void setStructureListener(String listener, String modelSet); /** * remove any callback using the given listener function and associated with * the given alignFrame (or null for all callbacks) * * @param af * (may be null) * @param listener * (may be null) */ public abstract void removeJavascriptListener(AlignFrame af, String listener); /** * send a mouseover message to all the alignment windows associated with the * given residue in the pdbfile * * @param pdbResNum * @param chain * @param pdbfile */ public abstract void mouseOverStructure(String pdbResNum, String chain, String pdbfile); /** * bind a pdb file to a sequence in the given alignFrame. * * @param alFrame * - null or specific alignFrame. This specifies the dataset that * will be searched for a seuqence called sequenceId * @param sequenceId * - sequenceId within the dataset. * @param pdbEntryString * - the short name for the PDB file * @param pdbFile * - pdb file - either a URL or a valid PDB file. * @return true if binding was as success TODO: consider making an exception * structure for indicating when PDB parsing or sequenceId location * fails. */ public abstract boolean addPdbFile(AlignFrame alFrame, String sequenceId, String pdbEntryString, String pdbFile); /** * adjust horizontal/vertical scroll to make the given location the top left * hand corner for the given view * * @param alf * @param topRow * @param leftHandColumn */ public abstract void scrollViewToIn(AlignFrame alf, String topRow, String leftHandColumn); /** * adjust vertical scroll to make the given row the top one for given view * * @param alf * @param topRow */ public abstract void scrollViewToRowIn(AlignFrame alf, String topRow); /** * adjust horizontal scroll to make the given column the left one in the given * view * * @param alf * @param leftHandColumn */ public abstract void scrollViewToColumnIn(AlignFrame alf, String leftHandColumn); /** * * @return * @see jalview.appletgui.AlignFrame#getFeatureGroups() */ public abstract String getFeatureGroups(); /** * @param alf * alignframe to get feature groups on * @return * @see jalview.appletgui.AlignFrame#getFeatureGroups() */ public abstract String getFeatureGroupsOn(AlignFrame alf); /** * @param visible * @return * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean) */ public abstract String getFeatureGroupsOfState(boolean visible); /** * @param alf * align frame to get groups of state visible * @param visible * @return * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean) */ public abstract String getFeatureGroupsOfStateOn(AlignFrame alf, boolean visible); /** * @param groups * tab separated list of group names * @param state * true or false * @see jalview.appletgui.AlignFrame#setFeatureGroupState(java.lang.String[], * boolean) */ public abstract void setFeatureGroupStateOn(AlignFrame alf, String groups, boolean state); public abstract void setFeatureGroupState(String groups, boolean state); /** * List separator string * * @return the separator */ public abstract String getSeparator(); /** * List separator string * * @param separator * the separator to set. empty string will reset separator to default */ public abstract void setSeparator(String separator); /** * Retrieve fragments of a large packet of data made available by JalviewLite. * * @param messageclass * @param viewId * @return next chunk of message */ public abstract String getJsMessage(String messageclass, String viewId); }