1 package jalview.viewmodel.styles;
5 import jalview.api.ViewStyleI;
8 * A container for holding alignment view properties. View properties are
9 * data-independent, which means they can be safely copied between views
10 * involving different alignment data without causing exceptions in the
16 public class ViewStyle implements ViewStyleI
18 private boolean abovePIDThreshold = false;
27 * gui state - changes to colour scheme propagated to all groups
29 private boolean colourAppliesToAllGroups;
32 * centre columnar annotation labels in displayed alignment annotation
34 boolean centreColumnLabels = false;
36 private boolean showdbrefs;
38 private boolean shownpfeats;
40 // --------END Structure Conservation
43 * colour according to the reference sequence defined on the alignment
45 private boolean colourByReferenceSeq = false;
47 boolean conservationColourSelected = false;
50 * show the reference sequence in the alignment view
52 private boolean displayReferenceSeq = false;
54 private int increment;
57 * display gap characters
59 boolean renderGaps = true;
61 private boolean rightAlignIds = false;
63 boolean scaleAboveWrapped = false;
65 boolean scaleLeftWrapped = true;
67 boolean scaleRightWrapped = true;
69 boolean seqNameItalics;
72 * show annotation tracks on the alignment
74 private boolean showAnnotation = true;
77 * render each residue in a coloured box
79 boolean showBoxes = true;
82 * Colour sequence text
84 boolean showColourText = false;
89 boolean showHiddenMarkers = true;
92 * show /start-end in ID panel
94 boolean showJVSuffix = true;
97 * scale features height according to score
99 boolean showSeqFeaturesHeight;
102 * display setting for showing/hiding sequence features on alignment view
104 boolean showSequenceFeatures = false;
107 * display sequence symbols
109 boolean showText = true;
112 * show non-conserved residues only
114 protected boolean showUnconserved = false;
116 Color textColour = Color.black;
118 Color textColour2 = Color.white;
121 * PID or consensus threshold
126 * threshold for switching between textColour & textColour2
128 int thresholdTextColour = 0;
131 * upper case characters in sequence are shown in bold
133 boolean upperCasebold = false;
136 * name of base font for view
138 private String fontName;
143 private int fontSize;
146 * If true, scale protein residues to 3 times width of cDNA bases (in
147 * SplitFrame views only)
149 private boolean scaleProteinAsCdna = true;
156 public ViewStyle(ViewStyleI vs)
158 setAbovePIDThreshold(vs.getAbovePIDThreshold());
159 setCentreColumnLabels(vs.isCentreColumnLabels());
160 setCharHeight(vs.getCharHeight());
161 setCharWidth(vs.getCharWidth());
162 setColourAppliesToAllGroups(vs.getColourAppliesToAllGroups());
163 setColourByReferenceSeq(vs.isColourByReferenceSeq());
164 setColourText(vs.getColourText());
165 setConservationColourSelected(vs.isConservationColourSelected());
166 setConservationSelected(vs.getConservationSelected());
167 setDisplayReferenceSeq(vs.isDisplayReferenceSeq());
168 setFontName(vs.getFontName());
169 setFontSize(vs.getFontSize());
170 setFontStyle(vs.getFontStyle());
171 setIdWidth(vs.getIdWidth());
172 setIncrement(vs.getIncrement());
173 setRenderGaps(vs.isRenderGaps());
174 setRightAlignIds(vs.isRightAlignIds());
175 setScaleAboveWrapped(vs.getScaleAboveWrapped());
176 setScaleLeftWrapped(vs.getScaleLeftWrapped());
177 setScaleProteinAsCdna(vs.isScaleProteinAsCdna());
178 setScaleRightWrapped(vs.getScaleRightWrapped());
179 setSeqNameItalics(vs.isSeqNameItalics());
180 setShowAnnotation(vs.isShowAnnotation());
181 setShowBoxes(vs.getShowBoxes());
182 setShowColourText(vs.isShowColourText());
183 setShowDBRefs(vs.isShowDBRefs());
184 setShowHiddenMarkers(vs.getShowHiddenMarkers());
185 setShowJVSuffix(vs.getShowJVSuffix());
186 setShowNPFeats(vs.isShowNPFeats());
187 setShowSequenceFeaturesHeight(vs.isShowSequenceFeaturesHeight());
188 setShowSequenceFeatures(vs.isShowSequenceFeatures());
189 setShowText(vs.getShowText());
190 setShowUnconserved(vs.getShowUnconserved());
191 setTextColour(vs.getTextColour());
192 setTextColour2(vs.getTextColour2());
193 setThreshold(vs.getThreshold());
194 setThresholdTextColour(vs.getThresholdTextColour());
195 setUpperCasebold(vs.isUpperCasebold());
196 setWrapAlignment(vs.getWrapAlignment());
197 setWrappedWidth(vs.getWrappedWidth());
198 // ViewStyle.configureFrom(this, viewStyle);
206 * Returns true if all attributes of the ViewStyles have the same value
209 public boolean equals(Object other)
211 if (other == null || !(other instanceof ViewStyle))
215 ViewStyle vs = (ViewStyle) other;
217 boolean match = (getAbovePIDThreshold() == vs.getAbovePIDThreshold()
218 && isCentreColumnLabels() == vs.isCentreColumnLabels()
219 && getCharHeight() == vs.getCharHeight()
220 && getCharWidth() == vs.getCharWidth()
221 && getColourAppliesToAllGroups() == vs
222 .getColourAppliesToAllGroups()
223 && isColourByReferenceSeq() == vs.isColourByReferenceSeq()
224 && getColourText() == vs.getColourText()
225 && isConservationColourSelected() == vs
226 .isConservationColourSelected()
227 && getConservationSelected() == vs.getConservationSelected()
228 && isDisplayReferenceSeq() == vs.isDisplayReferenceSeq()
229 && getFontSize() == vs.getFontSize()
230 && getFontStyle() == vs.getFontStyle()
231 && getIdWidth() == vs.getIdWidth()
232 && getIncrement() == vs.getIncrement()
233 && isRenderGaps() == vs.isRenderGaps()
234 && isRightAlignIds() == vs.isRightAlignIds()
235 && getScaleAboveWrapped() == vs.getScaleAboveWrapped()
236 && getScaleLeftWrapped() == vs.getScaleLeftWrapped()
237 && isScaleProteinAsCdna() == vs.isScaleProteinAsCdna()
238 && getScaleRightWrapped() == vs.getScaleRightWrapped()
239 && isSeqNameItalics() == vs.isSeqNameItalics()
240 && isShowAnnotation() == vs.isShowAnnotation()
241 && getShowBoxes() == vs.getShowBoxes()
242 && isShowColourText() == vs.isShowColourText()
243 && isShowDBRefs() == vs.isShowDBRefs()
244 && getShowHiddenMarkers() == vs.getShowHiddenMarkers()
245 && getShowJVSuffix() == vs.getShowJVSuffix()
246 && isShowNPFeats() == vs.isShowNPFeats()
247 && isShowSequenceFeaturesHeight() == vs
248 .isShowSequenceFeaturesHeight()
249 && isShowSequenceFeatures() == vs.isShowSequenceFeatures()
250 && getShowText() == vs.getShowText()
251 && getShowUnconserved() == vs.getShowUnconserved()
252 && getThreshold() == vs.getThreshold()
253 && getThresholdTextColour() == vs.getThresholdTextColour()
254 && isUpperCasebold() == vs.isUpperCasebold()
255 && getWrapAlignment() == vs.getWrapAlignment() && getWrappedWidth() == vs
258 * and compare non-primitive types; syntax below will match null with null values
261 && String.valueOf(getFontName()).equals(
262 String.valueOf(vs.getFontName()));
264 && String.valueOf(getTextColour()).equals(
265 String.valueOf(vs.getTextColour()));
267 && String.valueOf(getTextColour2()).equals(
268 String.valueOf(vs.getTextColour2()));
270 // return equivalent(this, (ViewStyle) other);
274 public int hashCode()
279 * @return the upperCasebold
282 public boolean isUpperCasebold()
284 return upperCasebold;
288 * @param upperCasebold
289 * the upperCasebold to set
292 public void setUpperCasebold(boolean upperCasebold)
294 this.upperCasebold = upperCasebold;
300 boolean wrapAlignment = false;
303 * number columns in wrapped alignment
307 private int fontStyle;
312 * @return true if percent identity threshold is applied to shading
315 public boolean getAbovePIDThreshold()
317 return abovePIDThreshold;
323 * @return DOCUMENT ME!
326 public int getCharHeight()
334 * @return DOCUMENT ME!
337 public int getCharWidth()
345 * @return flag indicating if colourchanges propagated to all groups
348 public boolean getColourAppliesToAllGroups()
350 return colourAppliesToAllGroups;
356 * @return DOCUMENT ME!
359 public boolean getColourText()
361 return showColourText;
367 * @return true if conservation based shading is enabled
370 public boolean getConservationSelected()
372 return conservationColourSelected;
378 * @return get scalar for bleaching colourschemes by conservation
381 public int getIncrement()
389 * @return DOCUMENT ME!
392 public boolean getScaleAboveWrapped()
394 return scaleAboveWrapped;
400 * @return DOCUMENT ME!
403 public boolean getScaleLeftWrapped()
405 return scaleLeftWrapped;
411 * @return DOCUMENT ME!
414 public boolean getScaleRightWrapped()
416 return scaleRightWrapped;
422 * @return DOCUMENT ME!
425 public boolean getShowBoxes()
431 public boolean getShowHiddenMarkers()
433 return showHiddenMarkers;
439 * @return DOCUMENT ME!
442 public boolean getShowJVSuffix()
450 * @return DOCUMENT ME!
453 public boolean getShowText()
459 public boolean getShowUnconserved()
461 return showUnconserved;
465 * @return the textColour
468 public Color getTextColour()
474 * @return the textColour2
477 public Color getTextColour2()
485 * @return DOCUMENT ME!
488 public int getThreshold()
494 * @return the thresholdTextColour
497 public int getThresholdTextColour()
499 return thresholdTextColour;
505 * @return DOCUMENT ME!
508 public boolean getWrapAlignment()
510 return wrapAlignment;
516 * @return DOCUMENT ME!
519 public int getWrappedWidth()
525 public boolean isColourByReferenceSeq()
527 return colourByReferenceSeq;
531 * @return the conservationColourSelected
534 public boolean isConservationColourSelected()
536 return conservationColourSelected;
540 public boolean isDisplayReferenceSeq()
542 return displayReferenceSeq;
546 * @return the renderGaps
549 public boolean isRenderGaps()
555 public boolean isRightAlignIds()
557 return rightAlignIds;
561 * @return the seqNameItalics
564 public boolean isSeqNameItalics()
566 return seqNameItalics;
570 public boolean isShowAnnotation()
572 return showAnnotation;
576 * @return the showColourText
579 public boolean isShowColourText()
581 return showColourText;
585 * @return the showSeqFeaturesHeight
588 public boolean isShowSequenceFeaturesHeight()
590 return showSeqFeaturesHeight;
594 public boolean isShowSequenceFeatures()
596 return showSequenceFeatures;
604 * indicate if percent identity threshold is applied to shading
607 public void setAbovePIDThreshold(boolean b)
609 abovePIDThreshold = b;
620 public void setCharHeight(int h)
632 public void setCharWidth(int w)
640 * indicating if subsequent colourscheme changes will be propagated
644 public void setColourAppliesToAllGroups(boolean b)
646 colourAppliesToAllGroups = b;
650 public void setColourByReferenceSeq(boolean colourByReferenceSeq)
652 this.colourByReferenceSeq = colourByReferenceSeq;
662 public void setColourText(boolean state)
664 showColourText = state;
668 * @param conservationColourSelected
669 * the conservationColourSelected to set
672 public void setConservationColourSelected(
673 boolean conservationColourSelected)
675 this.conservationColourSelected = conservationColourSelected;
682 * enable conservation based shading
685 public void setConservationSelected(boolean b)
687 conservationColourSelected = b;
691 public void setDisplayReferenceSeq(boolean displayReferenceSeq)
693 this.displayReferenceSeq = displayReferenceSeq;
699 * set the scalar for bleaching colourschemes according to degree of
703 public void setIncrement(int inc)
715 public void setRenderGaps(boolean state)
721 public void setRightAlignIds(boolean rightAlignIds)
723 this.rightAlignIds = rightAlignIds;
733 public void setScaleAboveWrapped(boolean b)
735 scaleAboveWrapped = b;
745 public void setScaleLeftWrapped(boolean b)
747 scaleLeftWrapped = b;
753 * @param scaleRightWrapped
758 public void setScaleRightWrapped(boolean b)
760 scaleRightWrapped = b;
764 public void setSeqNameItalics(boolean italics)
766 seqNameItalics = italics;
770 public void setShowAnnotation(boolean b)
782 public void setShowBoxes(boolean state)
788 * @param showColourText
789 * the showColourText to set
792 public void setShowColourText(boolean showColourText)
794 this.showColourText = showColourText;
798 public void setShowHiddenMarkers(boolean show)
800 showHiddenMarkers = show;
810 public void setShowJVSuffix(boolean b)
816 public void setShowSequenceFeaturesHeight(boolean selected)
818 showSeqFeaturesHeight = selected;
826 * features are displayed if true
829 public void setShowSequenceFeatures(boolean b)
831 showSequenceFeatures = b;
841 public void setShowText(boolean state)
847 public void setShowUnconserved(boolean showunconserved)
849 showUnconserved = showunconserved;
854 * the textColour to set
857 public void setTextColour(Color textColour)
859 this.textColour = textColour;
864 * the textColour2 to set
867 public void setTextColour2(Color textColour2)
869 this.textColour2 = textColour2;
879 public void setThreshold(int thresh)
885 * @param thresholdTextColour
886 * the thresholdTextColour to set
889 public void setThresholdTextColour(int thresholdTextColour)
891 this.thresholdTextColour = thresholdTextColour;
901 public void setWrapAlignment(boolean state)
903 wrapAlignment = state;
913 public void setWrappedWidth(int w)
915 this.wrappedWidth = w;
919 public boolean sameStyle(ViewStyleI that)
921 return this.equals(that);
925 public String getFontName()
931 public int getFontSize()
937 public int getFontStyle()
943 public void setFontName(String name)
949 public void setFontSize(int size)
956 public void setFontStyle(int style)
962 public int getIdWidth()
972 public void setIdWidth(int idWidth)
974 this.idWidth = idWidth;
978 * @return the centreColumnLabels
981 public boolean isCentreColumnLabels()
983 return centreColumnLabels;
987 * @param centreColumnLabels
988 * the centreColumnLabels to set
991 public void setCentreColumnLabels(boolean centreColumnLabels)
993 this.centreColumnLabels = centreColumnLabels;
997 * @return the showdbrefs
1000 public boolean isShowDBRefs()
1007 * the showdbrefs to set
1010 public void setShowDBRefs(boolean showdbrefs)
1012 this.showdbrefs = showdbrefs;
1016 * @return the shownpfeats
1019 public boolean isShowNPFeats()
1025 * @param shownpfeats
1026 * the shownpfeats to set
1029 public void setShowNPFeats(boolean shownpfeats)
1031 this.shownpfeats = shownpfeats;
1035 public boolean isScaleProteinAsCdna()
1037 return this.scaleProteinAsCdna;
1041 public void setScaleProteinAsCdna(boolean b)
1043 this.scaleProteinAsCdna = b;