diff --git a/uk/ac/sanger/artemis/components/variant/IOUtils.java b/uk/ac/sanger/artemis/components/variant/IOUtils.java index a9d2da42b2ffcf24af59394a2bb48637c19879cb..0267cfa3712b8374201d64da5bb7549117e579c0 100644 --- a/uk/ac/sanger/artemis/components/variant/IOUtils.java +++ b/uk/ac/sanger/artemis/components/variant/IOUtils.java @@ -198,6 +198,8 @@ class IOUtils name); File f = getFile(newfile.getAbsolutePath(), 1, ".fasta"); + if(f == null) + return; writer = new FileWriter(f); fastaFiles += f.getAbsolutePath()+"\n"; } @@ -275,13 +277,34 @@ class IOUtils String fastaFiles = ""; AbstractVCFReader vcfReaders[] = vcfView.getVcfReaders(); - for (int i = 0; i < vcfReaders.length; i++) + + try { - try + int opt = 0; + if(vcfReaders.length > 1) + { + Object[] options = { "Single File", "Multiple Files" }; + opt = JOptionPane.showOptionDialog(null, "Write to :", + "Output File", + JOptionPane.DEFAULT_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, options, options[0]); + } + + if(!view && opt == 0) + { + File f = getFile(vcfReaders[0].getFileName(), 1, suffix); + if(f == null) + return; + writer = new FileWriter(f); + fastaFiles += f.getAbsolutePath()+"\n"; + } + + for (int i = 0; i < vcfReaders.length; i++) { - if(!view) + if(!view && opt == 1) { - File f = getFile(vcfReaders[i].getFileName(), vcfReaders.length, suffix); + File f = getFile(vcfReaders[0].getFileName(), vcfReaders.length, suffix); writer = new FileWriter(f); fastaFiles += f.getAbsolutePath()+"\n"; } @@ -296,13 +319,12 @@ class IOUtils FeatureSegment seg = segs.elementAt(k); int sbeg = seg.getRawRange().getStart(); int send = seg.getRawRange().getEnd(); - buff.append( getAllBasesInRegion(vcfReaders[i], sbeg, send, seg.getBases(), - features, vcfView, f.isForwardFeature()) ); + features, vcfView, f.isForwardFeature()) ); } - StringBuffer header = new StringBuffer(f.getSystematicName()); - header.append(" "+f.getIDString()+" "); + StringBuffer header = new StringBuffer(f.getSystematicName()).append(" "); + header.append(f.getIDString()).append(" "); final String product = f.getProductString(); header.append( (product == null ? "undefined product" : product) ); header.append(" ").append(f.getWriteRange()); @@ -311,21 +333,24 @@ class IOUtils if(view) // sequence viewer { SequenceViewer viewer = - new SequenceViewer ("Feature base viewer for feature:" + - f.getIDString (), false); + new SequenceViewer ("Feature base viewer for feature:" + + f.getIDString (), false); viewer.setSequence(">"+header.toString(), buff.toString()); } else // write to file writeSequence(writer, header.toString(), buff.toString()); } - if(writer != null) + if(writer != null && opt == 1) writer.close(); } - catch (IOException e) - { - e.printStackTrace(); - } + + if(writer != null && opt == 0) + writer.close(); + } + catch(IOException e) + { + e.printStackTrace(); } if(!view )