* GNU General Public License for more details.\r
*\r
* You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
+ * along with this program; if not, write to the Free Softwarechang\r
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
*/\r
package jalview.gui;\r
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
int threshold = 0;\r
\r
- if (viewport.getAbovePIDThreshold())\r
+ if(cs!=null)\r
{\r
- threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,\r
- "Background");\r
-\r
- if (cs instanceof ResidueColourScheme)\r
+ if (viewport.getAbovePIDThreshold())\r
{\r
- ( (ResidueColourScheme) cs).setThreshold(threshold,\r
- viewport.\r
- getIgnoreGapsConsensus());\r
+ threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,\r
+ "Background");\r
+\r
+ cs.setThreshold(threshold,\r
+ viewport.getIgnoreGapsConsensus());\r
+\r
+ viewport.setGlobalColourScheme(cs);\r
}\r
- else if (cs instanceof ScoreColourScheme)\r
+ else\r
{\r
- ( (ScoreColourScheme) cs).setThreshold(threshold,\r
- viewport.getIgnoreGapsConsensus());\r
+ cs.setThreshold(0, viewport.getIgnoreGapsConsensus());\r
}\r
\r
- viewport.setGlobalColourScheme(cs);\r
- }\r
- else if (cs instanceof ResidueColourScheme)\r
- {\r
- ( (ResidueColourScheme) cs).setThreshold(0,\r
- viewport.getIgnoreGapsConsensus());\r
- }\r
-\r
-\r
- if (viewport.getConservationSelected())\r
- {\r
- ConservationColourScheme ccs = null;\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
-\r
- c.calculate();\r
- c.verdict(false, viewport.ConsPercGaps);\r
+ if (viewport.getConservationSelected())\r
+ {\r
\r
- ccs = new ConservationColourScheme(c, cs);\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
\r
- ccs.setConsensus(viewport.vconsensus);\r
+ c.calculate();\r
+ c.verdict(false, viewport.ConsPercGaps);\r
\r
- viewport.setGlobalColourScheme(ccs);\r
+ cs.setConservation(c);\r
\r
- ccs.inc = SliderPanel.setConservationSlider(alignPanel, ccs,\r
- "Background");\r
- }\r
- else\r
- {\r
- // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS!\r
- if (cs != null)\r
+ cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel, cs,\r
+ "Background"));\r
+ }\r
+ else\r
{\r
- cs.setConsensus(viewport.vconsensus);\r
+ cs.setConservation(null);\r
}\r
\r
- viewport.setGlobalColourScheme(cs);\r
+ cs.setConsensus(viewport.vconsensus);\r
}\r
\r
+ viewport.setGlobalColourScheme(cs);\r
+\r
if (viewport.getColourAppliesToAllGroups())\r
{\r
Vector groups = viewport.alignment.getGroups();\r
if (cs == null)\r
{\r
sg.cs = null;\r
+ continue;\r
}\r
- else if (cs instanceof ClustalxColourScheme)\r
+\r
+ if (cs instanceof ClustalxColourScheme)\r
{\r
sg.cs = new ClustalxColourScheme(sg.sequences, sg.getWidth());\r
}\r
}\r
}\r
\r
- if (viewport.getAbovePIDThreshold())\r
+ if (viewport.getAbovePIDThreshold()\r
+ || cs instanceof PIDColourScheme\r
+ || cs instanceof Blosum62ColourScheme)\r
{\r
- if (sg.cs instanceof ResidueColourScheme)\r
- {\r
- ( (ResidueColourScheme) sg.cs).setThreshold(threshold,\r
+ sg.cs.setThreshold(threshold,\r
viewport.getIgnoreGapsConsensus());\r
- }\r
\r
sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
sg.getWidth()));\r
}\r
+ else\r
+ sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());\r
+\r
\r
if (viewport.getConservationSelected())\r
{\r
viewport.alignment.getWidth() - 1);\r
c.calculate();\r
c.verdict(false, viewport.ConsPercGaps);\r
-\r
- ConservationColourScheme ccs = new ConservationColourScheme(c,\r
- sg.cs);\r
-\r
- // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS!\r
- ccs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
- sg.getWidth()));\r
- sg.cs = ccs;\r
- }\r
- else if (cs != null)\r
- {\r
- // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS!\r
- sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
- sg.getWidth()));\r
+ sg.cs.setConservation(c);\r
}\r
+ else\r
+ sg.cs.setConservation(null);\r
}\r
}\r
\r
*/\r
protected void modifyPID_actionPerformed(ActionEvent e)\r
{\r
- if (viewport.getAbovePIDThreshold())\r
+ if (viewport.getAbovePIDThreshold() && viewport.globalColourScheme!=null)\r
{\r
SliderPanel.setPIDSliderSource(alignPanel,\r
viewport.getGlobalColourScheme(),\r
*/\r
protected void modifyConservation_actionPerformed(ActionEvent e)\r
{\r
- if (viewport.getConservationSelected())\r
+ if (viewport.getConservationSelected() && viewport.globalColourScheme!=null)\r
{\r
SliderPanel.setConservationSlider(alignPanel,\r
viewport.globalColourScheme,\r
viewport.setAbovePIDThreshold(false);\r
abovePIDThreshold.setSelected(false);\r
\r
- ColourSchemeI cs = viewport.getGlobalColourScheme();\r
-\r
- if (cs instanceof ConservationColourScheme)\r
- {\r
- changeColour( ( (ConservationColourScheme) cs).cs);\r
- }\r
- else\r
- {\r
- changeColour(cs);\r
- }\r
+ changeColour(viewport.getGlobalColourScheme());\r
\r
modifyConservation_actionPerformed(null);\r
}\r
\r
ColourSchemeI cs = viewport.getGlobalColourScheme();\r
\r
- if (cs instanceof ConservationColourScheme)\r
- {\r
- changeColour( ( (ConservationColourScheme) cs).cs);\r
- }\r
- else\r
- {\r
- changeColour(cs);\r
- }\r
+ changeColour(viewport.getGlobalColourScheme());\r
\r
modifyPID_actionPerformed(null);\r
}\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