getPreferredSize());\r
alignPanel.setAnnotationVisible(viewport.getShowAnnotation());\r
\r
+ String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", "No sort");\r
+\r
+ if(sortby.equals("Id"))\r
+ sortIDMenuItem_actionPerformed(null);\r
+ else if(sortby.equals("Pairwise Identity"))\r
+ sortPairwiseMenuItem_actionPerformed(null);\r
+\r
getContentPane().add(alignPanel, java.awt.BorderLayout.CENTER);\r
\r
- addInternalFrameListener(new InternalFrameAdapter()\r
+ viewport.addPropertyChangeListener(new PropertyChangeListener()\r
{\r
- public void internalFrameActivated(InternalFrameEvent evt)\r
- {\r
- javax.swing.SwingUtilities.invokeLater(new Runnable()\r
- {\r
- public void run()\r
- {\r
- alignPanel.requestFocus();\r
- }\r
- });\r
- }\r
- });\r
+ public void propertyChange(PropertyChangeEvent evt)\r
+ {\r
+ if (evt.getPropertyName().equals("alignment"))\r
+ {\r
+ alignmentChanged();\r
+ }\r
+ }\r
+ });\r
+\r
addServiceListeners();\r
}\r
\r
/* Set up intrinsic listeners for dynamically generated GUI bits. */\r
private void addServiceListeners()\r
{\r
-\r
- final AlignFrame thisFrame = this;\r
final java.beans.PropertyChangeListener thisListener;\r
// Do this once to get current state\r
- thisFrame.BuildWebServiceMenu();\r
+ BuildWebServiceMenu();\r
Desktop.discoverer.addPropertyChangeListener(\r
thisListener = new java.beans.PropertyChangeListener()\r
{\r
if (evt.getPropertyName().equals("services"))\r
{\r
// System.out.println("Rebuilding web service menu");\r
- thisFrame.BuildWebServiceMenu();\r
+ BuildWebServiceMenu();\r
}\r
}\r
});\r
{\r
// System.out.println("deregistering discoverer listener");\r
Desktop.discoverer.removePropertyChangeListener(thisListener);\r
+ closeMenuItem_actionPerformed(null);\r
}\r
;\r
});\r
{\r
java.io.PrintWriter out = new java.io.PrintWriter(\r
new java.io.FileWriter(file));\r
- out.println(output);\r
+\r
+ out.print(output);\r
out.close();\r
return true;\r
}\r
{\r
try\r
{\r
+ PaintRefresher.components.remove(viewport.alignment);\r
this.setClosed(true);\r
}\r
catch (Exception ex)\r
redoList.push(new HistoryItem(hi.getDescription(), viewport.alignment,\r
HistoryItem.HIDE));\r
restoreHistoryItem(hi);\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
\r
/**\r
HistoryItem hi = (HistoryItem) redoList.pop();\r
restoreHistoryItem(hi);\r
updateEditMenuBar();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
- alignPanel.repaint();\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
\r
// used by undo and redo\r
\r
updateEditMenuBar();\r
\r
- viewport.updateConsensus();\r
- viewport.updateConservation();\r
- alignPanel.repaint();\r
viewport.firePropertyChange("alignment", null,\r
viewport.getAlignment().getSequences());\r
}\r
}\r
else\r
{\r
- viewport.firePropertyChange("alignment", null,\r
- viewport.getAlignment().getSequences());\r
viewport.setEndSeq(viewport.alignment.getHeight());\r
viewport.alignment.getWidth();\r
- viewport.updateConservation();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
}\r
catch (Exception ex)\r
{\r
+ // could be anything being pasted in here\r
}\r
\r
- // could be anything being pasted in here\r
+\r
}\r
\r
/**\r
viewport.getAlignment().getSequences());\r
}\r
\r
- viewport.resetSeqLimits(alignPanel.seqPanel.seqCanvas.getHeight());\r
\r
if (viewport.getAlignment().getHeight() < 1)\r
{\r
{\r
}\r
}\r
-\r
- viewport.updateConservation();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
}\r
\r
/**\r
}\r
}\r
\r
- alignPanel.repaint();\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
}\r
\r
}\r
}\r
\r
- alignPanel.repaint();\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
}\r
\r
addHistoryItem(new HistoryItem("Remove Gapped Columns",\r
viewport.alignment, HistoryItem.HIDE));\r
\r
+ //This is to maintain viewport position on first residue\r
+ //of first sequence\r
+ SequenceI seq = viewport.alignment.getSequenceAt(0);\r
+ int startRes = seq.findPosition(viewport.startRes);\r
+\r
viewport.getAlignment().removeGaps();\r
- viewport.updateConservation();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
+\r
+ viewport.setStartRes(seq.findIndex(startRes)-1);\r
+\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
\r
/**\r
addHistoryItem(new HistoryItem("Remove Gaps", viewport.alignment,\r
HistoryItem.HIDE));\r
\r
+ //This is to maintain viewport position on first residue\r
+ //of first sequence\r
+ SequenceI seq = viewport.alignment.getSequenceAt(0);\r
+ int startRes = seq.findPosition(viewport.startRes);\r
+\r
+\r
SequenceI current;\r
int jSize;\r
\r
while (j < end && j < jSize);\r
}\r
\r
- viewport.updateConservation();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
+ viewport.setStartRes(seq.findIndex(startRes)-1);\r
+\r
+\r
+ viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
+ }\r
+\r
+ public void alignmentChanged()\r
+ {\r
+ viewport.updateConsensus();\r
+ viewport.updateConservation();\r
+ resetAllColourSchemes();\r
+ alignPanel.repaint();\r
+ }\r
+\r
+ void resetAllColourSchemes()\r
+ {\r
+ ColourSchemeI cs = viewport.globalColourScheme;\r
+ if(cs!=null)\r
+ {\r
+ if (cs instanceof ClustalxColourScheme)\r
+ {\r
+ ( (ClustalxColourScheme) viewport.getGlobalColourScheme()).\r
+ resetClustalX(viewport.alignment.getSequences(),\r
+ viewport.alignment.getWidth());\r
+ }\r
+\r
+ cs.setConsensus(viewport.vconsensus);\r
+ if (cs.conservationApplied())\r
+ {\r
+ Alignment al = (Alignment) viewport.alignment;\r
+ Conservation c = new Conservation("All",\r
+ ResidueProperties.propHash, 3,\r
+ al.getSequences(), 0,\r
+ al.getWidth() - 1);\r
+ c.calculate();\r
+ c.verdict(false, viewport.ConsPercGaps);\r
+\r
+ cs.setConservation(c);\r
+ }\r
+ }\r
+\r
+ int s, sSize = viewport.alignment.getGroups().size();\r
+ for(s=0; s<sSize; s++)\r
+ {\r
+ SequenceGroup sg = (SequenceGroup)viewport.alignment.getGroups().elementAt(s);\r
+ if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme)\r
+ {\r
+ ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
+ }\r
+ sg.recalcConservation();\r
+ }\r
}\r
\r
/**\r
}\r
}\r
\r
- viewport.updateConservation();\r
- viewport.updateConsensus();\r
- alignPanel.repaint();\r
+ alignmentChanged();\r
}\r
\r
/**\r
}\r
}\r
\r
- if (viewport.getAbovePIDThreshold())\r
+ if (viewport.getAbovePIDThreshold()\r
+ || cs instanceof PIDColourScheme\r
+ || cs instanceof Blosum62ColourScheme)\r
{\r
sg.cs.setThreshold(threshold,\r
viewport.getIgnoreGapsConsensus());\r
}\r
}\r
\r
+\r
+ public TreePanel ShowNewickTree(NewickFile nf, String title)\r
+ {\r
+ return ShowNewickTree(nf,title,600,500,4,5);\r
+ }\r
/**\r
* DOCUMENT ME!\r
*\r
*\r
* @return DOCUMENT ME!\r
*/\r
- public TreePanel ShowNewickTree(NewickFile nf, String title)\r
+ public TreePanel ShowNewickTree(NewickFile nf, String title, int w,int h,int x, int y)\r
{\r
TreePanel tp = null;\r
\r
viewport.getAlignment().getSequences(), nf,\r
"FromFile",\r
title);\r
- Desktop.addInternalFrame(tp, title, 600, 500);\r
+\r
+ tp.setSize(w,h);\r
+\r
+ if(x>0 && y>0)\r
+ tp.setLocation(x,y);\r
+\r
+\r
+ Desktop.addInternalFrame(tp, title, w, h);\r
addTreeMenuItem(tp, title);\r
}\r
}\r