X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2Fstructures%2FJalviewStructureDisplayI.java;h=532e545ae1cb499eaa3e2afb4b705ef08410ccaa;hb=155a17a423e980849fd4dc5f857da1a72b0010b9;hp=e37f46710329352d7dd0b94c2462ecb73f6b5339;hpb=ecfc49bc5a7e416c0f967677651923993f105dd8;p=jalview.git diff --git a/src/jalview/api/structures/JalviewStructureDisplayI.java b/src/jalview/api/structures/JalviewStructureDisplayI.java index e37f467..532e545 100644 --- a/src/jalview/api/structures/JalviewStructureDisplayI.java +++ b/src/jalview/api/structures/JalviewStructureDisplayI.java @@ -1,39 +1,195 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ 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.api.structures; -import jalview.api.FeatureRenderer; -import jalview.api.SequenceRenderer; -import jalview.api.SequenceStructureBinding; -import jalview.datamodel.AlignmentI; +import java.io.File; + +import jalview.api.AlignmentViewPanel; +import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; -import jalview.ext.jmol.JalviewJmolBinding; -import jalview.structure.StructureMappingcommandSet; -import jalview.structure.StructureSelectionManager; +import jalview.gui.AlignmentPanel; +import jalview.gui.StructureViewer; +import jalview.structures.models.AAStructureBindingModel; public interface JalviewStructureDisplayI { - SequenceStructureBinding getBinding(); + AAStructureBindingModel getBinding(); /** - * @return true if there is an active GUI handling a structure display + * @return true if there is an active GUI handling a structure display */ boolean isVisible(); /** - * enable or disable the structure display - note this might just hide or show a GUI element, but not actually reset the display + * enable or disable the structure display - note this might just hide or show + * a GUI element, but not actually reset the display + * * @param b */ void setVisible(boolean b); /** - * free up any external resources that were used by this display and collect garbage + * free up any external resources that were used by this display and collect + * garbage */ void dispose(); /** - * shutdown any structure viewing processes started by this display + * Shutdown any Jalview structure viewing processes started by this display + * + * @param closeExternalViewer + * if true, force close any linked external viewer process + */ + void closeViewer(boolean closeExternalViewer); + + /** + * Check if the external viewer is still running + */ + boolean stillRunning(); + + /** + * + * @return true if all background sequence/structure binding threads have + * completed for this viewer instance + */ + boolean hasMapping(); + + /** + * Checks if the PDB file is already loaded in this viewer, if so just adds + * mappings as necessary and answers true, else answers false. This supports + * the use case of adding additional chains of the same structure to a viewer. + * + * @param seq + * @param chains + * @param apanel + * @param pdbId + * @return + */ + boolean addAlreadyLoadedFile(SequenceI[] seq, String[] chains, + AlignmentViewPanel apanel, String pdbId); + + /** + * Adds one or more chains (sequences) of a PDB structure to this structure + * viewer + * + * @param pdbentry + * @param seq + * @param chains + * @param apanel + * @param pdbId + * @return */ - void closeViewer(); + void addToExistingViewer(PDBEntry pdbentry, SequenceI[] seq, + String[] chains, AlignmentViewPanel apanel, String pdbId); + + /** + * refresh GUI after reconfiguring structure(s) and alignment panels + */ + void updateTitleAndMenus(); + + /** + * Answers true if the viewer should attempt to align any added structures, + * else false + * + * @return + */ + boolean isAlignAddedStructures(); + + /** + * Sets the flag for whether added structures should be aligned + * + * @param alignAdded + */ + void setAlignAddedStructures(boolean alignAdded); + + /** + * Raise the panel to the top of the stack... + */ + void raiseViewer(); + + AlignmentViewPanel getAlignmentPanel(); + + /** + * Answers true if the given alignment view is used to colour structures by + * sequence, false if not + * + * @param ap + * @return + */ + boolean isUsedForColourBy(AlignmentViewPanel ap); + + /** + * If implemented, shows a command line console in the structure viewer + * + * @param show + * true to show, false to hide + */ + void showConsole(boolean show); + + /** + * Remove references to the given alignment view for this structure viewer + * + * @param avp + */ + void removeAlignmentPanel(AlignmentViewPanel avp); + + /** + * Updates the progress bar if there is one. Call stopProgressBar with the + * returned handle to remove the message. + * + * @param msg + * @return handle + */ + long startProgressBar(String msg); + + /** + * Ends the progress bar with the specified handle, leaving a message (if not + * null) on the status bar + * + * @param msg + * @param handle + */ + void stopProgressBar(String msg, long handle); + + /** + * + * @return true if the actions menu is shown for this viewer + */ + boolean hasViewerActionsMenu(); + + String getViewId(); + + StructureViewer.ViewerType getViewerType(); + + boolean isUsedforaligment(AlignmentViewPanel ap); + + boolean isColouredByViewer(); + + int getHeight(); + + int getWidth(); + + int getY(); + File saveSession(); }