*/
package jalview.api.structures;
-import jalview.schemes.ColourSchemeI;
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+import jalview.api.AlignmentViewPanel;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignmentPanel;
+import jalview.gui.StructureViewer;
import jalview.structures.models.AAStructureBindingModel;
public interface JalviewStructureDisplayI
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 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
*/
- void closeViewer();
+ boolean isUsedForColourBy(AlignmentViewPanel ap);
+
/**
- * apply a colourscheme to the structures in the viewer
- * @param colourScheme
+ * 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();
+
+ /**
+ *
+ * @return heteroatoms in a form suitable for display and passing to command generator to display hetatms
*/
- void setJalviewColourScheme(ColourSchemeI colourScheme);
+ default List<String> getHetatms() {
+ return Collections.EMPTY_LIST;
+ }
}