JAL-1645 source formatting and organise imports
[jalview.git] / src / jalview / viewmodel / styles / ViewStyle.java
index d6e529c..649d07e 100644 (file)
@@ -1,9 +1,9 @@
 package jalview.viewmodel.styles;
 
-import java.awt.Color;
-
 import jalview.api.ViewStyleI;
 
+import java.awt.Color;
+
 /**
  * A container for holding alignment view properties. View properties are
  * data-independent, which means they can be safely copied between views
@@ -255,7 +255,8 @@ public class ViewStyle implements ViewStyleI
             && getWrapAlignment() == vs.getWrapAlignment() && getWrappedWidth() == vs
             .getWrappedWidth());
     /*
-     * and compare non-primitive types; syntax below will match null with null values
+     * and compare non-primitive types; syntax below will match null with null
+     * values
      */
     match = match
             && String.valueOf(getFontName()).equals(
@@ -270,11 +271,44 @@ public class ViewStyle implements ViewStyleI
     // return equivalent(this, (ViewStyle) other);
   }
 
+  /**
+   * Overridden to ensure that whenever vs1.equals(vs2) then vs1.hashCode() ==
+   * vs2.hashCode()
+   */
   @Override
   public int hashCode()
   {
-    return 0; // TODO
+    /*
+     * No need to include all properties, just a selection...
+     */
+    int hash = 0;
+    int m = 1;
+    // Boolean.hashCode returns 1231 or 1237
+    hash += m++ * Boolean.valueOf(this.abovePIDThreshold).hashCode();
+    hash += m++ * Boolean.valueOf(this.centreColumnLabels).hashCode();
+    hash += m++ * Boolean.valueOf(this.colourAppliesToAllGroups).hashCode();
+    hash += m++ * Boolean.valueOf(this.displayReferenceSeq).hashCode();
+    hash += m++ * Boolean.valueOf(this.renderGaps).hashCode();
+    hash += m++ * Boolean.valueOf(this.rightAlignIds).hashCode();
+    hash += m++ * Boolean.valueOf(this.scaleProteinAsCdna).hashCode();
+    hash += m++ * Boolean.valueOf(this.scaleRightWrapped).hashCode();
+    hash += m++ * Boolean.valueOf(this.seqNameItalics).hashCode();
+    hash += m++ * Boolean.valueOf(this.showAnnotation).hashCode();
+    hash += m++ * Boolean.valueOf(this.showBoxes).hashCode();
+    hash += m++ * Boolean.valueOf(this.showdbrefs).hashCode();
+    hash += m++ * Boolean.valueOf(this.showJVSuffix).hashCode();
+    hash += m++ * Boolean.valueOf(this.showSequenceFeatures).hashCode();
+    hash += m++ * Boolean.valueOf(this.showUnconserved).hashCode();
+    hash += m++ * Boolean.valueOf(this.wrapAlignment).hashCode();
+    hash += m++ * this.charHeight;
+    hash += m++ * this.charWidth;
+    hash += m++ * fontSize;
+    hash += m++ * fontStyle;
+    hash += m++ * idWidth;
+    hash += String.valueOf(this.fontName).hashCode();
+    return hash;
   }
+
   /**
    * @return the upperCasebold
    */
@@ -609,7 +643,6 @@ public class ViewStyle implements ViewStyleI
     abovePIDThreshold = b;
   }
 
-  
   /**
    * DOCUMENT ME!
    * 
@@ -634,7 +667,6 @@ public class ViewStyle implements ViewStyleI
     this.charWidth = w;
   }
 
-
   /**
    * @param value
    *          indicating if subsequent colourscheme changes will be propagated