X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2Fstyles%2FViewStyle.java;h=16aa58015d1e4b27e04a14795a210db1ce9e791c;hb=3d0101179759ef157b088ea135423cd909512d9f;hp=d6e529c66f63df89eb43db611ec8bbb644a85ce9;hpb=882adcab8cf6f9c72a7e946223f817878c5ee444;p=jalview.git diff --git a/src/jalview/viewmodel/styles/ViewStyle.java b/src/jalview/viewmodel/styles/ViewStyle.java index d6e529c..16aa580 100644 --- a/src/jalview/viewmodel/styles/ViewStyle.java +++ b/src/jalview/viewmodel/styles/ViewStyle.java @@ -1,9 +1,29 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ 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 @@ -148,6 +168,12 @@ public class ViewStyle implements ViewStyleI */ private boolean scaleProteinAsCdna = true; + /* + * if true, font changes to protein or cDNA are applied to both + * sides of a split screen + */ + private boolean proteinFontAsCdna = true; + /** * Copy constructor * @@ -175,6 +201,7 @@ public class ViewStyle implements ViewStyleI setScaleAboveWrapped(vs.getScaleAboveWrapped()); setScaleLeftWrapped(vs.getScaleLeftWrapped()); setScaleProteinAsCdna(vs.isScaleProteinAsCdna()); + setProteinFontAsCdna(vs.isProteinFontAsCdna()); setScaleRightWrapped(vs.getScaleRightWrapped()); setSeqNameItalics(vs.isSeqNameItalics()); setShowAnnotation(vs.isShowAnnotation()); @@ -235,6 +262,7 @@ public class ViewStyle implements ViewStyleI && getScaleAboveWrapped() == vs.getScaleAboveWrapped() && getScaleLeftWrapped() == vs.getScaleLeftWrapped() && isScaleProteinAsCdna() == vs.isScaleProteinAsCdna() + && isProteinFontAsCdna() == vs.isProteinFontAsCdna() && getScaleRightWrapped() == vs.getScaleRightWrapped() && isSeqNameItalics() == vs.isSeqNameItalics() && isShowAnnotation() == vs.isShowAnnotation() @@ -252,29 +280,60 @@ public class ViewStyle implements ViewStyleI && getThreshold() == vs.getThreshold() && getThresholdTextColour() == vs.getThresholdTextColour() && isUpperCasebold() == vs.isUpperCasebold() - && getWrapAlignment() == vs.getWrapAlignment() && getWrappedWidth() == vs - .getWrappedWidth()); + && 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( - String.valueOf(vs.getFontName())); - match = match - && String.valueOf(getTextColour()).equals( - String.valueOf(vs.getTextColour())); - match = match - && String.valueOf(getTextColour2()).equals( - String.valueOf(vs.getTextColour2())); + match = match && String.valueOf(getFontName()) + .equals(String.valueOf(vs.getFontName())); + match = match && String.valueOf(getTextColour()) + .equals(String.valueOf(vs.getTextColour())); + match = match && String.valueOf(getTextColour2()) + .equals(String.valueOf(vs.getTextColour2())); return match; // 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 +668,6 @@ public class ViewStyle implements ViewStyleI abovePIDThreshold = b; } - /** * DOCUMENT ME! * @@ -634,7 +692,6 @@ public class ViewStyle implements ViewStyleI this.charWidth = w; } - /** * @param value * indicating if subsequent colourscheme changes will be propagated @@ -1042,4 +1099,16 @@ public class ViewStyle implements ViewStyleI { this.scaleProteinAsCdna = b; } + + @Override + public boolean isProteinFontAsCdna() + { + return proteinFontAsCdna; + } + + @Override + public void setProteinFontAsCdna(boolean b) + { + proteinFontAsCdna = b; + } }