X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=ec03b859b49a66f09151777f4b5422246403778e;hb=012fc200ee0d124003524855ac7cd50be4b7456c;hp=5843844fbeb8f7b362c622c6d23fd214a0aa0cec;hpb=9816dd282fa1ec6731dd8afe6c4f255f6d0a2dd4;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index 5843844..ec03b85 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -25,6 +25,8 @@ import java.awt.*; import java.util.*; import java.awt.image.*; +import javax.swing.*; +import javax.swing.JOptionPane; /** @@ -54,9 +56,6 @@ public class FeatureRenderer String [] renderOrder; - boolean newFeatureAdded = false; - - /** * Creates a new FeatureRenderer object. * @@ -177,7 +176,6 @@ public class FeatureRenderer || newFeatureAdded) { findAllFeatures(); - newFeatureAdded = false; if(av.featuresDisplayed.size()<1) return; @@ -335,18 +333,23 @@ public class FeatureRenderer } + boolean newFeatureAdded = false; + public void featuresAdded() { - newFeatureAdded = true; findAllFeatures(); } boolean findingFeatures = false; synchronized void findAllFeatures() { + newFeatureAdded = false; if(findingFeatures) + { + newFeatureAdded = true; return; + } findingFeatures = true; jalview.schemes.UserColourScheme ucs = new @@ -412,17 +415,122 @@ public class FeatureRenderer } - public void addNewFeature(String name, Color col, String group) + static String lastFeatureAdded; + static String lastFeatureGroupAdded; + static String lastDescriptionAdded; + + public boolean createNewFeatures(SequenceI[] sequences, + SequenceFeature [] features) { - setColour(name, col); - if(av.featuresDisplayed==null) - av.featuresDisplayed = new Hashtable(); + JPanel bigPanel = new JPanel(new BorderLayout()); + JComboBox name = new JComboBox(); + JComboBox source = new JComboBox(); + JTextArea description = new JTextArea(3,25); + + JPanel panel = new JPanel(new GridLayout(2, 2)); + panel.add(new JLabel("New Sequence Feature Name: ",JLabel.RIGHT)); + panel.add(name); + panel.add(new JLabel("Feature Group: ", JLabel.RIGHT)); + panel.add(source); + name.setEditable(true); + source.setEditable(true); + + bigPanel.add(panel, BorderLayout.NORTH); + panel = new JPanel(); + panel.add(new JLabel("Description: ", JLabel.RIGHT)); + description.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + description.setLineWrap(true); + panel.add(new JScrollPane(description)); + bigPanel.add(panel, BorderLayout.CENTER); + + + Enumeration en; + if (av.featuresDisplayed != null) + { + en = av.featuresDisplayed.keys(); + while (en.hasMoreElements()) + { + name.addItem(en.nextElement().toString()); + } + } - if(group == null) - group = "NOGROUP"; + if (featureGroups != null) + { + en = featureGroups.keys(); + while (en.hasMoreElements()) + { + source.addItem(en.nextElement().toString()); + } + } + + if (lastFeatureAdded == null) + if (features[0].type != null) + lastFeatureAdded = features[0].type; + else + lastFeatureAdded = "feature_1"; + + if (lastFeatureGroupAdded == null) + if (features[0].featureGroup != null) + lastFeatureGroupAdded = features[0].featureGroup; + else + lastFeatureAdded = "Jalview"; + + + name.setSelectedItem(lastFeatureAdded); + source.setSelectedItem(lastFeatureGroupAdded); + description.setText( + lastDescriptionAdded == null ? + features[0].description : lastDescriptionAdded); + + + int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop, + bigPanel, "Create New Sequence Feature(s)", + JOptionPane.OK_CANCEL_OPTION); + + + if(reply==JOptionPane.OK_OPTION + && name.getSelectedItem()!=null + && source.getSelectedItem()!=null) + { + lastFeatureAdded = name.getSelectedItem().toString(); + lastFeatureGroupAdded = source.getSelectedItem().toString(); + lastDescriptionAdded = description.getText().replaceAll("\n"," "); + + jalview.io.FeaturesFile ffile = new jalview.io.FeaturesFile(); + + + for(int i=0; i