001: /*
002: * View.java
003: *
004: * Copyright (C) 1998-2003 Peter Graves
005: * $Id: View.java,v 1.3 2003/06/18 23:37:22 piso Exp $
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * as published by the Free Software Foundation; either version 2
010: * of the License, or (at your option) any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with this program; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
020: */
021:
022: package org.armedbear.j;
023:
024: import org.armedbear.j.mail.MailboxEntry;
025:
026: public final class View implements Cloneable {
027: Position dot;
028: Position mark;
029: Selection selection;
030: private boolean isColumnSelection;
031: Line topLine;
032: int pixelsAboveTopLine;
033: int shift;
034: int caretCol;
035: int lineNumber;
036: int offs;
037: int topLineNumber;
038: long timestamp;
039:
040: private MailboxEntry topEntry;
041: private MailboxEntry dotEntry;
042: private NavigationComponent sidebarComponent;
043:
044: public View() {
045: }
046:
047: public View(SessionBufferEntry entry) {
048: lineNumber = entry.getDotLineNumber();
049: offs = entry.getDotOffset();
050: }
051:
052: public Position getDot() {
053: return dot;
054: }
055:
056: public int getDotOffset() {
057: return offs;
058: }
059:
060: public void setDot(Position pos) {
061: dot = pos != null ? new Position(pos) : null;
062: }
063:
064: public Position getMark() {
065: return mark;
066: }
067:
068: public void setMark(Position pos) {
069: mark = pos != null ? new Position(pos) : null;
070: }
071:
072: public boolean isColumnSelection() {
073: return isColumnSelection;
074: }
075:
076: public void setColumnSelection(boolean b) {
077: isColumnSelection = b;
078: }
079:
080: public int getDotLineNumber() {
081: return lineNumber;
082: }
083:
084: public Line getTopLine() {
085: return topLine;
086: }
087:
088: public int getTopLineNumber() {
089: return topLineNumber;
090: }
091:
092: public MailboxEntry getTopEntry() {
093: return topEntry;
094: }
095:
096: public void setTopEntry(MailboxEntry entry) {
097: topEntry = entry;
098: }
099:
100: public MailboxEntry getDotEntry() {
101: return dotEntry;
102: }
103:
104: public void setDotEntry(MailboxEntry entry) {
105: dotEntry = entry;
106: }
107:
108: public Selection getSelection() {
109: return selection;
110: }
111:
112: public int getShift() {
113: return shift;
114: }
115:
116: public int getCaretCol() {
117: return caretCol;
118: }
119:
120: public void setCaretCol(int col) {
121: caretCol = col;
122: }
123:
124: public NavigationComponent getSidebarComponent() {
125: return sidebarComponent;
126: }
127:
128: public void setSidebarComponent(NavigationComponent c) {
129: sidebarComponent = c;
130: }
131:
132: public void invalidate() {
133: if (dot != null) {
134: lineNumber = dot.lineNumber();
135: offs = dot.getOffset();
136: }
137: dot = null;
138: mark = null;
139: selection = null;
140: isColumnSelection = false;
141: if (topLine != null)
142: topLineNumber = topLine.lineNumber();
143: topLine = null;
144: pixelsAboveTopLine = 0;
145: if (!(sidebarComponent instanceof DirectoryTree))
146: sidebarComponent = null;
147: }
148:
149: protected Object clone() {
150: View view = new View();
151: if (dot != null)
152: view.dot = new Position(dot);
153: if (mark != null)
154: view.mark = new Position(mark);
155: view.selection = selection;
156: view.isColumnSelection = isColumnSelection;
157: view.topLine = topLine;
158: view.shift = shift;
159: view.caretCol = caretCol;
160: view.lineNumber = lineNumber;
161: view.offs = offs;
162: view.topLineNumber = topLineNumber;
163: view.pixelsAboveTopLine = pixelsAboveTopLine;
164: return view;
165: }
166: }
|