2 * Jexer - Java Text User Interface
4 * The MIT License (MIT)
6 * Copyright (C) 2017 Kevin Lamonte
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
32 * This class represents a single text cell on the screen.
34 public final class Cell
extends CellAttributes
{
36 // ------------------------------------------------------------------------
37 // Variables --------------------------------------------------------------
38 // ------------------------------------------------------------------------
41 * The character at this cell.
45 // ------------------------------------------------------------------------
46 // Constructors -----------------------------------------------------------
47 // ------------------------------------------------------------------------
50 * Public constructor sets default values of the cell to blank.
60 * Public constructor sets the character. Attributes are the same as
63 * @param ch character to set to
66 public Cell(final char ch
) {
71 // ------------------------------------------------------------------------
72 // Cell -------------------------------------------------------------------
73 // ------------------------------------------------------------------------
76 * Getter for cell character.
78 * @return cell character
80 public char getChar() {
85 * Setter for cell character.
87 * @param ch new cell character
89 public void setChar(final char ch
) {
94 * Reset this cell to a blank.
103 * Check to see if this cell has default attributes: white foreground,
104 * black background, no bold/blink/reverse/underline/protect, and a
105 * character value of ' ' (space).
107 * @return true if this cell has default attributes.
109 public boolean isBlank() {
110 if ((getForeColor().equals(Color
.WHITE
))
111 && (getBackColor().equals(Color
.BLACK
))
126 * Comparison check. All fields must match to return true.
128 * @param rhs another Cell instance
129 * @return true if all fields are equal
132 public boolean equals(final Object rhs
) {
133 if (!(rhs
instanceof Cell
)) {
137 Cell that
= (Cell
) rhs
;
140 return super.equals(rhs
);
146 * Hashcode uses all fields in equals().
151 public int hashCode() {
155 hash
= (B
* hash
) + super.hashCode();
156 hash
= (B
* hash
) + (int)ch
;
161 * Set my field values to that's field.
163 * @param rhs an instance of either Cell or CellAttributes
166 public void setTo(final Object rhs
) {
167 // Let this throw a ClassCastException
168 CellAttributes thatAttr
= (CellAttributes
) rhs
;
169 super.setTo(thatAttr
);
171 if (rhs
instanceof Cell
) {
172 Cell that
= (Cell
) rhs
;
178 * Set my field attr values to that's field.
180 * @param that a CellAttributes instance
182 public void setAttr(final CellAttributes that
) {
187 * Make human-readable description of this Cell.
189 * @return displayable String
192 public String
toString() {
193 return String
.format("fore: %s back: %s bold: %s blink: %s ch %c",
194 getForeColor(), getBackColor(), isBold(), isBlink(), ch
);