X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=b584d89254db8f3a0c175dac6762c68baccee8ad;hb=ddf3aca722d27da4bd2c58e9f0ab0909ba9639c0;hp=d20fa6356a101a9fa21edc654cd9bb6b74a4d178;hpb=4831e7f2dece110dee88b3fe802d50b845ed9603;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index d20fa63..b584d89 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -25,10 +25,9 @@ import java.awt.*; import java.util.*; import java.awt.image.*; -import javax.swing.JComboBox; -import javax.swing.JPanel; -import javax.swing.JLabel; +import javax.swing.*; import javax.swing.JOptionPane; +import java.awt.event.*; /** @@ -417,35 +416,90 @@ public class FeatureRenderer } - static String lastFeatureAdded = "feature_1"; - static String lastSourceAdded = "Jalview"; + static String lastFeatureAdded; + static String lastFeatureGroupAdded; + static String lastDescriptionAdded; public boolean createNewFeatures(SequenceI[] sequences, SequenceFeature [] features) { + return amendFeatures(sequences, features, true, null); + } - JComboBox name = new JComboBox(); - JComboBox source = new JComboBox(); + int featureIndex = 0; + boolean amendFeatures(final SequenceI[] sequences, + final SequenceFeature[] features, + boolean newFeatures, + final AlignmentPanel ap) + { + JPanel bigPanel = new JPanel(new BorderLayout()); + final JComboBox name = new JComboBox(); + final JComboBox source = new JComboBox(); + final JTextArea description = new JTextArea(3,25); + final JSpinner start = new JSpinner(); + final JSpinner end = new JSpinner(); + final JPanel colour = new JPanel(); + colour.setBorder(BorderFactory.createEtchedBorder()); + colour.setMaximumSize(new Dimension(40,10)); + colour.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent evt) + { + colour.setBackground( + JColorChooser.showDialog(Desktop.desktop, + "Select Feature Colour", + colour.getBackground())); + } + }); - JPanel panel = new JPanel(new GridLayout(2, 2)); - panel.add(new JLabel("New Sequence Feature Name")); + JPanel panel = new JPanel(new GridLayout(3, 2)); + panel.add(new JLabel("Sequence Feature Name: ",JLabel.RIGHT)); panel.add(name); - panel.add(new JLabel("Source:")); + panel.add(new JLabel("Feature Group: ", JLabel.RIGHT)); panel.add(source); - // name.setPreferredSize(new Dimension(300, 20)); + panel.add(new JLabel("Feature Colour: ", JLabel.RIGHT)); + JPanel tmp = new JPanel(); + tmp.add(colour); + colour.setPreferredSize(new Dimension(150,15)); + panel.add(tmp); name.setEditable(true); source.setEditable(true); - Enumeration en; - if (av.featuresDisplayed != null) + 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)); + + if(!newFeatures) { - en = av.featuresDisplayed.keys(); - while (en.hasMoreElements()) - { - name.addItem(en.nextElement().toString()); - } + bigPanel.add(panel, BorderLayout.SOUTH); + + panel = new JPanel(); + panel.add(new JLabel(" Start: ", JLabel.RIGHT)); + panel.add(start); + panel.add(new JLabel(" End: ", JLabel.RIGHT)); + panel.add(end); + bigPanel.add(panel, BorderLayout.CENTER); } + else + bigPanel.add(panel, BorderLayout.CENTER); + + 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"; + + + Enumeration en; if (featureGroups != null) { en = featureGroups.keys(); @@ -455,49 +509,172 @@ public class FeatureRenderer } } - name.setSelectedItem(lastFeatureAdded); - source.setSelectedItem(lastSourceAdded); + if (newFeatures) + { + if(av.featuresDisplayed != null) + { + en = av.featuresDisplayed.keys(); + while (en.hasMoreElements()) + { + name.addItem(en.nextElement().toString()); + } + } - int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop, - panel, "Create New Sequence Feature(s)", - JOptionPane.OK_CANCEL_OPTION); + name.setSelectedItem(lastFeatureAdded); + source.setSelectedItem(lastFeatureGroupAdded); + description.setText( + lastDescriptionAdded == null ? + features[0].description : lastDescriptionAdded); + if (getColour(lastFeatureAdded) != null) + { + colour.setBackground(getColour(lastFeatureAdded)); + colour.setForeground(getColour(lastFeatureAdded)); + } + else + { + colour.setBackground(new Color(60, 160, 115)); + colour.setForeground(new Color(60, 160, 115)); + } - if(reply==JOptionPane.OK_OPTION - && name.getSelectedItem()!=null - && source.getSelectedItem()!=null) + } + else if (!newFeatures) { - lastFeatureAdded = name.getSelectedItem().toString(); - lastSourceAdded = source.getSelectedItem().toString(); - for(int i=0; i