001: /*
002: * Copyright (C) 2005 Jeff Tassin
003: *
004: * This library is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU Lesser General Public
006: * License as published by the Free Software Foundation; either
007: * version 2.1 of the License, or (at your option) any later version.
008: *
009: * This library is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public
015: * License along with this library; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package com.jeta.swingbuilder.gui.components;
020:
021: import javax.swing.JLabel;
022: import javax.swing.JTextField;
023:
024: import com.jeta.open.gui.framework.JETAPanel;
025: import com.jeta.open.i18n.I18N;
026: import com.jeta.open.rules.JETARule;
027: import com.jeta.open.rules.RuleResult;
028: import com.jgoodies.forms.layout.CellConstraints;
029: import com.jgoodies.forms.layout.FormLayout;
030:
031: /**
032: * This panel shows two text fields that allow a user to specify the number of
033: * rows and columns for a new form view.
034: *
035: * @author Jeff Tassin
036: */
037: public class GridSizePanel extends JETAPanel implements JETARule {
038:
039: public static final String ID_ROWS_FIELD = "rows.field";
040: public static final String ID_COLS_FIELD = "cols.field";
041:
042: /**
043: * ctor
044: */
045: public GridSizePanel() {
046: FormLayout layout = new FormLayout("12px,pref,4dlu,pref,32px",
047: "12px,pref,2dlu,pref,24px");
048: setLayout(layout);
049: CellConstraints cc = new CellConstraints();
050:
051: JTextField tf = new JTextField(5);
052: tf.setDocument(new IntegerDocument(false));
053: tf.setName(ID_COLS_FIELD);
054: add(new JLabel(I18N.getLocalizedMessage("Columns")), cc
055: .xy(2, 2));
056: add(tf, cc.xy(4, 2));
057:
058: tf = new JTextField(5);
059: tf.setDocument(new IntegerDocument(false));
060: tf.setName(ID_ROWS_FIELD);
061: add(new JLabel(I18N.getLocalizedMessage("Rows")), cc.xy(2, 4));
062: add(tf, cc.xy(4, 4));
063: setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10,
064: 10, 10));
065: }
066:
067: /**
068: * JETARule implementation
069: *
070: * @param params
071: * an array one element: the GridSizePanel we are validating. It
072: * must be the same as the current this pointer.
073: */
074: public RuleResult check(Object[] params) {
075: assert (this == params[0]);
076: GridSizePanel panel = this ;
077: if (getColumns() <= 0) {
078: return new RuleResult(
079: I18N
080: .getLocalizedMessage("A form must have one or more columns."));
081: }
082: if (getRows() <= 0) {
083: return new RuleResult(
084: I18N
085: .getLocalizedMessage("A form must have one or more rows."));
086: }
087: return RuleResult.SUCCESS;
088: }
089:
090: /**
091: * @return the number of columns entered by the user
092: */
093: public int getColumns() {
094: return getInteger(ID_COLS_FIELD, 0);
095: }
096:
097: /**
098: * @return the number of rows entered by the user
099: */
100: public int getRows() {
101: return getInteger(ID_ROWS_FIELD, 0);
102: }
103: }
|