1 19 26 27 package org.netbeans.modules.j2ee.sun.ide.editors; 28 29 import java.util.Set ; 30 import java.util.ResourceBundle ; 31 import java.util.Vector ; 32 import java.text.MessageFormat ; 33 import java.awt.FontMetrics ; 34 import java.awt.Graphics ; 35 import java.awt.Rectangle ; 36 37 import org.netbeans.modules.j2ee.sun.ide.editors.NameValuePair; 38 39 import org.netbeans.modules.j2ee.sun.ide.editors.ui.DDTablePanel; 40 import org.netbeans.modules.j2ee.sun.ide.editors.ui.AbstractDDTableModel; 41 import org.netbeans.modules.j2ee.sun.ide.editors.ui.SortableDDTableModel; 42 43 public class NameValuePairsPropertyEditor extends java.beans.PropertyEditorSupport { 44 45 NameValuePair[] params; 46 47 static final ResourceBundle bundle = 48 ResourceBundle.getBundle("org/netbeans/modules/j2ee/sun/ide/editors/Bundle"); 49 50 public NameValuePairsPropertyEditor(NameValuePair[] val) { 51 super(); 52 if (val == null) 53 params = new NameValuePair[0]; 54 else 55 params = val; 56 } 57 58 public NameValuePairsPropertyEditor(Object val) { 59 super(); 60 if (val == null) 61 params = new NameValuePair[0]; 62 else 63 params = getNameValuePairs(val); 64 } 65 66 public void setAsText(String string) throws IllegalArgumentException { 68 } 69 70 public String getAsText() { 71 return getPaintableString(); 72 } 73 74 76 static protected String [] requiredToolTips = { 77 bundle.getString("tipParamName"), bundle.getString("tipParamValue")}; 81 public java.awt.Component getCustomEditor() { 82 ParamModel model = null; 83 model = new ParamModel(params); 84 85 DDTablePanel panel = new DDTablePanel(new SortableDDTableModel(model), 86 requiredToolTips); 87 return panel; 89 } 90 91 public boolean isPaintable () { 92 return true; 93 } 94 95 public void paintValue (Graphics gfx, Rectangle box) { 96 String s = getPaintableString(); 97 FontMetrics fm = gfx.getFontMetrics (); 98 gfx.drawString (s, 4, (box.height - fm.getHeight ()) / 2 + 1 + fm.getMaxAscent ()); 99 } 100 101 protected java.lang.String getPaintableString() { 102 Object [] entries = (Object []) getValue(); 103 if ((entries == null) || (entries.length == 0)) { 104 return bundle.getString("TXT_Param") ; } else if (entries.length == 1) { 106 return bundle.getString("TXT_OneParam"); } else { 108 return MessageFormat.format(bundle.getString("TXT_MultiParam"), new Object [] { 110 Integer.toString(entries.length) 111 }); 112 } 113 } 114 115 public boolean supportsCustomEditor() { 116 return true; 117 } 118 119 public void setValue(Object value) { 120 if(value instanceof NameValuePair[]) { 121 NameValuePair[] tmpValue = (NameValuePair[])value; 122 params = new NameValuePair[tmpValue.length]; 123 for (int i = 0; i < tmpValue.length; i++) { 124 NameValuePair param = new NameValuePair(); 125 param.setParamName(tmpValue[i].getParamName()); 126 param.setParamValue(tmpValue[i].getParamValue()); 127 params[i] = param; 128 } 129 }else 130 params = getNameValuePairs(value); 131 } 132 133 public Object getValue() { 134 NameValuePair[] retVal = new NameValuePair[params.length]; 135 for (int i = 0; i < params.length; i++) { 136 NameValuePair val = new NameValuePair(); 137 val.setParamName(params[i].getParamName()); 138 val.setParamValue(params[i].getParamValue()); 139 retVal[i] = val; 140 } 141 return retVal; 142 } 143 144 private NameValuePair[] getNameValuePairs(Object attrVal){ 145 java.util.Map attributeMap = (java.util.Map )attrVal; 146 Set attributeKeys = attributeMap.keySet(); 147 java.util.Iterator it = attributeKeys.iterator(); 148 NameValuePair[] pairs = new NameValuePair[attributeKeys.size()]; 149 int i=0; 150 while(it.hasNext()){ 151 NameValuePair pair = new NameValuePair(); 152 Object key = it.next(); 153 pair.setParamName(key.toString()); 154 pair.setParamValue(attributeMap.get(key).toString()); 155 pairs[i] = pair; 156 i++; 157 } 158 return pairs; 159 } 160 161 public class ParamModel extends AbstractDDTableModel { 162 public ParamModel(NameValuePair[] rows) { 163 super( rows ); 164 } 165 166 public String getColumnName(int col) { 167 if (0 == col) 168 return bundle.getString("colHdrParamName"); else 170 return bundle.getString("colHdrParamValue"); } 172 173 public java.lang.Object getValueAt(int row, int col) { 174 NameValuePair rowObj = null; 175 rowObj = (NameValuePair) data.get(row); 176 177 if (null != rowObj) { 178 if (0 == col) 179 return rowObj.getParamName(); 180 else 181 return rowObj.getParamValue(); 182 } 183 return null; 184 } 185 186 public java.util.List isValueValid(java.lang.Object obj, int param) { 187 Vector errors = new Vector (); 188 NameValuePair edit = (NameValuePair) obj; 189 String editParamName = edit.getParamName(); 190 String editParamValue = edit.getParamValue(); 191 NameValuePair row = null; 192 String rowParamName = null; 193 if (editParamName == null || editParamName.trim().length() == 0) 194 errors.add(bundle.getString("ERR_InvalidEntry")); else if (editParamValue == null || editParamValue.trim().length() == 0){ 196 errors.add(bundle.getString("ERR_NoValue")); } 198 199 for (int i = 0; i < data.size(); i++) { 200 row = (NameValuePair) data.elementAt(i); 201 rowParamName = row.getParamName(); 202 if (i != param && rowParamName.equals(editParamName)){ 203 errors.add(bundle.getString("ERR_DuplicateEntry")); } 205 } 206 return errors; 207 } 208 209 public boolean isEditValid(Object obj, int index) { 210 return true; 211 } 212 213 public java.lang.String getModelName() { 214 return bundle.getString("ParamModel_modelName"); } 216 217 public org.netbeans.modules.j2ee.sun.ide.editors.ui.DDTableModelEditor getEditor() { 218 return new NameValuePairEditor(); 219 } 220 221 protected void setValueAt(java.lang.String str, java.lang.Object obj, int param) { 222 NameValuePair inVal = (NameValuePair) obj; 223 if (0 == param) 224 inVal.setParamName(str); 225 else 226 inVal.setParamValue(str); 227 } 228 229 public java.lang.Object makeNewElement() { 230 NameValuePair retVal = new NameValuePair(); 231 232 retVal.setParamName(""); retVal.setParamValue(""); return retVal; 236 } 237 238 public java.lang.Object [] getValue() { 239 return data.toArray(); 240 } 241 242 public int getColumnCount() { 243 return 2; 244 } 245 } 246 } 247 | Popular Tags |