001: /* SwingML
002: * Copyright (C) 2002 Robert Morris.
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 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
016: * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
017: * Boston, MA 02111-1307, USA.
018: *
019: * Authors:
020: * Robert Morris <robertj@morris.net>
021: *
022: */
023:
024: package org.swingml.component;
025:
026: import java.awt.*;
027:
028: import org.swingml.model.*;
029:
030: /**
031: * This class exists only within a hierarchy of GridBag* components. The levels
032: * of this hierarchy are as follows:
033: *
034: * GridBagPanelComponent/
035: * GridBagRowComponent/
036: * GridBagCellComponent
037: *
038: * Only the GridBagPanelComponent is actually drawn and displayed on the screen at run-time.
039: * The GridBagRowComponent only contains references to other GridBagCellComponents and some
040: * formatting instructions that apply to all objects it references. The GridBagCellComponent
041: * contains formatting instructions, just like the GridBagRowComponent, that override the settings
042: * specified by its parent. The GridBagCellComponent also contains other Component
043: * instances that are displayed within the GridBagPanelComponent, laid out according
044: * to the instructions specified by this hierarchy.
045: *
046: * @see org.swingml.component.GridBagPanelComponent
047: * @see org.swingml.component.GridBagRowComponent
048: */
049: public class GridBagCellComponent extends Container {
050:
051: private int m_column = -1;
052: private GridBagCellModel m_model = null;
053: private GridBagPanelComponent m_parentPanel = null;
054:
055: /**
056: * Constructor for GridBagCellComponent.
057: */
058: public GridBagCellComponent(GridBagCellModel aModel) {
059: this .m_model = aModel;
060: }
061:
062: /**
063: * This add() method override takes the specified component, and adds it to the
064: * GridBagPanelComponent instance that was set in the @see #setParentPanel(GridBagPanelComponent)
065: * method. The GridBagLayout constraints contained within the parent GridBagRowComponent
066: * and this instance are applied to the specified component when it is added to the
067: * parentPanel.
068: *
069: * @param component A valid reference to an instance of the Component class, or a derivative.
070: *
071: * @return The component specified in the component parameter.
072: *
073: * @see org.swingml.component.GridBagRowComponent
074: * @see org.swingml.component.GridBagPanelComponent
075: */
076: public Component add(Component aComponent) {
077: if (this .m_parentPanel != null) {
078: this .m_parentPanel.add(aComponent, this .m_model
079: .getConstraints());
080: }
081:
082: return aComponent;
083: }
084:
085: public int getColumn() {
086: return this .m_column;
087: }
088:
089: /**
090: * This method indicates the x coordinate of the contained component
091: * within a GridBagLayout. This property is set by the containing
092: * GridBagRowComponent's add() method.
093: *
094: * @param column The x coordinate of the contained component
095: * within a GridBagLayout.
096: */
097: public void setColumn(int aColumn) {
098: this .m_column = aColumn;
099: }
100:
101: /**
102: * This method sets the parent panel to the value specified by the
103: * parentPanel argument. The parent panel represents an actual GridBagPanelComponent
104: * where the components contained by this instance are displayed.
105: *
106: * @param parentPanel A valid reference to an instance of the GridBagPanelComponent class.
107: */
108: public void setParentPanel(GridBagPanelComponent aParentPanel) {
109: this.m_parentPanel = aParentPanel;
110: }
111: }
|