001 /** ===================================================================== 002 * 003 * File Name : $Id: LabelListBox.java,v 1.4 2008/01/15 11:08:16 cb Exp $ 004 * 005 * Description 006 * ----------- 007 * 008 * See javadoc comment 009 * 010 * ===================================================================== 011 * 012 * @Author : Craige Bevil 013 * Control Software Group 014 * Isaac Newton Group of Telescopes 015 * 016 * ===================================================================== 017 * 018 * Modification Log 019 * 020 * Vers Date Author Reason 021 * ---- ---- ------ ------ 022 * 1 C.Bevil First Release 023 * 024 * Commissioning Notes 025 * ------------------- 026 * 027 * None 028 * 029 * ===================================================================== 030 * 031 * @Version : $Id: LabelListBox.java,v 1.4 2008/01/15 11:08:16 cb Exp $ 032 * 033 * @Author : $Author: cb $ 034 * 035 * Header : $Header: /opt/INGsrc/src/CVS/softproj/FaultDatabase/src/FaultDatabase/FaultDatabase/src/GWTApplication/client/LabelListBox.java,v 1.4 2008/01/15 11:08:16 cb Exp $ 036 * 037 * Log : $Log: LabelListBox.java,v $ 038 * Log : Revision 1.4 2008/01/15 11:08:16 cb 039 * Log : Ran through PMD and sorted out the javadoc so that we could export the 040 * Log : javadoc to the javadoc repository. 041 * Log : 042 * Log : Revision 1.3 2007/08/17 14:26:42 cb 043 * Log : Updated for lastest prototype incorporating a lot of Nikos comments 044 * Log : 045 * Log : Revision 1.2 2007/08/01 13:00:06 cb 046 * Log : First prototype after import 047 * Log : 048 * Log : Revision 1.1.1.1 2007/06/01 08:33:26 cb 049 * Log : Imported using TkCVS 050 * Log : 051 * 052 * =====================================================================*/ 053 054 package GWTApplication.client; 055 056 import com.google.gwt.user.client.*; 057 import com.google.gwt.user.client.rpc.*; 058 import com.google.gwt.user.client.ui.*; 059 import com.google.gwt.user.client.ui.FlexTable.*; 060 061 /** 062 * This is a composite widget which comprises of a list box and a 063 * label. It's a convenience class which binds together two types of 064 * widgets which are commonly used together. I have purposefully not 065 * reimplemented all of the methods associated with the sub widgets 066 * simply to make the task of coding the class simpler. 067 * @author Craige Bevil 068 * @version $Id: LabelListBox.java,v 1.4 2008/01/15 11:08:16 cb Exp $ 069 */ 070 071 class LabelListBox extends Composite { 072 073 /** 074 * Whether the two widgets should be stacked vertically 075 */ 076 077 final public static int VERTICAL_ALIGNMENT = 1; 078 079 /** 080 * Whether the two widgets should be stacked horizontally 081 */ 082 083 final public static int HORIZONTAL_ALIGNMENT = 2; 084 085 /** 086 * This is a list box which will contain all of the options which can may be selected by the user 087 */ 088 089 public ListBox listBox = new ListBox(); 090 091 /** 092 * This is the label which is associated with the list box. 093 */ 094 095 public Label label = new Label(); 096 097 /** 098 * This is the constructor which will generate a panel which 099 * contains both the label and the list box 100 * @param Alignment Whether the widgets should be arranged horizontally or 101 * vertically. Should be one of VERTICAL_ALIGNMENT or 102 * HORIZONTAL_ALIGNMENT. 103 */ 104 105 LabelListBox (final int Alignment) { 106 107 if (Alignment != VERTICAL_ALIGNMENT && Alignment != HORIZONTAL_ALIGNMENT) { 108 return; 109 } 110 111 if (Alignment == HORIZONTAL_ALIGNMENT) { 112 113 final HorizontalPanel panel = new HorizontalPanel(); 114 115 label.setWidth("100%"); 116 listBox.setWidth("100%"); 117 118 panel.add(label); 119 panel.add(listBox); 120 121 initWidget(panel); 122 123 } else { 124 125 final VerticalPanel panel = new VerticalPanel(); 126 127 label.setWidth("100%"); 128 listBox.setWidth("100%"); 129 130 panel.add(label); 131 panel.add(listBox); 132 133 initWidget(panel); 134 135 } 136 } 137 138 /** 139 * This will return the value of the item which has been selected 140 * in the list 141 * @return The text of the item which has been selected in the 142 * list. If nothing has been selected by the user then it returns null 143 */ 144 145 public String getSelectedItemText () { 146 147 // If the user has not selected anything then we can 148 149 if (listBox.getSelectedIndex() == -1) { 150 return null; 151 } 152 153 return listBox.getItemText(listBox.getSelectedIndex()); 154 } 155 156 /** 157 * This will be used to select the item which is specified in the 158 * list 159 * @param ItemToSelect This is the item in the list which is to be 160 * selected by default. 161 * @return boolean True if we managed to set the item in the list 162 * to the default value which was specified. 163 */ 164 165 public boolean setSelectedItem(final String ItemToSelect) { 166 167 for (int i=0; i < listBox.getItemCount();i++) { 168 169 if (listBox.getItemText(i).equals(ItemToSelect)) { 170 listBox.setSelectedIndex(i); 171 return true; 172 } 173 } 174 175 return false; 176 } 177 178 /** 179 * This method permits the caller to set the width of both the 180 * label and the list box at the same time. The units which must 181 * be passed to this method must be expressed in valid CSS units. 182 * 183 * @param labelWidth this is the length of the label which must be expressed in valid CSS units 184 * @param listBoxWidth this is the length of the list box which must be expressed in valid CSS units 185 */ 186 187 public void setWidth(final String labelWidth,final String listBoxWidth) { 188 label.setWidth(labelWidth); 189 listBox.setWidth(listBoxWidth); 190 } 191 }