diff --git a/README b/README index bad513a64641ac58385710e420cc8029d52b2e5b..510968837cbe1843842e5d84208f39e6f5b7ddfb 100644 --- a/README +++ b/README @@ -37,7 +37,7 @@ For information on how to get Artemis see this web page: COPYRIGHT -Copyright (C) 1998-2011 Genome Research Limited +Copyright (C) 1998-2013 Genome Research Limited This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/etc/versions b/etc/versions index 564964bc2e488b2a09c028c2b85628d9be4f72f7..7a91390aebd7492ab4f200248fb9336d18cec1dd 100644 --- a/etc/versions +++ b/etc/versions @@ -1,4 +1,4 @@ -Artemis Release 14.2.3 -ACT Release 11.2.3 +Artemis Release 14.2.4 +ACT Release 11.2.4 DNAPlotter Release 1.9 BamView 1.2.7 diff --git a/uk/ac/sanger/artemis/FeatureSegmentVector.java b/uk/ac/sanger/artemis/FeatureSegmentVector.java index 68765ea951d3978b9cfa34dc657b5de1c9c4f46f..d360cc5da0c8e7e7c60a5616413eb3acb3684209 100644 --- a/uk/ac/sanger/artemis/FeatureSegmentVector.java +++ b/uk/ac/sanger/artemis/FeatureSegmentVector.java @@ -25,6 +25,9 @@ package uk.ac.sanger.artemis; +import java.util.Collections; +import java.util.Comparator; + import uk.ac.sanger.artemis.util.FastVector; /** @@ -36,6 +39,12 @@ import uk.ac.sanger.artemis.util.FastVector; **/ public class FeatureSegmentVector { + + /** + * Storage for FeatureSegment objects. + */ + private FastVector vector = new FastVector (); + /** * Create a new vector of FeatureSegment objects. **/ @@ -146,9 +155,17 @@ public class FeatureSegmentVector { return_vector.vector = (FastVector) vector.clone (); return return_vector; } + + public void sortByPosition() { + Collections.sort(vector, new PositionComparator()); + } +} - /** - * Storage for FeatureSegment objects. - */ - private FastVector vector = new FastVector (); +class PositionComparator implements Comparator<FeatureSegment> { + public int compare(FeatureSegment s1, FeatureSegment s2) { + if(s1.getStart().getPosition() < s2.getStart().getPosition()) + return -1; + else + return 1; + } } diff --git a/uk/ac/sanger/artemis/components/FeatureBaseViewer.java b/uk/ac/sanger/artemis/components/FeatureBaseViewer.java index 33d058de29a7455921d1d74f1e592231eca55384..5e08129f5ffcf5ad71f509f2a2da25d987c16a9f 100644 --- a/uk/ac/sanger/artemis/components/FeatureBaseViewer.java +++ b/uk/ac/sanger/artemis/components/FeatureBaseViewer.java @@ -25,16 +25,16 @@ package uk.ac.sanger.artemis.components; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + import uk.ac.sanger.artemis.*; -import java.awt.event.*; /** - * A component for viewing the bases of a feature. Once created this + * A component for viewing the bases of a feature. Once created this * component listens for FeatureChange events to keep the the sequence up to * date. - * * @author Kim Rutherford - * @version $Id: FeatureBaseViewer.java,v 1.2 2008-12-16 11:46:15 tjc Exp $ **/ public class FeatureBaseViewer @@ -49,6 +49,8 @@ public class FeatureBaseViewer /** The Entry that contains the Feature this object is displaying. */ private Entry entry; + private FeatureSegmentVector segments; + /** * Create a new FeatureBaseViewer component to display the bases of the * given Feature. @@ -58,10 +60,12 @@ public class FeatureBaseViewer * sequence). **/ public FeatureBaseViewer (final Feature feature, - final boolean include_numbers) + final boolean include_numbers, + final FeatureSegmentVector segments) { this.feature = feature; this.entry = feature.getEntry (); + this.segments = segments; sequence_viewer = new SequenceViewer ("Feature base viewer for feature:" + @@ -126,26 +130,33 @@ public class FeatureBaseViewer **/ private void redisplay () { - final StringBuffer header_buffer = new StringBuffer(); - - header_buffer.append(getFeature().getSystematicName()); - header_buffer.append(" "); - header_buffer.append(getFeature().getIDString()); - header_buffer.append(" "); - final String product = getFeature().getProductString(); - - if(product == null) - header_buffer.append("undefined product"); - else - header_buffer.append(product); - - header_buffer.append(" ").append(getFeature().getWriteRange()); + final StringBuilder hdr = new StringBuilder(); + hdr.append(getFeature().getSystematicName()).append(" "); + hdr.append(getFeature().getIDString()).append(" "); + hdr.append(product == null ? "undefined product" : product); - final String comment = ">" + header_buffer.toString(); - - final String bases = getFeature ().getBases ().toUpperCase (); - sequence_viewer.setSequence (comment, bases); + final String bases; + if(segments != null) // display just for selected segments + { + final StringBuilder buffer = new StringBuilder(); + segments.sortByPosition(); + for(int i = 0; i < segments.size(); ++i) + { + final FeatureSegment segment = segments.elementAt(i); + buffer.append(segment.getBases()); + hdr.append(i == 0 ? " " : ",").append(segment.getRawRange().toString()); + } + hdr.append(getFeature ().isForwardFeature() ? " forward" : " reverse"); + bases = buffer.toString(); + } + else + { + hdr.append(" ").append(getFeature().getWriteRange()); + bases = getFeature ().getBases (); + } + + sequence_viewer.setSequence (">" + hdr.toString(), bases.toUpperCase ()); } /** diff --git a/uk/ac/sanger/artemis/components/MultiComparator.java b/uk/ac/sanger/artemis/components/MultiComparator.java index 06a393fb88061a2b83333f2d734681cb74525b34..c412fd8e69ce82af1b2d1edd540a5646b1c51860 100644 --- a/uk/ac/sanger/artemis/components/MultiComparator.java +++ b/uk/ac/sanger/artemis/components/MultiComparator.java @@ -301,7 +301,7 @@ public class MultiComparator extends JFrame if(i < getAlignmentViewerArray().length) { c.fill = GridBagConstraints.BOTH; - c.weighty = 1; + c.weighty = 0.5; getContentPane().add(getAlignmentViewerArray()[i], c); } } diff --git a/uk/ac/sanger/artemis/components/StickyFileChooser.java b/uk/ac/sanger/artemis/components/StickyFileChooser.java index 96314b5102f7fc55830626477e5637756b33d737..caf1e98c29f506b74d3ddbf061b93fcc67b79cb0 100644 --- a/uk/ac/sanger/artemis/components/StickyFileChooser.java +++ b/uk/ac/sanger/artemis/components/StickyFileChooser.java @@ -26,21 +26,18 @@ package uk.ac.sanger.artemis.components; import uk.ac.sanger.artemis.Options; - import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; /** * A JFileChooser that remembers which directory it is in for next time. - * - * @author Kim Rutherford <kmr@sanger.ac.uk> - * @version $Id: StickyFileChooser.java,v 1.1 2004-06-09 09:47:49 tjc Exp $ + * @author Kim Rutherford **/ public class StickyFileChooser extends JFileChooser { - + private static final long serialVersionUID = 1L; /** * Used to remember the directory the JFileChooser was in when the user * pressed OK. This is used as the starting directory next time. diff --git a/uk/ac/sanger/artemis/components/ViewMenu.java b/uk/ac/sanger/artemis/components/ViewMenu.java index 24e934b54a80ef827bcb43e7660653fb838ac7b8..d86c8114b0f4461b1c85f87b8282bfdb117f653f 100644 --- a/uk/ac/sanger/artemis/components/ViewMenu.java +++ b/uk/ac/sanger/artemis/components/ViewMenu.java @@ -143,26 +143,42 @@ public class ViewMenu extends SelectionMenu } }); - final JMenuItem view_bases_item = new JMenuItem("Bases Of Selection"); + final JMenu view_bases = new JMenu("Bases"); + final JMenuItem view_bases_item = new JMenuItem("Of Selection"); view_bases_item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { - viewSelectedBases(true); + viewSelectedBases(true, false); } }); + view_bases.add(view_bases_item); final JMenuItem view_bases_as_fasta_item = - new JMenuItem("Bases Of Selection As FASTA"); + new JMenuItem("Of Selection As FASTA"); view_bases_as_fasta_item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { - viewSelectedBases(false); + viewSelectedBases(false, false); } }); + view_bases.add(view_bases_as_fasta_item); + view_bases.addSeparator(); - final JMenuItem view_aa_item = new JMenuItem("Amino Acids Of Selection"); + final JMenuItem view_exon_bases = + new JMenuItem("Of Selected Exons As FASTA"); + view_exon_bases.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent event) + { + viewSelectedBases(false, true); + } + }); + view_bases.add(view_exon_bases); + + final JMenu view_aa = new JMenu("Amino Acids"); + final JMenuItem view_aa_item = new JMenuItem("Of Selection"); view_aa_item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) @@ -170,9 +186,10 @@ public class ViewMenu extends SelectionMenu viewSelectedAminoAcids(true); } }); + view_aa.add(view_aa_item); final JMenuItem view_aa_as_fasta_item = - new JMenuItem("Amino Acids Of Selection As FASTA"); + new JMenuItem("Of Selection As FASTA"); view_aa_as_fasta_item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) @@ -180,6 +197,7 @@ public class ViewMenu extends SelectionMenu viewSelectedAminoAcids(false); } }); + view_aa.add(view_aa_as_fasta_item); final JMenuItem overview_item = new JMenuItem("Overview"); overview_item.setAccelerator(OVERVIEW_KEY); @@ -554,10 +572,8 @@ public class ViewMenu extends SelectionMenu add(forward_overview_item); add(reverse_overview_item); addSeparator(); - add(view_bases_item); - add(view_bases_as_fasta_item); - add(view_aa_item); - add(view_aa_as_fasta_item); + add(view_bases); + add(view_aa); addSeparator(); add(feature_info_item); add(plot_features_item); @@ -1712,32 +1728,36 @@ public class ViewMenu extends SelectionMenu * (every second line of the display will be numbers rather than * sequence). **/ - private void viewSelectedBases (final boolean include_numbers) { + private void viewSelectedBases (final boolean include_numbers, final boolean selectedExonsOnly) { if (getSelection ().isEmpty ()) { new MessageDialog (getParentFrame (), "Nothing selected"); return; } - final MarkerRange range = selection.getMarkerRange (); + if (selection.getMarkerRange () == null) { + final FeatureVector fs = getSelection ().getAllFeatures (); - if (range == null) { - final FeatureVector features_to_view = getSelection ().getAllFeatures (); - - if (features_to_view.size () > MAXIMUM_SELECTED_FEATURES) { - new MessageDialog (getParentFrame (), - "warning: only viewing bases for " + - "the first " + MAXIMUM_SELECTED_FEATURES + - " selected features"); + if(selectedExonsOnly) + { + if (fs.size () > 1) + new MessageDialog (getParentFrame (), + "warning: only viewing bases for the selected exons of one feature"); + new FeatureBaseViewer (fs.elementAt(0), include_numbers, + getSelection ().getSelectedSegments()); } - - for (int i = 0 ; - i < features_to_view.size () && i < MAXIMUM_SELECTED_FEATURES ; - ++i) { - final Feature this_feature = features_to_view.elementAt (i); - - new FeatureBaseViewer (this_feature, include_numbers); + else + { + if (fs.size () > MAXIMUM_SELECTED_FEATURES) + new MessageDialog (getParentFrame (), + "warning: only viewing bases for " + + "the first " + MAXIMUM_SELECTED_FEATURES + + " selected features"); + for (int i = 0; i < fs.size () && i < MAXIMUM_SELECTED_FEATURES; ++i) + new FeatureBaseViewer (fs.elementAt (i), include_numbers, null); } - } else { + } + else + { final SequenceViewer sequence_viewer = new SequenceViewer ("Selected bases", include_numbers); diff --git a/uk/ac/sanger/artemis/components/alignment/BamFrame.java b/uk/ac/sanger/artemis/components/alignment/BamFrame.java index 394836007d8781c4cfe48d5a876a9fc592cd1856..8c23edc383a6460e3f8a7680a35257c2564d7e97 100644 --- a/uk/ac/sanger/artemis/components/alignment/BamFrame.java +++ b/uk/ac/sanger/artemis/components/alignment/BamFrame.java @@ -23,7 +23,7 @@ import javax.swing.JOptionPane; // methods we wish to // use as delegates for various com.apple.eawt.ApplicationListener // methods - Class bamClass = Class.forName("uk.ac.sanger.artemis.components.alignment.BamFrame"); + Class<?> bamClass = Class.forName("uk.ac.sanger.artemis.components.alignment.BamFrame"); BamOSXAdapter.setQuitHandler(this, bamClass.getDeclaredMethod( "exitApp", (Class[]) null)); BamOSXAdapter.setAboutHandler(this, bamClass.getDeclaredMethod("about", diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java index b576aa4a32c05179e9a8d6f73af27f8b381a5297..93193d7684e69831734b6f8acce3234e82eb1dde 100644 --- a/uk/ac/sanger/artemis/components/alignment/BamView.java +++ b/uk/ac/sanger/artemis/components/alignment/BamView.java @@ -2382,7 +2382,7 @@ public class BamView extends JPanel * @param c * @return */ - protected ImageIcon getImageIcon(Color c) + private ImageIcon getImageIcon(Color c) { BufferedImage image = (BufferedImage)this.createImage(10, 10); Graphics2D g2 = image.createGraphics(); diff --git a/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java b/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java index ee720fca2e79606505f59dc3b090db93c605fc19..ebf7c558a9591b70dcd66c3c5d953ed9661c408e 100644 --- a/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java +++ b/uk/ac/sanger/artemis/components/alignment/GroupBamFrame.java @@ -180,13 +180,9 @@ class GroupBamFrame extends JFrame c.gridy += 1; c.gridx = 0; bamPanel.add(new JLabel(bam), c); - - Color col = bamView.getColorByJCheckBoxMenuItem(cbBam); - if(col == null) - col = Color.BLACK; - + c.gridx = 1; - bamPanel.add(new JLabel(bamView.getImageIcon(col)), c); + bamPanel.add(new JLabel(cbBam.getIcon()), c); c.gridx = 2; JComboBox groupCombo = new JComboBox( groups ); diff --git a/uk/ac/sanger/artemis/components/alignment/ReadCountDialog.java b/uk/ac/sanger/artemis/components/alignment/ReadCountDialog.java index f1bef0a0ca7c4962f6bc6a70a5b80d7c9ff26243..17861ff9661f76b1165671bfc6f2a98c3e558f24 100644 --- a/uk/ac/sanger/artemis/components/alignment/ReadCountDialog.java +++ b/uk/ac/sanger/artemis/components/alignment/ReadCountDialog.java @@ -140,7 +140,7 @@ import uk.ac.sanger.artemis.util.StringVector; qNames = new StringVector(); Object objs[] = systematicListSelectionPanel.getResultArray(); for(Object o: objs) - qNames.add(o); + qNames.add((String)o); } return pickName(f, qNames); diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java index 83220e3e34ef54f64c046ec2346e1a9efd598f8c..31a60edc86b723ecefc2f6fdbfbebe237fb4abf0 100644 --- a/uk/ac/sanger/artemis/components/variant/VCFview.java +++ b/uk/ac/sanger/artemis/components/variant/VCFview.java @@ -158,7 +158,7 @@ public class VCFview extends JPanel private int dragStart = -1; private JPopupMenu popup; private JMenu vcfFilesMenu = new JMenu("VCF files"); - private int LINE_HEIGHT = 15; + private int LINE_HEIGHT = 14; protected boolean showSynonymous = true; protected boolean showNonSynonymous = true; @@ -262,7 +262,6 @@ public class VCFview extends JPanel JPanel bottomPanel = new JPanel(new BorderLayout()); graphPanel = new GraphPanel(this); graphPanel.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.gray)); - graphPanel.setPreferredSize(new Dimension(900, 100)); graphPanel.setVisible(false); bottomPanel.add(graphPanel, BorderLayout.CENTER); @@ -342,8 +341,31 @@ public class VCFview extends JPanel for(int i=0; i<vcfFiles.size(); i++) addToViewMenu(i); - popup.addSeparator(); + final JMenu lineHgt = new JMenu("Row Height"); + popup.add(lineHgt); + final ButtonGroup groupLnHgt = new ButtonGroup(); + for(int i=8; i<37; i+=2) + { + final int ii = i; + final JCheckBoxMenuItem hgtMenu = new JCheckBoxMenuItem( + Integer.toString(i), (i == LINE_HEIGHT)); + groupLnHgt.add(hgtMenu); + hgtMenu.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + if(hgtMenu.isSelected()) + { + LINE_HEIGHT = ii; + setDisplay(); + revalidate(); + } + } + }); + lineHgt.add(hgtMenu); + } + popup.addSeparator(); markNewStops.addActionListener(new ActionListener() { @@ -580,7 +602,7 @@ public class VCFview extends JPanel graphDP.setSelected(false); graphSim.setSelected(false); graphPanel.setType(0); - graphPanel.repaint(); + setGraphSize(); } }); @@ -592,7 +614,7 @@ public class VCFview extends JPanel graphSNP.setSelected(false); graphSim.setSelected(false); graphPanel.setType(1); - graphPanel.repaint(); + setGraphSize(); } }); @@ -604,7 +626,7 @@ public class VCFview extends JPanel graphSNP.setSelected(false); graphDP.setSelected(false); graphPanel.setType(2); - graphPanel.repaint(); + setGraphSize(); } }); @@ -643,6 +665,19 @@ public class VCFview extends JPanel popup.add(labels); } + private void setGraphSize() + { + repaint(); + if(graphPanel.isVisible()) + graphPanel.setPreferredSize(new Dimension(900, 70)); + else + graphPanel.setPreferredSize(new Dimension(900, 1)); + + vcfPanel.setPreferredSize(new Dimension(900, + graphPanel.getPreferredSize().height+getPreferredSize().height)); + vcfPanel.revalidate(); + } + private void createTopPanel(final JFrame frame, final EntryEdit entry_edit) { final JComponent topPanel; diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java index ce33eed6698adcaa6cf2897f2692b32fc9af8f19..162d45f94ae416b43f1538d0d6b5973bd7fae3dc 100644 --- a/uk/ac/sanger/artemis/io/GFFStreamFeature.java +++ b/uk/ac/sanger/artemis/io/GFFStreamFeature.java @@ -1187,7 +1187,7 @@ public class GFFStreamFeature extends SimpleDocumentFeature new StringTokenizer((String)att_values.get(0), ","); StringVector str_values = new StringVector(); while(stok.hasMoreTokens()) - str_values.add(stok.nextElement()); + str_values.add(stok.nextToken()); att_values = str_values; } diff --git a/uk/ac/sanger/artemis/plot/UserDataAlgorithm.java b/uk/ac/sanger/artemis/plot/UserDataAlgorithm.java index 0a69f718add3b0acc61c65572245071d91b9a580..a4e6fc83ee7ab1740b56d16eecc92a77a4a68e89 100644 --- a/uk/ac/sanger/artemis/plot/UserDataAlgorithm.java +++ b/uk/ac/sanger/artemis/plot/UserDataAlgorithm.java @@ -953,13 +953,13 @@ public class UserDataAlgorithm extends BaseAlgorithm base = Integer.parseInt((String)parts.get(getStartColumn()-1)) - start; else { - int b = Integer.parseInt((String)parts.get(getStartColumn()-1)); - int e = Integer.parseInt((String)parts.get(getEndColumn()-1)); + int b = Integer.parseInt(parts.get(getStartColumn()-1)); + int e = Integer.parseInt(parts.get(getEndColumn()-1)); base = b + ((b - e)/2) - start; } for(int i=0; i<rvalues[base].length; i++) { - float val = Float.parseFloat( (String) parts.get(i+getEndColumn()) ); + float val = Float.parseFloat( parts.get(i+getEndColumn()) ); if(logTransform) val = (float) Math.log(val+1); diff --git a/uk/ac/sanger/artemis/util/StringVector.java b/uk/ac/sanger/artemis/util/StringVector.java index 6baecc33ec338f263ca6d01ee44ab6694088d61b..95f560d579a90ea74c2f1060d6a6e1bb08440016 100644 --- a/uk/ac/sanger/artemis/util/StringVector.java +++ b/uk/ac/sanger/artemis/util/StringVector.java @@ -36,8 +36,10 @@ import java.util.Comparator; * @version $Id: StringVector.java,v 1.5 2005-10-13 12:06:12 tjc Exp $ **/ -public class StringVector extends Vector +public class StringVector extends Vector<String> { + private static final long serialVersionUID = 1L; + /** * Create a new vector of String objects. **/ @@ -85,10 +87,10 @@ public class StringVector extends Vector * package. */ public void sort() - { - final Comparator comparator = new Comparator() + { + final Comparator<String> comparator = new Comparator<String>() { - public int compare(Object fst, Object snd) + public int compare(String fst, String snd) { if(fst == null) { @@ -102,7 +104,7 @@ public class StringVector extends Vector if(snd == null) return 1; } - return ((String)fst).compareTo((String) snd); + return fst.compareTo(snd); } }; @@ -122,61 +124,59 @@ public class StringVector extends Vector * splitting using the given characters. If the argument String is zero * length or it consists only of the characters used to split, the return * vector will be zero length. - * @param keep_zero_char_tokens If true then zero width tokens will be - * returned. eg. when spliting on tabs if this parameter is true then + * @param keep_zero_char_toks If true then zero width tokens will be + * returned. eg. when splitting on tabs if this parameter is true then * splitting this "\t\tfoo" will return "" and "foo". If this flag is * false then the split_characters will be treated as a block (and "foo" * would be returned in the example. **/ public static StringVector getStrings(final String argument, - String split_characters, - final boolean keep_zero_char_tokens) + final String delim, + final boolean keep_zero_char_toks) { - final StringVector return_vector = new StringVector(); + final StringVector strVector = new StringVector(); - String value; - String last_value = null; + String tok; + String lastTok = null; + int idx1 = 0; + int idx2; + final int argLen = argument.length(); - int ind1 = 0; - int ind2; - int argLen = argument.length(); - - while(ind1 < argLen) + while(idx1 < argLen) { - ind2 = argument.indexOf(split_characters,ind1); - if(ind2 == ind1) + idx2 = argument.indexOf(delim,idx1); + if(idx2 == idx1) { - ind1++; + idx1++; continue; } - if(ind2 < 0) - ind2 = argLen; + if(idx2 < 0) + idx2 = argLen; - value = argument.substring(ind1,ind2); - ind1 = ind2+1; + tok = argument.substring(idx1,idx2); + idx1 = idx2+1; - if(value.length() == 1 && - split_characters.indexOf(value.charAt(0)) != -1) + if(tok.length() == 1 && + delim.indexOf(tok.charAt(0)) != -1) { // ignore the split characters - - if(keep_zero_char_tokens && - (last_value == null || - last_value != null && last_value.length () == 1 && - split_characters.indexOf (last_value) != -1)) + if(keep_zero_char_toks && + (lastTok == null || + lastTok != null && lastTok.length () == 1 && + delim.indexOf (lastTok) != -1)) { - // we need to add a space because of two split_characters in a row - return_vector.add(""); + // add a space because of two split_characters in a row + strVector.add(""); } } else - return_vector.add(value); + strVector.add(tok); - last_value = value; + lastTok = tok; } - return return_vector; + return strVector; } /** @@ -207,13 +207,19 @@ public class StringVector extends Vector { String argument = "a a g g g c a c g t c g c a t c g a c t c"; long startTime = System.currentTimeMillis(); - for(int i=0; i<10000000; i++) getStrings(argument, " ", true); - long endTime = System.currentTimeMillis(); + System.out.println("TIME TAKEN "+ Long.toString(System.currentTimeMillis()-startTime)); - System.out.println("TIME TAKEN "+ Long.toString(endTime-startTime)); + startTime = System.currentTimeMillis(); + for(int i=0; i<10000000; i++) + { + java.util.StringTokenizer st = new java.util.StringTokenizer(argument, " ", true); + while(st.hasMoreTokens()) + st.nextToken(); + } + System.out.println("TIME TAKEN "+ Long.toString(System.currentTimeMillis()-startTime)); } } diff --git a/uk/ac/sanger/artemis/util/TextDocument.java b/uk/ac/sanger/artemis/util/TextDocument.java index 8955b44d75ca4af22efbe631980e9fa498a17482..2ceee5bab7e4af175de2e9e3bf1c1ab91f411d18 100644 --- a/uk/ac/sanger/artemis/util/TextDocument.java +++ b/uk/ac/sanger/artemis/util/TextDocument.java @@ -24,25 +24,28 @@ package uk.ac.sanger.artemis.util; -import java.io.*; import javax.swing.JOptionPane; -import uk.ac.sanger.artemis.components.SwingWorker; import java.awt.Toolkit; -import java.awt.datatransfer.*; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; /** * Objects of this class are Documents created from a file. - * **/ - public class TextDocument extends Document { /** - * * Create a new TextDocument from a String. * @param location This should be a file or directory name. * @param remote_file File on server - * **/ public TextDocument() { @@ -169,35 +172,4 @@ public class TextDocument extends Document return file_output_stream; } - /** - * - * Save the entry back to the ssh server - * - */ -/* - public void saveEntry(final File local_file) - { - SwingWorker putWorker = new SwingWorker() - { - FileTransferProgressMonitor monitor; - public Object construct() - { - monitor = new FileTransferProgressMonitor(null); - FTProgress progress = monitor.add(local_file.getName()); - - getRemoteFileNode().put(local_file, progress); - monitor.close(); - return null; - } - - public void finished() - { - if(monitor != null) - monitor.close(); - } - }; - putWorker.start(); - } -*/ - }