X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=fae50d9e45073d08a22f98813773b311637f8fdb;hb=4f8907121d304b0f9b499578578c3381b815db9d;hp=491d2beedd6f687b62d990c2b8b1acca4841c2be;hpb=187b75ac779575fa0399f7c3991dcd7bade8ca90;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 491d2be..fae50d9 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -27,6 +27,8 @@ import jalview.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; +import java.io.InputStreamReader; +import java.io.BufferedReader; public class AlignFrame extends GAlignFrame @@ -44,8 +46,18 @@ public class AlignFrame alignPanel = new AlignmentPanel(this, viewport); add(alignPanel); alignPanel.validate(); + + this.addWindowListener(new WindowAdapter() + { + public void windowClosing(WindowEvent e) + { + closeMenuItem_actionPerformed(null); + } + }); + } + public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet) { this.applet = applet; @@ -55,7 +67,6 @@ public class AlignFrame alignPanel.validate(); String treeFile = applet.getParameter("treeFile"); - TreePanel treepanel = null; if (treeFile != null) { try @@ -80,6 +91,16 @@ public class AlignFrame } } + this.addWindowListener(new WindowAdapter() + { + public void windowClosing(WindowEvent e) + { + closeMenuItem_actionPerformed(null); + } + }); + + + } public void inputText_actionPerformed(ActionEvent e) @@ -105,6 +126,7 @@ public class AlignFrame public void closeMenuItem_actionPerformed(ActionEvent e) { + PaintRefresher.components.remove(viewport.alignment); dispose(); } @@ -278,30 +300,55 @@ public class AlignFrame orderedSeqs.put(index + "", seq); } - int index = 0; + int index = 0, startRes, endRes; + char ch; + for (int i = 0; i < sg.getSize(); i++) { - SequenceI seq = null; - while (seq == null) - { - if (orderedSeqs.containsKey(index + "")) + SequenceI seq = null; + + while (seq == null) { - seq = (SequenceI) orderedSeqs.get(index + ""); - index++; - break; + if (orderedSeqs.containsKey(index + "")) + { + seq = (SequenceI) orderedSeqs.get(index + ""); + index++; + + break; + } + else + { + index++; + } } - else + + //FIND START RES + //Returns residue following index if gap + startRes = seq.findPosition(sg.getStartRes()); + + //FIND END RES + //Need to find the residue preceeding index if gap + endRes = 0; + + for (int j = 0; j < sg.getEndRes()+1 && j < seq.getLength(); j++) { - index++; + ch = seq.getCharAt(j); + if (!jalview.util.Comparison.isGap( (ch))) + { + endRes++; + } + } + + if(endRes>0) + { + endRes += seq.getStart() -1; } - } - copiedSequences.append(seq.getName() + "\t" + - seq.findPosition(sg.getStartRes()) + "\t" - + seq.findPosition(sg.getEndRes()) + "\t" - + - sg.getSequenceAt(i).getSequence(sg.getStartRes(), - sg.getEndRes() + 1) + "\n"); + copiedSequences.append(seq.getName() + "\t" + + startRes + "\t" + + endRes + "\t" + + seq.getSequence(sg.getStartRes(), + sg.getEndRes() + 1) + "\n"); } } @@ -460,10 +507,10 @@ public class AlignFrame { sg.addSequence(viewport.getAlignment().getSequenceAt(i), false); } - sg.setEndRes(viewport.alignment.getWidth()); + sg.setEndRes(viewport.alignment.getWidth()-1); viewport.setSelectionGroup(sg); alignPanel.repaint(); - PaintRefresher.Refresh(null); + PaintRefresher.Refresh(null, viewport.alignment); } public void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e) @@ -471,7 +518,7 @@ public class AlignFrame viewport.setSelectionGroup(null); viewport.getColumnSelection().clear(); viewport.setSelectionGroup(null); - PaintRefresher.Refresh(null); + PaintRefresher.Refresh(null, viewport.alignment); } public void invertSequenceMenuItem_actionPerformed(ActionEvent e) @@ -482,7 +529,7 @@ public class AlignFrame sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false); } - PaintRefresher.Refresh(null); + PaintRefresher.Refresh(null, viewport.alignment); } public void remove2LeftMenuItem_actionPerformed(ActionEvent e) @@ -567,8 +614,9 @@ public class AlignFrame int start=0, end = viewport.alignment.getWidth(); - if(viewport.getSelectionGroup()!=null - || viewport.getSelectionGroup().sequences.size()<1) + if (viewport.getSelectionGroup() != null + && viewport.getSelectionGroup().sequences != null + && viewport.getSelectionGroup().sequences.size()>0) { seqs = viewport.getSelectionGroup().sequences; start = viewport.getSelectionGroup().getStartRes(); @@ -775,53 +823,48 @@ public class AlignFrame { int threshold = 0; - if (viewport.getAbovePIDThreshold()) + if(cs!=null) { - threshold = SliderPanel.setPIDSliderSource(alignPanel, cs, "Background"); - - if (cs instanceof ResidueColourScheme) + if (viewport.getAbovePIDThreshold()) { - ( (ResidueColourScheme) cs).setThreshold(threshold); - } + threshold = SliderPanel.setPIDSliderSource(alignPanel, cs, "Background"); - viewport.setGlobalColourScheme(cs); - } - else if (cs instanceof ResidueColourScheme) - { - ( (ResidueColourScheme) cs).setThreshold(0); - } + cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - if (viewport.getConservationSelected()) - { - ConservationColourScheme ccs = null; + viewport.setGlobalColourScheme(cs); + } + else + { + cs.setThreshold(0, viewport.getIgnoreGapsConsensus()); + } - Alignment al = (Alignment) viewport.alignment; - Conservation c = new Conservation("All", - ResidueProperties.propHash, 3, - al.getSequences(), 0, - al.getWidth() - 1); + if (viewport.getConservationSelected()) + { - c.calculate(); - c.verdict(false, viewport.ConsPercGaps); + Alignment al = (Alignment) viewport.alignment; + Conservation c = new Conservation("All", + ResidueProperties.propHash, 3, + al.getSequences(), 0, + al.getWidth() - 1); - ccs = new ConservationColourScheme(c, cs); + c.calculate(); + c.verdict(false, viewport.ConsPercGaps); - // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS! - ccs.setConsensus(viewport.vconsensus); - viewport.setGlobalColourScheme(ccs); + cs.setConservation(c); - SliderPanel.setConservationSlider(alignPanel, ccs, "Background"); + cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel, cs, + "Background")); - } - else - { - // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS! - if (cs != null) + } + else { - cs.setConsensus(viewport.vconsensus); + cs.setConservation(null); } - viewport.setGlobalColourScheme(cs); + + cs.setConsensus(viewport.vconsensus); + } + viewport.setGlobalColourScheme(cs); if (viewport.getColourAppliesToAllGroups()) { @@ -837,9 +880,7 @@ public class AlignFrame } if (cs instanceof ClustalxColourScheme) { - ClustalxColourScheme cxs = (ClustalxColourScheme) cs; - cxs.resetClustalX(viewport.alignment.getSequences(), viewport.alignment.getWidth()); - sg.cs = cxs; + sg.cs = new ClustalxColourScheme(sg.sequences, sg.getWidth()); } else { @@ -854,15 +895,15 @@ public class AlignFrame } } - if (viewport.getAbovePIDThreshold()) + if (viewport.getAbovePIDThreshold() + || cs instanceof PIDColourScheme + || cs instanceof Blosum62ColourScheme) { - if (sg.cs instanceof ResidueColourScheme) - { - ( (ResidueColourScheme) sg.cs).setThreshold(threshold); - } - + sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, sg.getWidth())); } + else + sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus()); if (viewport.getConservationSelected()) { @@ -872,21 +913,18 @@ public class AlignFrame viewport.alignment.getWidth() - 1); c.calculate(); c.verdict(false, viewport.ConsPercGaps); - ConservationColourScheme ccs = new ConservationColourScheme(c, sg.cs); - - // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS! - ccs.setConsensus(AAFrequency.calculate(sg.sequences, 0, sg.getWidth())); - sg.cs = ccs; + sg.cs.setConservation(c); } else { - // MUST NOTIFY THE COLOURSCHEME OF CONSENSUS! - sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, sg.getWidth())); + sg.cs.setConservation(null); + sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus()); } } } + if (alignPanel.getOverviewPanel() != null) { alignPanel.getOverviewPanel().updateOverviewImage(); @@ -895,9 +933,11 @@ public class AlignFrame alignPanel.repaint(); } + + protected void modifyPID_actionPerformed(ActionEvent e) { - if (viewport.getAbovePIDThreshold()) + if (viewport.getAbovePIDThreshold() && viewport.globalColourScheme!=null) { SliderPanel.setPIDSliderSource(alignPanel, viewport.getGlobalColourScheme(), "Background"); @@ -907,7 +947,7 @@ public class AlignFrame protected void modifyConservation_actionPerformed(ActionEvent e) { - if (viewport.getConservationSelected()) + if (viewport.getConservationSelected() && viewport.globalColourScheme!=null) { SliderPanel.setConservationSlider(alignPanel, viewport.globalColourScheme, "Background"); @@ -922,15 +962,7 @@ public class AlignFrame viewport.setAbovePIDThreshold(false); abovePIDThreshold.setState(false); - ColourSchemeI cs = viewport.getGlobalColourScheme(); - if (cs instanceof ConservationColourScheme) - { - changeColour( ( (ConservationColourScheme) cs).cs); - } - else - { - changeColour(cs); - } + changeColour(viewport.getGlobalColourScheme()); modifyConservation_actionPerformed(null); } @@ -942,16 +974,7 @@ public class AlignFrame conservationMenuItem.setState(false); viewport.setConservationSelected(false); - ColourSchemeI cs = viewport.getGlobalColourScheme(); - - if (cs instanceof ConservationColourScheme) - { - changeColour( ( (ConservationColourScheme) cs).cs); - } - else - { - changeColour(cs); - } + changeColour(viewport.getGlobalColourScheme()); modifyPID_actionPerformed(null); } @@ -1067,7 +1090,21 @@ public class AlignFrame //are the sequences aligned? if (!viewport.alignment.isAligned()) { - return; + SequenceI current; + int Width = viewport.getAlignment().getWidth(); + + for (int i = 0; i < viewport.getAlignment().getSequences().size(); + i++) + { + current = viewport.getAlignment().getSequenceAt(i); + + if (current.getLength() < Width) + { + current.insertCharAt(Width - 1, viewport.getGapCharacter()); + } + } + alignPanel.repaint(); + } final TreePanel tp; @@ -1120,9 +1157,13 @@ public class AlignFrame protected void about_actionPerformed(ActionEvent e) { - class AboutPanel - extends Canvas + + class AboutPanel extends Canvas { + String version; + public AboutPanel(String version) + { this.version = version; } + public void paint(Graphics g) { g.setColor(Color.white); @@ -1133,7 +1174,7 @@ public class AlignFrame int y = 5, x = 7; g.setColor(Color.black); g.setFont(new Font("Helvetica", Font.BOLD, 14)); - g.drawString("JalView - Release 2.01", 200, y += fh); + g.drawString("Jalview - Release "+version, 200, y += fh); g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton.", x, y += fh * 2); @@ -1149,8 +1190,32 @@ public class AlignFrame } } + String version = "test"; + java.net.URL url = getClass().getResource("/.build_properties"); + if (url != null) + { + try + { + BufferedReader reader = new BufferedReader(new InputStreamReader( + url.openStream())); + String line; + while ( (line = reader.readLine()) != null) + { + if (line.indexOf("VERSION") > -1) + { + version = line.substring(line.indexOf("=") + 1); + } + } + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + + Frame frame = new Frame(); - frame.add(new AboutPanel()); + frame.add(new AboutPanel(version)); jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 200); }