import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Random;
import java.util.Vector;
import jalview.structure.StructureMapping;
import jalview.structures.models.AAStructureBindingModel;
import jalview.util.BrowserLauncher;
+import jalview.util.IdUtils;
+import jalview.util.IdUtils.IdType;
import jalview.util.MessageManager;
import jalview.ws.dbsources.EBIAlfaFold;
import jalview.ws.dbsources.Pdb;
}
/**
- * Singleton list of all (open) instances of structureViewerBase
- * TODO: JAL-3362 - review and adopt the swingJS-safe singleton pattern so each structure viewer base instance is kept to its own JalviewJS parent
+ * Singleton list of all (open) instances of structureViewerBase TODO:
+ * JAL-3362 - review and adopt the swingJS-safe singleton pattern so each
+ * structure viewer base instance is kept to its own JalviewJS parent
*/
private static List<JalviewStructureDisplayI> svbs = new ArrayList<>();
*
* @return TRUE if the view is NOT being coloured by the alignment colours.
*/
+ @Override
public boolean isColouredByViewer()
{
return !getBinding().isColourBySequence();
}
+ @Override
public String getViewId()
{
if (viewId == null)
}
}
+ @Override
public abstract ViewerType getViewerType();
/**
chainMenu.add(menuItem);
}
}
- void setHetatmMenuItems(List<String> hetatmNames)
+
+ void setHetatmMenuItems(Map<String, String> hetatmNames)
{
hetatmMenu.removeAll();
if (hetatmNames == null || hetatmNames.isEmpty())
return;
}
hetatmMenu.setVisible(true);
- allHetatmBeingSelected=false;
+ allHetatmBeingSelected = false;
JMenuItem allMenuItem = new JMenuItem(
MessageManager.getString("label.all"));
JMenuItem noneMenuItem = new JMenuItem(
allMenuItem.addActionListener(new ActionListener()
{
@Override
- public void actionPerformed(ActionEvent e) {
+ public void actionPerformed(ActionEvent e)
{
- allHetatmBeingSelected=true;
- // Toggle state of everything - on
- for (int i = 0; i < hetatmMenu.getItemCount(); i++)
{
- if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+ allHetatmBeingSelected = true;
+ // Toggle state of everything - on
+ for (int i = 0; i < hetatmMenu.getItemCount(); i++)
{
- ((JCheckBoxMenuItem) hetatmMenu.getItem(i)).setSelected(true);
+ if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+ {
+ ((JCheckBoxMenuItem) hetatmMenu.getItem(i)).setSelected(true);
+ }
}
+ allHetatmBeingSelected = false;
+ showSelectedHetatms();
}
- allHetatmBeingSelected=false;
- showSelectedHetatms();
}
- }});
+ });
noneMenuItem.addActionListener(new ActionListener()
{
@Override
- public void actionPerformed(ActionEvent e) {
+ public void actionPerformed(ActionEvent e)
{
- allHetatmBeingSelected=true;
- // Toggle state of everything off
- for (int i = 0; i < hetatmMenu.getItemCount(); i++)
{
- if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+ allHetatmBeingSelected = true;
+ // Toggle state of everything off
+ for (int i = 0; i < hetatmMenu.getItemCount(); i++)
{
- ((JCheckBoxMenuItem) hetatmMenu.getItem(i)).setSelected(false);
+ if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+ {
+ ((JCheckBoxMenuItem) hetatmMenu.getItem(i))
+ .setSelected(false);
+ }
}
+ allHetatmBeingSelected = false;
+ showSelectedHetatms();
}
- allHetatmBeingSelected=false;
- showSelectedHetatms();
}
- }});
+ });
hetatmMenu.add(noneMenuItem);
hetatmMenu.add(allMenuItem);
- for (String chain : hetatmNames)
+ for (Map.Entry<String, String> chain : hetatmNames.entrySet())
{
- JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(chain, false);
+ JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(chain.getKey(),
+ false);
+ menuItem.setToolTipText(chain.getValue());
menuItem.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent evt)
{
if (!allHetatmBeingSelected)
- {
+ {
// update viewer only when we were clicked, not programmatically
// checked/unchecked
showSelectedHetatms();
{
// TODO would rather have startProgress/stopProgress as the
// IProgressIndicator interface
- long tm = random.nextLong();
+ long tm = IdUtils.newId(IdType.PROGRESS);
if (progressBar != null)
{
progressBar.setProgressBar(msg, tm);
}
getBinding().showChains(toshow);
}
+
/**
* Display selected hetatms in viewer
*/
}
getBinding().showHetatms(toshow);
}
+
/**
* Tries to fetch a PDB file and save to a temporary local file. Returns the
* saved file path if successful, or null if not.
EBIAlfaFold afclient = new EBIAlfaFold();
AlignmentI pdbseq = null;
String pdbid = processingEntry.getId();
- long handle = System.currentTimeMillis()
- + Thread.currentThread().hashCode();
+ long handle = IdUtils.newId(IdType.PROGRESS);
/*
* Write 'fetching PDB' progress on AlignFrame as we are not yet visible
*
* @return
*/
+ @Override
public File saveSession()
{
if (getBinding() == null)
// TODO: check for memory leaks where instance isn't finalised because jmb
// holds a reference to the window
// jmb = null;
-
- try {
+
+ try
+ {
svbs.remove(this);
} catch (Throwable t)
{
- Console.info("Unexpected exception when deregistering structure viewer",t);
+ Console.info(
+ "Unexpected exception when deregistering structure viewer",
+ t);
}
dispose();
}