001: /*
002: * Copyright (c) 2004 JETA Software, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without modification,
005: * are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JETA Software nor the names of its contributors may
015: * be used to endorse or promote products derived from this software without
016: * specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
021: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
022: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
023: * INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
024: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
025: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
026: * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028: */
029:
030: package com.jeta.forms.store.memento;
031:
032: import java.awt.Insets;
033: import java.io.IOException;
034:
035: import com.jeta.forms.gui.common.FormUtils;
036: import com.jeta.forms.store.AbstractJETAPersistable;
037: import com.jeta.forms.store.JETAObjectInput;
038: import com.jeta.forms.store.JETAObjectOutput;
039: import com.jgoodies.forms.layout.CellConstraints;
040:
041: /**
042: * Memento for serializing the state of a CellConstraints object.
043: *
044: * @author Jeff Tassin
045: */
046: public class CellConstraintsMemento extends AbstractJETAPersistable {
047: static final long serialVersionUID = 7894081609390290274L;
048:
049: /**
050: * The version for this class.
051: */
052: public static final int VERSION = 1;
053:
054: /**
055: * The column to assign to the component
056: */
057: private int m_column;
058:
059: /**
060: * The row to assign to the component.
061: */
062: private int m_row;
063:
064: /**
065: * The number of columns spanned by the component
066: */
067: private int m_colspan;
068:
069: /**
070: * The number of rows spanned by the component
071: */
072: private int m_rowspan;
073:
074: /**
075: * The insets to apply to the component relative to its cell.
076: */
077: private Insets m_insets;
078:
079: /**
080: * The vertical and horizontal cell alignments encoded as Strings
081: */
082: private String m_valign;
083: private String m_halign;
084:
085: /**
086: * Creates an unitialized <code>CellConstraintsMemento</code> object.
087: */
088: public CellConstraintsMemento() {
089:
090: }
091:
092: /**
093: * Creates a <code>CellConstraintsMemento</code> object with the specified
094: * cell constraints.
095: *
096: * @param cc
097: * the cell constraints.
098: */
099: public CellConstraintsMemento(CellConstraints cc) {
100: m_column = cc.gridX;
101: m_row = cc.gridY;
102: m_colspan = cc.gridWidth;
103: m_rowspan = cc.gridHeight;
104: m_halign = cc.hAlign.toString();
105: m_valign = cc.vAlign.toString();
106: m_insets = cc.insets;
107: }
108:
109: /**
110: * Creates a cell constraints object based on the data in this memento
111: */
112: public CellConstraints createCellConstraints() {
113: try {
114: return new CellConstraints(m_column, m_row, m_colspan,
115: m_rowspan, FormUtils.toAlignment(m_halign),
116: FormUtils.toAlignment(m_valign), m_insets);
117: } catch (Exception e) {
118: /**
119: * an exception can potentially be thrown if the vertical or
120: * horizontal alignments get mangled somehow. This should never
121: * happen though
122: */
123: e.printStackTrace();
124: return new CellConstraints();
125: }
126: }
127:
128: /**
129: * Returns the row to assign to a component.
130: */
131: public int getRow() {
132: return m_row;
133: }
134:
135: /**
136: * Returns the column to assign to a component.
137: */
138: public int getColumn() {
139: return m_column;
140: }
141:
142: /**
143: * JETAPersistable Implementation
144: */
145: public void read(JETAObjectInput in) throws ClassNotFoundException,
146: IOException {
147: int version = in.readVersion();
148: m_column = in.readInt("column");
149: m_row = in.readInt("row");
150: m_colspan = in.readInt("colspan");
151: m_rowspan = in.readInt("rowspan");
152: m_halign = (String) in.readObject("halign");
153: m_valign = (String) in.readObject("valign");
154: m_insets = (Insets) in.readObject("insets");
155: }
156:
157: /**
158: * JETAPersistable Implementation
159: */
160: public void write(JETAObjectOutput out) throws IOException {
161: out.writeVersion(VERSION);
162: out.writeInt("column", m_column);
163: out.writeInt("row", m_row);
164: out.writeInt("colspan", m_colspan);
165: out.writeInt("rowspan", m_rowspan);
166: out.writeObject("halign", m_halign);
167: out.writeObject("valign", m_valign);
168: out.writeObject("insets", m_insets);
169: }
170:
171: }
|