001 /*
002 * $Id: AddeBasicImageChooser.java,v 1.9 2012/02/19 17:35:35 davep Exp $
003 *
004 * This file is part of McIDAS-V
005 *
006 * Copyright 2007-2012
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 package edu.wisc.ssec.mcidasv.chooser.adde;
031
032 import static javax.swing.GroupLayout.DEFAULT_SIZE;
033 import static javax.swing.GroupLayout.PREFERRED_SIZE;
034 import static javax.swing.GroupLayout.Alignment.BASELINE;
035 import static javax.swing.GroupLayout.Alignment.LEADING;
036 import static javax.swing.LayoutStyle.ComponentPlacement.RELATED;
037
038 import java.util.Hashtable;
039 import java.util.List;
040
041 import javax.swing.GroupLayout;
042 import javax.swing.JComponent;
043 import javax.swing.JLabel;
044 import javax.swing.JPanel;
045
046 import org.w3c.dom.Element;
047
048 import ucar.unidata.data.imagery.ImageDataset;
049 import ucar.unidata.idv.chooser.IdvChooserManager;
050
051 import edu.wisc.ssec.mcidas.AreaDirectory;
052 import edu.wisc.ssec.mcidasv.util.McVGuiUtils;
053
054
055 /**
056 * Widget to select images from a remote ADDE server
057 * Displays a list of the descriptors (names) of the image datasets
058 * available for a particular ADDE group on the remote server.
059 *
060 * @author Don Murray
061 */
062 public class AddeBasicImageChooser extends AddeImageChooser {
063
064 /**
065 * Construct an Adde image selection widget
066 *
067 *
068 * @param mgr The chooser manager
069 * @param root The chooser.xml node
070 */
071 public AddeBasicImageChooser(IdvChooserManager mgr, Element root) {
072 super(mgr, root);
073 }
074
075 /**
076 * Get the default value for a key
077 *
078 * @param property property (key type)
079 * @param dflt default value
080 * @return value for key or dflt if not found
081 */
082 protected String getDefault(String property, String dflt) {
083 if (property.equals(PROP_UNIT)) return "";
084 if (property.equals(PROP_BAND)) return "ALL";
085 return super.getDefault(property, dflt);
086 }
087
088 /**
089 * Set the available units in the unit selector
090 *
091 * @param ad AreaDirectory for the image
092 * @param band band to use for units
093 */
094 protected void setAvailableUnits(AreaDirectory ad, int band) {
095 super.setAvailableUnits(ad, band);
096 unitComboBox.setSelectedItem(ALLUNITS);
097 }
098
099 /**
100 * User said go, we go. Simply get the list of images
101 * from the imageChooser and create the ADDE.IMAGE.V
102 * DataSource
103 *
104 */
105 public void doLoadInThread() {
106 if ( !getGoodToGo()) {
107 updateStatus();
108 return;
109 }
110
111 List imageList = getImageList();
112 if(imageList==null || imageList.size()==0) return;
113 ImageDataset ids = new ImageDataset(getDatasetName(), imageList);
114
115 Hashtable ht = new Hashtable();
116 getDataSourceProperties(ht);
117 ht.put("preview", true);
118 makeDataSource(ids, "ADDE.IMAGE.V", ht);
119 saveServerState();
120 }
121
122 /**
123 * Make the UI for this selector.
124 *
125 * @return The gui
126 */
127 public JComponent doMakeContents() {
128 JPanel myPanel = new JPanel();
129
130 JLabel timesLabel = McVGuiUtils.makeLabelRight("Times:");
131 addDescComp(timesLabel);
132
133 JPanel timesPanel = makeTimesPanel();
134 timesPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
135 addDescComp(timesPanel);
136
137 JLabel navigationLabel = McVGuiUtils.makeLabelRight("Navigation:");
138 addDescComp(navigationLabel);
139
140 // Use processPropertyComponents to build combo boxes that we rely on
141 processPropertyComponents();
142 addDescComp(navComboBox);
143 McVGuiUtils.setComponentWidth(navComboBox, McVGuiUtils.Width.DOUBLE);
144
145 GroupLayout layout = new GroupLayout(myPanel);
146 myPanel.setLayout(layout);
147 layout.setHorizontalGroup(
148 layout.createParallelGroup(LEADING)
149 .addGroup(layout.createSequentialGroup()
150 .addGroup(layout.createParallelGroup(LEADING)
151 .addGroup(layout.createSequentialGroup()
152 .addComponent(descriptorLabel)
153 .addGap(GAP_RELATED)
154 .addComponent(descriptorComboBox))
155 .addGroup(layout.createSequentialGroup()
156 .addComponent(timesLabel)
157 .addGap(GAP_RELATED)
158 .addComponent(timesPanel, PREFERRED_SIZE, DEFAULT_SIZE, Short.MAX_VALUE))
159 .addGroup(layout.createSequentialGroup()
160 .addComponent(navigationLabel)
161 .addGap(GAP_RELATED)
162 .addComponent(navComboBox))))
163 );
164 layout.setVerticalGroup(
165 layout.createParallelGroup(LEADING)
166 .addGroup(layout.createSequentialGroup()
167 .addGroup(layout.createParallelGroup(BASELINE)
168 .addComponent(descriptorLabel)
169 .addComponent(descriptorComboBox))
170 .addPreferredGap(RELATED)
171 .addGroup(layout.createParallelGroup(LEADING)
172 .addComponent(timesLabel)
173 .addComponent(timesPanel, PREFERRED_SIZE, DEFAULT_SIZE, Short.MAX_VALUE))
174 .addPreferredGap(RELATED)
175 .addGroup(layout.createParallelGroup(LEADING)
176 .addComponent(navigationLabel)
177 .addComponent(navComboBox)))
178 );
179
180 setInnerPanel(myPanel);
181 return super.doMakeContents(true);
182 }
183
184 }