001: /*
002: * ====================================================================
003: * The JRefactory License, Version 1.0
004: *
005: * Copyright (c) 2001 JRefactory. All rights reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by the
022: * JRefactory (http://www.sourceforge.org/projects/jrefactory)."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "JRefactory" must not be used to endorse or promote
027: * products derived from this software without prior written
028: * permission. For written permission, please contact seguin@acm.org.
029: *
030: * 5. Products derived from this software may not be called "JRefactory",
031: * nor may "JRefactory" appear in their name, without prior written
032: * permission of Chris Seguin.
033: *
034: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
035: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
036: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
037: * DISCLAIMED. IN NO EVENT SHALL THE CHRIS SEGUIN OR
038: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
039: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
040: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
041: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
042: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
043: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
044: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
045: * SUCH DAMAGE.
046: * ====================================================================
047: *
048: * This software consists of voluntary contributions made by many
049: * individuals on behalf of JRefactory. For more information on
050: * JRefactory, please see
051: * <http://www.sourceforge.org/projects/jrefactory>.
052: */
053: package org.acm.seguin.tools.install;
054:
055: import java.awt.Dimension;
056: import java.awt.GridBagConstraints;
057: import java.io.PrintWriter;
058: import java.util.ArrayList;
059: import java.util.Iterator;
060: import java.util.LinkedList;
061: import javax.swing.JPanel;
062:
063: /**
064: * Stores a group of settings
065: *
066: *@author Chris Seguin
067: *@created September 12, 2001
068: */
069: public abstract class SettingGroup extends JPanel {
070: /**
071: * Contains the list of dividers
072: */
073: private ArrayList dividerList = new ArrayList();
074: private String groupName;
075: private LinkedList list;
076:
077: /**
078: * Constructor for the SettingGroup object
079: *
080: *@param value the group name
081: */
082: public SettingGroup(String value) {
083: super ();
084:
085: setGroupName(value);
086: list = new LinkedList();
087: }
088:
089: /**
090: * Sets the GroupName attribute of the SettingGroup object
091: *
092: *@param value The new GroupName value
093: */
094: public void setGroupName(String value) {
095: groupName = value;
096: }
097:
098: /**
099: * Gets the GroupName attribute of the SettingGroup object
100: *
101: *@return The GroupName value
102: */
103: public String getGroupName() {
104: return groupName;
105: }
106:
107: /**
108: * Generate the settings file for this particular setting
109: *
110: *@param output the output stream
111: */
112: public void generateSetting(PrintWriter output) {
113: Iterator iter = list.iterator();
114: while (iter.hasNext()) {
115: SettingPanel next = (SettingPanel) iter.next();
116: next.generateSetting(output);
117: }
118: }
119:
120: /**
121: * Reload all the settings from the file
122: */
123: public void reload() {
124: Iterator iter = list.iterator();
125: while (iter.hasNext()) {
126: SettingPanel next = (SettingPanel) iter.next();
127: next.reload();
128: }
129: }
130:
131: /**
132: * Description of the Method
133: *
134: *@param panel Description of Parameter
135: *@param constraints Description of the Parameter
136: */
137: protected void add(SettingPanel panel,
138: GridBagConstraints constraints) {
139: add(panel, constraints, true);
140: }
141:
142: /**
143: * Adds the panel to the screen and the list
144: *
145: *@param panel Description of Parameter
146: *@param addToPanel Description of Parameter
147: *@param constraints Description of the Parameter
148: */
149: protected void add(SettingPanel panel,
150: GridBagConstraints constraints, boolean addToPanel) {
151: list.add(panel);
152: if (addToPanel) {
153: super .add(panel, constraints);
154: }
155: }
156:
157: /**
158: * Description of the Method
159: *
160: *@return Description of the Return Value
161: */
162: protected Divider createDivider() {
163: Divider divider = new Divider();
164: dividerList.add(divider);
165: return divider;
166: }
167:
168: /**
169: * Description of the Method
170: */
171: protected void updateDividers() {
172: Dimension dim = getPreferredSize();
173: int wide = (int) (dim.width * 0.8);
174: Iterator iter = dividerList.iterator();
175: while (iter.hasNext()) {
176: Divider divider = (Divider) iter.next();
177: divider.adjustSize(wide);
178: }
179: }
180: }
181:
182: // This is the end of the file
|