+
+ /**
+ * Resets this object to its initial state by removing all registered
+ * listeners, codon mappings, PDB file mappings
+ */
+ public void resetAll()
+ {
+ if (mappings != null)
+ {
+ mappings.clear();
+ }
+ if (seqmappings != null)
+ {
+ seqmappings.clear();
+ }
+ if (sel_listeners != null)
+ {
+ sel_listeners.clear();
+ }
+ if (listeners != null)
+ {
+ listeners.clear();
+ }
+ if (commandListeners != null)
+ {
+ commandListeners.clear();
+ }
+ if (view_listeners != null)
+ {
+ view_listeners.clear();
+ }
+ if (pdbFileNameId != null)
+ {
+ pdbFileNameId.clear();
+ }
+ if (pdbIdFileName != null)
+ {
+ pdbIdFileName.clear();
+ }
+ }
+
+ public void addSelectionListener(SelectionListener selecter)
+ {
+ if (!sel_listeners.contains(selecter))
+ {
+ sel_listeners.add(selecter);
+ }
+ }
+
+ public void removeSelectionListener(SelectionListener toremove)
+ {
+ if (sel_listeners.contains(toremove))
+ {
+ sel_listeners.remove(toremove);
+ }
+ }
+
+ public synchronized void sendSelection(
+ jalview.datamodel.SequenceGroup selection,
+ jalview.datamodel.ColumnSelection colsel, SelectionSource source)
+ {
+ for (SelectionListener slis : sel_listeners)
+ {
+ if (slis != source)
+ {
+ slis.selection(selection, colsel, source);
+ }
+ }
+ }
+
+ Vector<AlignmentViewPanelListener> view_listeners = new Vector<AlignmentViewPanelListener>();
+
+ public synchronized void sendViewPosition(
+ jalview.api.AlignmentViewPanel source, int startRes, int endRes,
+ int startSeq, int endSeq)
+ {
+
+ if (view_listeners != null && view_listeners.size() > 0)
+ {
+ Enumeration<AlignmentViewPanelListener> listeners = view_listeners
+ .elements();
+ while (listeners.hasMoreElements())
+ {
+ AlignmentViewPanelListener slis = listeners.nextElement();
+ if (slis != source)
+ {
+ slis.viewPosition(startRes, endRes, startSeq, endSeq, source);
+ }
+ ;
+ }
+ }
+ }
+
+ /**
+ * release all references associated with this manager provider
+ *
+ * @param jalviewLite
+ */
+ public static void release(StructureSelectionManagerProvider jalviewLite)
+ {
+ // synchronized (instances)
+ {
+ if (instances == null)
+ {
+ return;
+ }
+ StructureSelectionManager mnger = (instances.get(jalviewLite));
+ if (mnger != null)
+ {
+ instances.remove(jalviewLite);
+ try
+ {
+ mnger.finalize();
+ } catch (Throwable x)
+ {
+ }
+ }
+ }
+ }
+
+ public void registerPDBEntry(PDBEntry pdbentry)
+ {
+ if (pdbentry.getFile() != null
+ && pdbentry.getFile().trim().length() > 0)
+ {
+ registerPDBFile(pdbentry.getId(), pdbentry.getFile());
+ }
+ }
+
+ public void addCommandListener(CommandListener cl)
+ {
+ if (!commandListeners.contains(cl))
+ {
+ commandListeners.add(cl);
+ }
+ }
+
+ public boolean hasCommandListener(CommandListener cl)
+ {
+ return this.commandListeners.contains(cl);
+ }
+
+ public boolean removeCommandListener(CommandListener l)
+ {
+ return commandListeners.remove(l);
+ }
+
+ /**
+ * Forward a command to any command listeners (except for the command's
+ * source).
+ *
+ * @param command
+ * the command to be broadcast (in its form after being performed)
+ * @param undo
+ * if true, the command was being 'undone'
+ * @param source
+ */
+ public void commandPerformed(CommandI command, boolean undo,
+ VamsasSource source)
+ {
+ for (CommandListener listener : commandListeners)
+ {
+ listener.mirrorCommand(command, undo, this, source);
+ }
+ }
+
+ /**
+ * Returns a new CommandI representing the given command as mapped to the
+ * given sequences. If no mapping could be made, or the command is not of a
+ * mappable kind, returns null.
+ *
+ * @param command
+ * @param undo
+ * @param mapTo
+ * @param gapChar
+ * @return
+ */
+ public CommandI mapCommand(CommandI command, boolean undo,
+ final AlignmentI mapTo, char gapChar)
+ {
+ if (command instanceof EditCommand)
+ {
+ return MappingUtils.mapEditCommand((EditCommand) command, undo,
+ mapTo, gapChar, seqmappings);
+ }
+ else if (command instanceof OrderCommand)
+ {
+ return MappingUtils.mapOrderCommand((OrderCommand) command, undo,
+ mapTo, seqmappings);
+ }
+ return null;
+ }
+
+ public IProgressIndicator getProgressIndicator()
+ {
+ return progressIndicator;
+ }
+
+ public void setProgressIndicator(IProgressIndicator progressIndicator)
+ {
+ this.progressIndicator = progressIndicator;
+ }
+
+ public long getProgressSessionId()
+ {
+ return progressSessionId;
+ }
+
+ public void setProgressSessionId(long progressSessionId)
+ {
+ this.progressSessionId = progressSessionId;
+ }
+
+ public void setProgressBar(String message)
+ {
+ progressIndicator.setProgressBar(message, progressSessionId);
+ }
+
+ public List<AlignedCodonFrame> getSequenceMappings()
+ {
+ return seqmappings;
+ }
+