JAL-3390 first draft of showing only visible alignment in Chimera
[jalview.git] / src / jalview / ext / rbvi / chimera / ChimeraCommands.java
index dad8511..ec94e7d 100644 (file)
@@ -50,9 +50,11 @@ import java.util.Map;
  */
 public class ChimeraCommands
 {
-
   public static final String NAMESPACE_PREFIX = "jv_";
 
+  private static final String COLOR_GRAY_HEX = "color "
+          + ColorUtils.toTkCode(Color.GRAY);
+
   /**
    * Constructs Chimera commands to colour residues as per the Jalview alignment
    * 
@@ -104,19 +106,16 @@ public class ChimeraCommands
      * delimited). If length limit issues arise, refactor to return one color
      * command per colour.
      */
-    List<String> commands = new ArrayList<String>();
+    List<String> commands = new ArrayList<>();
     StringBuilder sb = new StringBuilder(256);
-    boolean firstColour = true;
+    sb.append(COLOR_GRAY_HEX);
+
     for (Object key : colourMap.keySet())
     {
       Color colour = (Color) key;
       String colourCode = ColorUtils.toTkCode(colour);
-      if (!firstColour)
-      {
-        sb.append("; ");
-      }
+      sb.append("; ");
       sb.append("color ").append(colourCode).append(" ");
-      firstColour = false;
       final AtomSpecModel colourData = colourMap.get(colour);
       sb.append(colourData.getAtomSpec());
     }
@@ -196,7 +195,7 @@ public class ChimeraCommands
     AlignViewportI viewport = viewPanel.getAlignViewport();
     HiddenColumns cs = viewport.getAlignment().getHiddenColumns();
     AlignmentI al = viewport.getAlignment();
-    Map<Object, AtomSpecModel> colourMap = new LinkedHashMap<Object, AtomSpecModel>();
+    Map<Object, AtomSpecModel> colourMap = new LinkedHashMap<>();
     Color lastColour = null;
 
     for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
@@ -236,11 +235,12 @@ public class ChimeraCommands
               Color colour = sr.getResidueColour(seq, r, finder);
 
               /*
-               * darker colour for hidden regions
+               * hidden regions are shown gray
+               * todo: iterate over visible columns only
                */
               if (!cs.isVisible(r))
               {
-                colour = Color.GRAY;
+                continue; // colour = Color.GRAY;
               }
 
               final String chain = mapping[m].getChain();
@@ -349,7 +349,7 @@ public class ChimeraCommands
           StructureSelectionManager ssm, String[] files, SequenceI[][] seqs,
           AlignmentViewPanel viewPanel)
   {
-    Map<String, Map<Object, AtomSpecModel>> theMap = new LinkedHashMap<String, Map<Object, AtomSpecModel>>();
+    Map<String, Map<Object, AtomSpecModel>> theMap = new LinkedHashMap<>();
 
     FeatureRenderer fr = viewPanel.getFeatureRenderer();
     if (fr == null)
@@ -445,7 +445,7 @@ public class ChimeraCommands
         Map<Object, AtomSpecModel> featureValues = theMap.get(type);
         if (featureValues == null)
         {
-          featureValues = new HashMap<Object, AtomSpecModel>();
+          featureValues = new HashMap<>();
           theMap.put(type, featureValues);
         }
         for (int[] range : mappedRanges)
@@ -475,7 +475,7 @@ public class ChimeraCommands
   protected static List<String> buildSetAttributeCommands(
           Map<String, Map<Object, AtomSpecModel>> featureMap)
   {
-    List<String> commands = new ArrayList<String>();
+    List<String> commands = new ArrayList<>();
     for (String featureType : featureMap.keySet())
     {
       String attributeName = makeAttributeName(featureType);