001/* 002 * $Id: ImageParameters.java,v 1.9 2011/03/24 16:06:31 davep Exp $ 003 * 004 * This file is part of McIDAS-V 005 * 006 * Copyright 2007-2011 007 * Space Science and Engineering Center (SSEC) 008 * University of Wisconsin - Madison 009 * 1225 W. Dayton Street, Madison, WI 53706, USA 010 * https://www.ssec.wisc.edu/mcidas 011 * 012 * All Rights Reserved 013 * 014 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and 015 * some McIDAS-V source code is based on IDV and VisAD source code. 016 * 017 * McIDAS-V is free software; you can redistribute it and/or modify 018 * it under the terms of the GNU Lesser Public License as published by 019 * the Free Software Foundation; either version 3 of the License, or 020 * (at your option) any later version. 021 * 022 * McIDAS-V is distributed in the hope that it will be useful, 023 * but WITHOUT ANY WARRANTY; without even the implied warranty of 024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 025 * GNU Lesser Public License for more details. 026 * 027 * You should have received a copy of the GNU Lesser Public License 028 * along with this program. If not, see http://www.gnu.org/licenses. 029 */ 030 031package edu.wisc.ssec.mcidasv.chooser; 032 033 034import edu.wisc.ssec.mcidasv.ResourceManager; 035 036import java.awt.BorderLayout; 037import java.awt.Dimension; 038 039import java.awt.event.ActionListener; 040import java.awt.event.ActionEvent; 041import java.awt.event.KeyAdapter; 042import java.awt.event.KeyEvent; 043import java.awt.event.KeyListener; 044import java.awt.event.ItemListener; 045import java.awt.event.ItemEvent; 046 047import java.util.ArrayList; 048import java.util.List; 049import java.util.StringTokenizer; 050 051import javax.swing.*; 052 053import org.w3c.dom.Document; 054import org.w3c.dom.Element; 055import org.w3c.dom.Node; 056import org.w3c.dom.NodeList; 057 058import ucar.unidata.data.imagery.AddeImageDescriptor; 059import ucar.unidata.ui.XmlTree; 060import ucar.unidata.ui.imagery.ImageSelector; 061 062import ucar.unidata.util.GuiUtils; 063import ucar.unidata.util.Misc; 064import ucar.unidata.util.NamedThing; 065import ucar.unidata.util.PreferenceList; 066 067import ucar.unidata.xml.XmlResourceCollection; 068import ucar.unidata.xml.XmlUtil; 069 070 071public class ImageParameters extends NamedThing { 072 073 private static final String TAG_FOLDER = "folder"; 074 private static final String TAG_SAVESET = "set"; 075 private static final String ATTR_NAME = "name"; 076 private static final String ATTR_URL = "url"; 077 078 private static final String[] ATTRS = { "user", "proj", "pos", 079 "satband", "band", "id", "key", "latlon", "linele", "loc", 080 "mag", "num", "place", "size" , "spac", "unit", "nav", 081 "center", "uleft", "lleft", "uright", "lright", "descriptor", 082 "group" 083 }; 084 085 private String server; 086 private List properties; 087 private List values; 088 089 private String user; 090 private String proj; 091 private String pos; 092 private String satband; 093 private String band; 094 private String id; 095 private String key; 096 private String latlon; 097 private String linele; 098 private String loc; 099 private String mag; 100 private String num; 101 private String place; 102 private String size; 103 private String spac; 104 private String unit; 105 private String nav; 106 private String center; 107 private String uleft; 108 private String lleft; 109 private String uright; 110 private String lright; 111 private String descriptor; 112 private String group; 113 114 115 public ImageParameters(String url) { 116 List props = new ArrayList(); 117 List vals = new ArrayList(); 118 parametersBreakdown(url, props, vals); 119 this.properties = props; 120 this.values = vals; 121 setValues(props, vals); 122 } 123 124 public ImageParameters(List props, List vals) { 125 this.properties = props; 126 this.values = vals; 127 setValues(props, vals); 128 } 129 130 public List getProperties() { 131 return this.properties; 132 } 133 134 public List getValues() { 135 return this.values; 136 } 137 138 public String getServer() { 139 return this.server; 140 } 141 142 private void setValues(List props, List vals) { 143 int len = props.size(); 144 if (len < 1) return; 145 for (int i=0; i<len; i++) { 146 String prop = (String)props.get(i); 147 if (!isKeyword(prop)) break; 148 String val = (String)vals.get(i); 149 if (prop.equals("user")) { 150 user = val; 151 break; 152 } 153 if (prop.equals("proj")) { 154 proj = val; 155 break; 156 } 157 if (prop.equals("pos")) { 158 pos = val; 159 break; 160 } 161 if (prop.equals("satband")) { 162 satband = val; 163 break; 164 } 165 if (prop.equals("band")) { 166 band = val; 167 break; 168 } 169 if (prop.equals("id")) { 170 id = val; 171 break; 172 } 173 if (prop.equals("key")) { 174 key = val; 175 break; 176 } 177 if (prop.equals("latlon")) { 178 latlon = val; 179 break; 180 } 181 if (prop.equals("linele")) { 182 linele = val; 183 break; 184 } 185 if (prop.equals("loc")) { 186 loc = val; 187 break; 188 } 189 if (prop.equals("mag")) { 190 mag = val; 191 break; 192 } 193 if (prop.equals("num")) { 194 num = val; 195 break; 196 } 197 if (prop.equals("place")) { 198 place = val; 199 break; 200 } 201 if (prop.equals("size")) { 202 size = val; 203 break; 204 } 205 if (prop.equals("spac")) { 206 spac = val; 207 break; 208 } 209 if (prop.equals("unit")) { 210 unit = val; 211 break; 212 } 213 if (prop.equals("nav")) { 214 nav = val; 215 break; 216 } 217 if (prop.equals("center")) { 218 center = val; 219 break; 220 } 221 if (prop.equals("uleft")) { 222 uleft = val; 223 break; 224 } 225 if (prop.equals("lleft")) { 226 lleft = val; 227 break; 228 } 229 if (prop.equals("uright")) { 230 uright = val; 231 break; 232 } 233 if (prop.equals("lright")) { 234 lright = val; 235 break; 236 } 237 if (prop.equals("descriptor")) { 238 descriptor = val; 239 break; 240 } 241 if (prop.equals("group")) { 242 group = val; 243 break; 244 } 245 } 246 } 247 248 private boolean isKeyword(String prop) { 249 for (int i=0; i<ATTRS.length; i++) { 250 if (prop.equals(ATTRS[i])) return true; 251 } 252 return false; 253 } 254 255 public String getUser() { 256 return user; 257 } 258 259 public String getProj() { 260 return proj; 261 } 262 263 public String getPos() { 264 return pos; 265 } 266 267 public String getSatband() { 268 return satband; 269 } 270 271 public String getBand() { 272 return band; 273 } 274 275 public String getId() { 276 return id; 277 } 278 279 public String getKey() { 280 return key; 281 } 282 283 public String getLatlon() { 284 return latlon; 285 } 286 287 public String getLinele() { 288 return linele; 289 } 290 291 public String getLoc() { 292 return loc; 293 } 294 295 public String getMag() { 296 return mag; 297 } 298 299 public String getNum() { 300 return num; 301 } 302 303 public String getPlace() { 304 return place; 305 } 306 307 public String getSize() { 308 return size; 309 } 310 311 public String getSpac() { 312 return spac; 313 } 314 315 public String getUnit() { 316 return unit; 317 } 318 319 public String getNav() { 320 return nav; 321 } 322 323 public String getCenter() { 324 return center; 325 } 326 327 public String getUleft() { 328 return uleft; 329 } 330 331 public String getLleft() { 332 return lleft; 333 } 334 335 public String getUright() { 336 return uright; 337 } 338 339 public String getLright() { 340 return lright; 341 } 342 343 public String getDescriptor() { 344 return descriptor; 345 } 346 347 public String getGroup() { 348 return group; 349 } 350 351 private void parametersBreakdown(String url, List props, List vals) { 352 //System.out.println("url=" + url); 353 String prop; 354 String val; 355 //StringTokenizer tok = new StringTokenizer(url, "&"); 356 StringTokenizer tok = new StringTokenizer(url, "/"); 357 tok.nextToken(); 358 this.server = tok.nextToken(); 359 //System.out.println("server=" + server); 360 tok = new StringTokenizer(url, "&"); 361 String remnant = tok.nextToken(); 362 while (tok.hasMoreElements()) { 363 remnant = tok.nextToken(); 364 StringTokenizer tok2 = new StringTokenizer(remnant, "="); 365 if (tok2.countTokens() >= 2) { 366 props.add(tok2.nextToken()); 367 vals.add(tok2.nextToken()); 368 } 369 } 370/* 371 for (int i=0; i<props.size(); i++) { 372 System.out.println(props.get(i) + "=" + vals.get(i)); 373 } 374*/ 375 } 376}