X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=e9f9d5553fa87ad147ff6fc97a06efcee122bc7d;hb=44cc00d0563abdc08395d60a1f8487bd3804c4c2;hp=d20fa6356a101a9fa21edc654cd9bb6b74a4d178;hpb=4831e7f2dece110dee88b3fe802d50b845ed9603;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index d20fa63..e9f9d55 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,91 @@ 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); + } - JComboBox name = new JComboBox(); - JComboBox source = new JComboBox(); + int featureIndex = 0; + boolean amendFeatures(SequenceI[] sequences, + final SequenceFeature [] features, + boolean newFeatures) + { + 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 JTextField start = new JTextField(6); + // final JTextField end = new JTextField(6); + final JButton colour = new JButton(" "); + colour.setMaximumSize(new Dimension(40,10)); + colour.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent 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 +510,162 @@ 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