JAL-3438 spotless for 2.11.2.0
[jalview.git] / src / jalview / appletgui / FeatureRenderer.java
index 3c2715f..5f5e8e0 100644 (file)
@@ -61,8 +61,8 @@ import java.util.List;
  * @author $author$
  * @version $Revision$
  */
-public class FeatureRenderer extends
-        jalview.renderer.seqfeatures.FeatureRenderer
+public class FeatureRenderer
+        extends jalview.renderer.seqfeatures.FeatureRenderer
 {
   /*
    * creating a new feature defaults to the type and group as
@@ -269,8 +269,8 @@ public class FeatureRenderer extends
           FeatureColourI col = getFeatureStyle(name.getText());
           if (col == null)
           {
-            Color generatedColour = ColorUtils.createColourFromName(name
-                    .getText());
+            Color generatedColour = ColorUtils
+                    .createColourFromName(name.getText());
             col = new FeatureColour(generatedColour);
           }
 
@@ -285,17 +285,20 @@ public class FeatureRenderer extends
 
     tmp = new Panel();
     panel.add(tmp);
-    tmp.add(new Label(MessageManager.getString("label.name:"), Label.RIGHT));
+    tmp.add(new Label(MessageManager.getString("label.name:"),
+            Label.RIGHT));
     tmp.add(name);
 
     tmp = new Panel();
     panel.add(tmp);
-    tmp.add(new Label(MessageManager.getString("label.group:"), Label.RIGHT));
+    tmp.add(new Label(MessageManager.getString("label.group:"),
+            Label.RIGHT));
     tmp.add(group);
 
     tmp = new Panel();
     panel.add(tmp);
-    tmp.add(new Label(MessageManager.getString("label.colour"), Label.RIGHT));
+    tmp.add(new Label(MessageManager.getString("label.colour"),
+            Label.RIGHT));
     tmp.add(colourPanel);
 
     bigPanel.add(panel, BorderLayout.NORTH);
@@ -330,15 +333,16 @@ public class FeatureRenderer extends
      */
     SequenceFeature firstFeature = features.get(0);
     boolean useLastDefaults = firstFeature.getType() == null;
-    String featureType = useLastDefaults ? lastFeatureAdded : firstFeature
-            .getType();
+    String featureType = useLastDefaults ? lastFeatureAdded
+            : firstFeature.getType();
     String featureGroup = useLastDefaults ? lastFeatureGroupAdded
             : firstFeature.getFeatureGroup();
 
-    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() });
 
     final JVDialog dialog = new JVDialog(ap.alignFrame, title, true, 385,
             240);
@@ -395,11 +399,14 @@ public class FeatureRenderer extends
     /*
      * only update default type and group if we used defaults
      */
-    String enteredType = name.getText().trim();
+    final String enteredType = name.getText().trim();
+    final String enteredGroup = group.getText().trim();
+    final String enteredDesc = description.getText().replace('\n', ' ');
+
     if (dialog.accept && useLastDefaults)
     {
       lastFeatureAdded = enteredType;
-      lastFeatureGroupAdded = group.getText().trim();
+      lastFeatureGroupAdded = enteredGroup;
     }
 
     if (!create)
@@ -407,28 +414,36 @@ public class FeatureRenderer extends
       SequenceFeature sf = features.get(featureIndex);
       if (dialog.accept)
       {
-        sf.type = enteredType;
-        sf.featureGroup = group.getText().trim();
-        if (sf.featureGroup != null && sf.featureGroup.length() < 1)
-        {
-          sf.featureGroup = null;
-        }
-        sf.description = description.getText().replace('\n', ' ');
         if (!colourPanel.isGcol)
         {
           // update colour - otherwise its already done.
-          setColour(sf.type, new FeatureColour(colourPanel.getBackground()));
+          setColour(enteredType,
+                  new FeatureColour(colourPanel.getBackground()));
         }
+        int newBegin = sf.begin;
+        int newEnd = sf.end;
         try
         {
-          sf.begin = Integer.parseInt(start.getText());
-          sf.end = Integer.parseInt(end.getText());
+          newBegin = Integer.parseInt(start.getText());
+          newEnd = Integer.parseInt(end.getText());
         } catch (NumberFormatException ex)
         {
           //
         }
-        boolean typeOrGroupChanged = (!featureType.equals(sf.type) || !featureGroup
-                .equals(sf.featureGroup));
+
+        /*
+         * replace the feature by deleting it and adding a new one
+         * (to ensure integrity of SequenceFeatures data store)
+         */
+        sequences.get(0).deleteFeature(sf);
+        SequenceFeature newSf = new SequenceFeature(sf, enteredType,
+                newBegin, newEnd, enteredGroup, sf.getScore());
+        newSf.setDescription(enteredDesc);
+        ffile.parseDescriptionHTML(newSf, false);
+        // amend features dialog only updates one sequence at a time
+        sequences.get(0).addSequenceFeature(newSf);
+        boolean typeOrGroupChanged = (!featureType.equals(newSf.getType())
+                || !featureGroup.equals(newSf.getFeatureGroup()));
 
         ffile.parseDescriptionHTML(sf, false);
         if (typeOrGroupChanged)
@@ -452,12 +467,11 @@ public class FeatureRenderer extends
       {
         for (int i = 0; i < sequences.size(); i++)
         {
-          features.get(i).type = enteredType;
-          features.get(i).featureGroup = group.getText().trim();
-          features.get(i).description = description.getText()
-                  .replace('\n', ' ');
-          sequences.get(i).addSequenceFeature(features.get(i));
-          ffile.parseDescriptionHTML(features.get(i), false);
+          SequenceFeature sf = features.get(i);
+          SequenceFeature sf2 = new SequenceFeature(enteredType,
+                  enteredDesc, sf.getBegin(), sf.getEnd(), enteredGroup);
+          ffile.parseDescriptionHTML(sf2, false);
+          sequences.get(i).addSequenceFeature(sf2);
         }
 
         Color newColour = colourPanel.getBackground();
@@ -479,7 +493,7 @@ public class FeatureRenderer extends
     }
     // findAllFeatures();
 
-    ap.paintAlignment(true);
+    ap.paintAlignment(true, true);
 
     return true;
   }