X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAppVarna.java;h=90542981d0351b1389a21b2019b0dfb6632a7e2d;hb=57c960648b550f10c7db40e39c7bb6a761d732b1;hp=7a1e206fa4b060bca27653124e8f78b20b4eb97b;hpb=f2469e3ede414575d5e8cd510ed5c916095b55bf;p=jalview.git diff --git a/src/jalview/gui/AppVarna.java b/src/jalview/gui/AppVarna.java index 7a1e206..9054298 100644 --- a/src/jalview/gui/AppVarna.java +++ b/src/jalview/gui/AppVarna.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -18,7 +18,10 @@ package jalview.gui; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.awt.*; + import javax.swing.*; import javax.swing.event.*; @@ -38,58 +41,123 @@ import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength; import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses; import fr.orsay.lri.varna.interfaces.InterfaceVARNAListener; import fr.orsay.lri.varna.models.VARNAConfig; +import fr.orsay.lri.varna.models.annotations.HighlightRegionAnnotation; +import fr.orsay.lri.varna.models.rna.ModeleBaseNucleotide; import fr.orsay.lri.varna.models.rna.RNA; -public class AppVarna extends JInternalFrame implements InterfaceVARNAListener// implements Runnable,SequenceStructureBinding, ViewSetProvider +public class AppVarna extends JInternalFrame implements InterfaceVARNAListener,SecondaryStructureListener// implements Runnable,SequenceStructureBinding, ViewSetProvider { AppVarnaBinding vab; VARNAPanel varnaPanel; - String name; + public String name; + + public StructureSelectionManager ssm; /*public AppVarna(){ vab = new AppVarnaBinding(); initVarna(); }*/ - public AppVarna(String seq,String struc,String name){ + + + public AppVarna(String seq,String struc,String name,AlignmentPanel ap){ ArrayList rnaList = new ArrayList(); RNA rna1 = new RNA(name); try { - rna1.setRNA(seq,struc); - } catch (ExceptionUnmatchedClosingParentheses e2) { + rna1.setRNA(seq,replaceOddGaps(struc)); + } catch (ExceptionUnmatchedClosingParentheses e2) { e2.printStackTrace(); } catch (ExceptionFileFormatOrSyntax e3) { e3.printStackTrace(); } + rnaList.add(trimRNA(rna1)); rnaList.add(rna1); + rna1.setName("consenus_"+rna1.getName()); + vab = new AppVarnaBinding(rnaList); //vab = new AppVarnaBinding(seq,struc); - name=this.name; - initVarna(); + //System.out.println("Hallo: "+name); + this.name=name; + initVarna(); + ssm = ap.getStructureSelectionManager(); + ssm.addStructureViewerListener(this); } public void initVarna(){ - //TODO: Why is it not possible to include varnaPanel in the AppVarna-Jframe? //vab.setFinishedInit(false); varnaPanel=vab.get_varnaPanel(); setBackground(Color.white); + JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,vab.getListPanel(),varnaPanel); getContentPane().setLayout(new BorderLayout()); - getContentPane().add(varnaPanel, BorderLayout.CENTER); - + getContentPane().add(split, BorderLayout.CENTER); + //getContentPane().add(vab.getTools(), BorderLayout.NORTH); varnaPanel.addVARNAListener(this); - jalview.gui.Desktop.addInternalFrame(this,name,getBounds().width, getBounds().height); + jalview.gui.Desktop.addInternalFrame(this,"VARNA -"+name,getBounds().width, getBounds().height); this.pack(); - this.setVisible(true); - //showPanel(true); + showPanel(true); + } + + public String replaceOddGaps(String oldStr){ + String patternStr = "[^([{<>}])]"; + String replacementStr = "."; + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(oldStr); + String newStr=matcher.replaceAll(replacementStr); + return newStr; } + public RNA trimRNA(RNA rna){ + RNA rnaTrim = new RNA("trim_"+rna.getName()); + try { + rnaTrim.setRNA(rna.getSeq(),replaceOddGaps(rna.getStructDBN())); + } catch (ExceptionUnmatchedClosingParentheses e2) { + e2.printStackTrace(); + } catch (ExceptionFileFormatOrSyntax e3) { + e3.printStackTrace(); + } + + StringBuffer seq=new StringBuffer(rnaTrim.getSeq()); + StringBuffer struc=new StringBuffer(rnaTrim.getStructDBN()); + for(int i=0;i