1 /* 2 * $HeadURL: $ 3 * $Date: $ 4 * $Revision: $ 5 * $Author: $ 6 * 7 * Copyright (c) 2005 MindTree Consulting Ltd. 8 * 9 * This file is part of Insight. 10 * 11 * Insight is free software: you can redistribute it and/or modify it under the 12 * terms of the GNU General Public License as published by the Free Software 13 * Foundation, either version 3 of the License, or (at your option) any later 14 * version. 15 * 16 * Insight is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 19 * Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License along with 22 * Insight. If not, see <http://www.gnu.org/licenses/>. 23 */ 24 package com.mindtree.techworks.insight.gui.preferences; 25 26 import java.awt.Component; 27 import java.awt.GridBagConstraints; 28 import java.awt.GridBagLayout; 29 import java.awt.Insets; 30 31 import javax.swing.JCheckBox; 32 import javax.swing.JPanel; 33 import javax.swing.JPasswordField; 34 import javax.swing.JTextField; 35 36 import com.mindtree.techworks.insight.preferences.model.Preference; 37 import com.mindtree.techworks.insight.preferences.model.PreferenceAttribute; 38 import com.mindtree.techworks.insight.preferences.model.PreferenceAttributeType; 39 40 /** 41 * The <code>AbstractPreferencesUIPanel</code> abstract class is the base GUI 42 * panel for rendering Insight Preference instances. Specific sub-types render 43 * the respective Preference details. All subtypes need to provide a no-args 44 * constructor to permit instantiation using Reflection. This panel uses a 45 * GrigBagLayout. Derived types may add widgets using 46 * 47 * @see #addComponent(Component, int, int, int, int, int, int) 48 * @see com.mindtree.techworks.insight.preferences.model.Preference 49 * @author Regunath B 50 * @version $Revision: 27 $ $Date: 2007-12-16 04:58:03 -0700 (Sun, 16 Dec 2007) $ 51 */ 52 public abstract class AbstractPreferencesUIPanel extends JPanel { 53 54 /** 55 * Used for object serialization 56 */ 57 private static final long serialVersionUID = -1986410111937810144L; 58 59 /** 60 * Constant for 'true' and 'false' boolean value 61 */ 62 protected static final String TRUE = "true"; 63 64 /** 65 * Constant for 'true' and 'false' boolean value 66 */ 67 protected static final String FALSE = "false"; 68 69 /** 70 * The Preference rendered by this panel 71 */ 72 protected Preference preference; 73 74 /** 75 * The PreferencesFrame for this panel 76 */ 77 protected PreferencesFrame parent; 78 79 /** 80 * Layout definition. 81 */ 82 private GridBagLayout gl; 83 84 /** 85 * Layout constants 86 */ 87 private GridBagConstraints gc; 88 89 /** 90 * Initializes this class with the Preference specified. Also sets up the 91 * display layout. 92 * 93 * @param preferenceToLoad 94 * the Preference to be displayed by this panel 95 * @param parentComponent 96 * The parent container of this component 97 */ 98 public void initialize (Preference preferenceToLoad, 99 PreferencesFrame parentComponent) { 100 101 this.preference = preferenceToLoad; 102 this.parent = parentComponent; 103 this.gl = new GridBagLayout (); 104 this.gc = new GridBagConstraints (); 105 setLayout (gl); 106 initializeDisplay (); 107 } 108 109 /** 110 * Abstract method to initialize the display contents. This method is called 111 * after initialize() has been invoked. 112 * 113 * @see #initialize(Preference, PreferencesFrame) 114 */ 115 protected abstract void initializeDisplay (); 116 117 /** 118 * Abstract method that informs this panel to set the edited preference 119 * values to the Preference that this panel was initialized with. 120 * 121 * @see #initialize(Preference, PreferencesFrame) 122 */ 123 protected abstract void setPreferenceValues (); 124 125 /** 126 * Adds the specified component to this panel using the specified 127 * constraints. 128 * 129 * @param c 130 * The component to add 131 * @param gridx 132 * Horizontal location on the grid 133 * @param gridy 134 * Vertical location on the grid 135 * @param weightx 136 * The horizontal weight 137 * @param weighty 138 * The vertical weight 139 * @param width 140 * The width of the component 141 * @param height 142 * The height of the component 143 */ 144 protected final void addComponent (Component c, int gridx, int gridy, 145 int weightx, int weighty, int width, int height) { 146 147 gc.fill = GridBagConstraints.BOTH; 148 gc.anchor = GridBagConstraints.NORTHWEST; 149 gc.insets = new Insets (5, 5, 5, 5); 150 gc.gridx = gridx; 151 gc.gridy = gridy; 152 gc.weightx = weightx; 153 gc.weighty = weighty; 154 gc.gridwidth = width; 155 gc.gridheight = height; 156 gl.setConstraints (c, gc); 157 add (c); 158 } 159 160 /** 161 * Helper method to created and add a PreferenceAttribute of type TEXT and 162 * containing the specified valued 163 * 164 * @param childPreference 165 * the Preference to add the attribute to 166 * @param id 167 * id of the attribute 168 * @param name 169 * name of the attribute 170 * @param textField 171 * the JTextField to pick up the value from 172 */ 173 protected void createAndAddTextAttribute (Preference childPreference, 174 String id, String name, JTextField textField) { 175 176 PreferenceAttribute attribute = new PreferenceAttribute ( 177 PreferenceAttributeType.TEXT, id, textField.getText (), false, true, 178 true, childPreference); 179 attribute.setName (name); 180 childPreference.addPreferenceAttribute (attribute); 181 } 182 183 /** 184 * Helper method to created and add a password PreferenceAttribute of type 185 * TEXT and containing the specified valued 186 * 187 * @param childPreference 188 * the Preference to add the attribute to 189 * @param id 190 * id of the attribute 191 * @param name 192 * name of the attribute 193 * @param passwordField 194 * the JPasswordField to pick up the value from 195 */ 196 protected void createAndAddPasswordAttribute (Preference childPreference, 197 String id, String name, JPasswordField passwordField) { 198 199 PreferenceAttribute attribute = new PreferenceAttribute ( 200 PreferenceAttributeType.TEXT, id, new String (passwordField 201 .getPassword ()), true, true, true, childPreference); 202 attribute.setName (name); 203 childPreference.addPreferenceAttribute (attribute); 204 } 205 206 /** 207 * Helper method to created and add a PreferenceAttribute of type CHECK and 208 * containing the specified valued 209 * 210 * @param childPreference 211 * the Preference to add the attribute to 212 * @param id 213 * id of the attribute 214 * @param name 215 * name of the attribute 216 * @param checkBox 217 * the JCheckBox to pick up the value from 218 */ 219 protected void createAndAddBooleanAttribute (Preference childPreference, 220 String id, String name, JCheckBox checkBox) { 221 222 PreferenceAttribute authenticationAttribute = new PreferenceAttribute ( 223 PreferenceAttributeType.CHECK, id, 224 checkBox.isSelected () ? TRUE : FALSE, false, true, true, 225 childPreference); 226 authenticationAttribute.setName (name); 227 childPreference.addPreferenceAttribute (authenticationAttribute); 228 } 229 230 }