JAL-3116 parse EMBL XML with JAXB (todo: update unit tests)
[jalview.git] / src / jalview / gui / FeatureRenderer.java
index 4d82d7e..46f574e 100644 (file)
@@ -64,8 +64,8 @@ import javax.swing.event.DocumentListener;
  * @author $author$
  * @version $Revision$
  */
-public class FeatureRenderer extends
-        jalview.renderer.seqfeatures.FeatureRenderer
+public class FeatureRenderer
+        extends jalview.renderer.seqfeatures.FeatureRenderer
 {
   /*
    * defaults for creating a new feature are the last created
@@ -180,15 +180,15 @@ public class FeatureRenderer extends
     final JSpinner end = new JSpinner();
     start.setPreferredSize(new Dimension(80, 20));
     end.setPreferredSize(new Dimension(80, 20));
-    final FeatureRenderer me = this;
     final JLabel colour = new JLabel();
     colour.setOpaque(true);
     // colour.setBorder(BorderFactory.createEtchedBorder());
     colour.setMaximumSize(new Dimension(30, 16));
     colour.addMouseListener(new MouseAdapter()
     {
-      FeatureColourChooser fcc = null;
-
+      /*
+       * open colour chooser on click in colour panel
+       */
       @Override
       public void mousePressed(MouseEvent evt)
       {
@@ -205,28 +205,26 @@ public class FeatureRenderer extends
         }
         else
         {
-          if (fcc == null)
+          /*
+           * variable colour dialog - on OK, refetch the updated
+           * feature colour and update this display
+           */
+          final String ft = features.get(featureIndex).getType();
+          final String type = ft == null ? lastFeatureAdded : ft;
+          FeatureTypeSettings fcc = new FeatureTypeSettings(
+                  FeatureRenderer.this, type);
+          fcc.setRequestFocusEnabled(true);
+          fcc.requestFocus();
+          fcc.addActionListener(new ActionListener()
           {
-            final String ft = features.get(featureIndex).getType();
-            final String type = ft == null ? lastFeatureAdded : ft;
-            fcc = new FeatureColourChooser(me, type);
-            fcc.setRequestFocusEnabled(true);
-            fcc.requestFocus();
-
-            fcc.addActionListener(new ActionListener()
+            @Override
+            public void actionPerformed(ActionEvent e)
             {
-
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                fcol = fcc.getLastColour();
-                fcc = null;
-                setColour(type, fcol);
-                updateColourButton(mainPanel, colour, fcol);
-              }
-            });
-
-          }
+              fcol = FeatureRenderer.this.getFeatureStyle(ft);
+              setColour(type, fcol);
+              updateColourButton(mainPanel, colour, fcol);
+            }
+          });
         }
       }
     });
@@ -241,10 +239,9 @@ public class FeatureRenderer extends
        */
       gridPanel = new JPanel(new GridLayout(4, 1));
       JPanel choosePanel = new JPanel();
-      choosePanel.add(new JLabel(MessageManager
-              .getString("label.select_feature")
-              + ":"));
-      final JComboBox<String> overlaps = new JComboBox<String>();
+      choosePanel.add(new JLabel(
+              MessageManager.getString("label.select_feature") + ":"));
+      final JComboBox<String> overlaps = new JComboBox<>();
       List<String> added = new ArrayList<>();
       for (SequenceFeature sf : features)
       {
@@ -281,13 +278,12 @@ public class FeatureRenderer extends
 
             alignPanel.getSeqPanel().seqCanvas.highlightSearchResults(
                     highlight, false);
-
           }
           FeatureColourI col = getFeatureStyle(name.getText());
           if (col == null)
           {
-            col = new FeatureColour(ColorUtils
-                    .createColourFromName(name.getText()));
+            col = new FeatureColour(
+                    ColorUtils.createColourFromName(name.getText()));
           }
           oldcol = fcol = col;
           updateColourButton(mainPanel, colour, col);
@@ -324,9 +320,8 @@ public class FeatureRenderer extends
     mainPanel.add(gridPanel, BorderLayout.NORTH);
 
     JPanel descriptionPanel = new JPanel();
-    descriptionPanel.add(new JLabel(MessageManager
-            .getString("label.description:"),
-            JLabel.RIGHT));
+    descriptionPanel.add(new JLabel(
+            MessageManager.getString("label.description:"), JLabel.RIGHT));
     description.setFont(JvSwingUtils.getTextAreaFont());
     description.setLineWrap(true);
     descriptionPanel.add(new JScrollPane(description));
@@ -380,10 +375,11 @@ public class FeatureRenderer extends
           MessageManager.getString("action.cancel") };
     }
 
-    String title = create ? MessageManager
-            .getString("label.create_new_sequence_features")
+    String title = create
+            ? MessageManager.getString("label.create_new_sequence_features")
             : MessageManager.formatMessage("label.amend_delete_features",
-                    new String[] { sequences.get(0).getName() });
+                    new String[]
+                    { sequences.get(0).getName() });
 
     /*
      * show the dialog
@@ -459,7 +455,7 @@ public class FeatureRenderer extends
         sequences.get(0).deleteFeature(sf);
         SequenceFeature newSf = new SequenceFeature(sf, enteredType,
                 newBegin, newEnd, enteredGroup, sf.getScore());
-        sf.setDescription(enteredDescription);
+        newSf.setDescription(enteredDescription);
         ffile.parseDescriptionHTML(newSf, false);
         // amend features dialog only updates one sequence at a time
         sequences.get(0).addSequenceFeature(newSf);
@@ -489,7 +485,7 @@ public class FeatureRenderer extends
 
         featuresAdded();
 
-        alignPanel.paintAlignment(true);
+        alignPanel.paintAlignment(true, true);
 
         return true;
       }
@@ -499,7 +495,7 @@ public class FeatureRenderer extends
       }
     }
 
-    alignPanel.paintAlignment(true);
+    alignPanel.paintAlignment(true, true);
 
     return true;
   }
@@ -536,7 +532,8 @@ public class FeatureRenderer extends
     {
       String msg = MessageManager.formatMessage("label.warning_hidden",
               MessageManager.getString("label.group"), group);
-      JvOptionPane.showMessageDialog(panel, msg, "", JvOptionPane.OK_OPTION);
+      JvOptionPane.showMessageDialog(panel, msg, "",
+              JvOptionPane.OK_OPTION);
     }
   }