diff --git a/uk/ac/sanger/artemis/components/EntryEdit.java b/uk/ac/sanger/artemis/components/EntryEdit.java index 0820d3e43943fc869c9fc439070bd7a315c81921..82fc8cab798bbf82f5e4839dea7c646a6d43f238 100644 --- a/uk/ac/sanger/artemis/components/EntryEdit.java +++ b/uk/ac/sanger/artemis/components/EntryEdit.java @@ -20,7 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EntryEdit.java,v 1.59 2008-01-30 09:56:57 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EntryEdit.java,v 1.60 2008-03-07 12:20:44 tjc Exp $ */ package uk.ac.sanger.artemis.components; @@ -67,7 +67,7 @@ import java.util.Vector; * Each object of this class is used to edit an EntryGroup object. * * @author Kim Rutherford - * @version $Id: EntryEdit.java,v 1.59 2008-01-30 09:56:57 tjc Exp $ + * @version $Id: EntryEdit.java,v 1.60 2008-03-07 12:20:44 tjc Exp $ * */ public class EntryEdit extends JFrame @@ -1435,6 +1435,104 @@ public class EntryEdit extends JFrame tabPane.add("Short Cuts", shortcut_pane); + // + // Contig ordering options + // + final Vector contigKeys = FeatureDisplay.getContigKeys(); + final Vector allPossibleContigKeys = FeatureDisplay.getAllPossibleContigKeys(); + final Vector nonContigKeys = new Vector(); + + for(int i=0; i<allPossibleContigKeys.size(); i++) + { + String keyStr = ((String)allPossibleContigKeys.get(i)); + if( !contigKeys.contains(keyStr) ) + nonContigKeys.add(keyStr); + } + + + final DefaultListModel showListModel = new DefaultListModel(); + for(int i=0; i<contigKeys.size(); i++) + showListModel.addElement(contigKeys.get(i)); + final JList displayList = new JList(showListModel); + + + final DefaultListModel hideListModel = new DefaultListModel(); + for(int i=0; i<nonContigKeys.size(); i++) + hideListModel.addElement(nonContigKeys.get(i)); + final JList hideList = new JList(hideListModel); + + + final JButton hide_butt = new JButton(">>"); + hide_butt.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + while(!displayList.isSelectionEmpty()) + { + final String hideKey = (String)displayList.getSelectedValue(); + + nonContigKeys.add(hideKey); + if(contigKeys.contains(hideKey)) + contigKeys.remove(hideKey); + + hideListModel.add(nonContigKeys.indexOf(hideKey), hideKey); + showListModel.removeElement(hideKey); + } + } + }); + + + final JPanel panel = new JPanel(new BorderLayout()); + final JPanel contigPanel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + c.anchor = GridBagConstraints.NORTHWEST; + + c.ipadx = 50; + c.gridx = 0; + c.gridy = 0; + contigPanel.add(new JLabel("Contig Ordering Features:"),c); + c.gridy = 1; + JScrollPane jspContig = new JScrollPane(displayList); + Dimension d = new Dimension(300, jspContig.getPreferredSize().height); + jspContig.setPreferredSize(d); + contigPanel.add(jspContig,c); + c.gridy = 2; + contigPanel.add(hide_butt,c); + + final JButton show_butt = new JButton("<<"); + show_butt.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + while(!hideList.isSelectionEmpty()) + { + final String showKey = (String)hideList.getSelectedValue(); + + if(nonContigKeys.contains(showKey)) + nonContigKeys.remove(showKey); + contigKeys.add(showKey); + + showListModel.add(contigKeys.indexOf(showKey), showKey); + hideListModel.removeElement(showKey); + } + } + }); + + c.gridx = 1; + c.gridy = 0; + contigPanel.add(new JLabel("Non-Contig Ordering Features:"),c); + c.gridy = 1; + JScrollPane jspNonContig = new JScrollPane(hideList); + jspNonContig.setPreferredSize(d); + contigPanel.add(jspNonContig,c); + c.gridy = 2; + contigPanel.add(show_butt,c); + + panel.add(contigPanel, BorderLayout.CENTER); + tabPane.add("Contig Tool Options", panel); + + /*String urlString = (String)Options.getOptions().getOptionValues("srs_url").elementAt(0); Box yBox = Box.createVerticalBox(); JTextField srsField = new JTextField(urlString); @@ -1487,8 +1585,8 @@ public class EntryEdit extends JFrame break; FastaTextPane.cacheHits[i] = cacheHits[i]; } - } - + } + } }); file_menu.add(prefs); diff --git a/uk/ac/sanger/artemis/components/FeatureDisplay.java b/uk/ac/sanger/artemis/components/FeatureDisplay.java index 86e3843f399f66c66087d1f312b6f579a2e10e03..7c29c2997ff3cf67abd68547d6eeb4ccf979feba 100644 --- a/uk/ac/sanger/artemis/components/FeatureDisplay.java +++ b/uk/ac/sanger/artemis/components/FeatureDisplay.java @@ -20,7 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/FeatureDisplay.java,v 1.55 2008-02-15 16:59:03 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/FeatureDisplay.java,v 1.56 2008-03-07 12:20:44 tjc Exp $ */ package uk.ac.sanger.artemis.components; @@ -70,7 +70,7 @@ import javax.swing.JFrame; * This component is used for displaying an Entry. * * @author Kim Rutherford - * @version $Id: FeatureDisplay.java,v 1.55 2008-02-15 16:59:03 tjc Exp $ + * @version $Id: FeatureDisplay.java,v 1.56 2008-03-07 12:20:44 tjc Exp $ **/ public class FeatureDisplay extends EntryGroupPanel @@ -280,6 +280,8 @@ public class FeatureDisplay extends EntryGroupPanel private static Color dark_green = new Color(0, 150, 0); private final int scrollbar_style; + + private static Vector contigKeys; private Object[] protein_keys = { "CDS", "exon", @@ -4838,12 +4840,27 @@ public class FeatureDisplay extends EntryGroupPanel protected static Vector getContigKeys() { - Vector contig_keys = new Vector(3); - contig_keys.add("fasta_record"); - contig_keys.add("contig"); - contig_keys.add("insertion_gap"); + if(contigKeys == null) + { + contigKeys = new Vector(3); + contigKeys.add("fasta_record"); + contigKeys.add("contig"); + contigKeys.add("insertion_gap"); + } - return contig_keys; + return contigKeys; + } + + protected static Vector getAllPossibleContigKeys() + { + Vector allPossibleContigKeys = new Vector(); + allPossibleContigKeys.add("fasta_record"); + allPossibleContigKeys.add("contig"); + allPossibleContigKeys.add("insertion_gap"); + allPossibleContigKeys.add("gap"); + allPossibleContigKeys.add("scaffold"); + allPossibleContigKeys.add("source"); + return allPossibleContigKeys; } /**