001/* 002 * This file is part of McIDAS-V 003 * 004 * Copyright 2007-2016 005 * Space Science and Engineering Center (SSEC) 006 * University of Wisconsin - Madison 007 * 1225 W. Dayton Street, Madison, WI 53706, USA 008 * https://www.ssec.wisc.edu/mcidas 009 * 010 * All Rights Reserved 011 * 012 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and 013 * some McIDAS-V source code is based on IDV and VisAD source code. 014 * 015 * McIDAS-V is free software; you can redistribute it and/or modify 016 * it under the terms of the GNU Lesser Public License as published by 017 * the Free Software Foundation; either version 3 of the License, or 018 * (at your option) any later version. 019 * 020 * McIDAS-V is distributed in the hope that it will be useful, 021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 023 * GNU Lesser Public License for more details. 024 * 025 * You should have received a copy of the GNU Lesser Public License 026 * along with this program. If not, see http://www.gnu.org/licenses. 027 */ 028package edu.wisc.ssec.mcidasv.chooser.adde; 029 030import static javax.swing.GroupLayout.DEFAULT_SIZE; 031import static javax.swing.GroupLayout.PREFERRED_SIZE; 032import static javax.swing.GroupLayout.Alignment.BASELINE; 033import static javax.swing.GroupLayout.Alignment.LEADING; 034import static javax.swing.LayoutStyle.ComponentPlacement.RELATED; 035 036import java.util.Hashtable; 037import java.util.List; 038 039import javax.swing.GroupLayout; 040import javax.swing.JComponent; 041import javax.swing.JLabel; 042import javax.swing.JPanel; 043 044import org.w3c.dom.Element; 045 046import ucar.unidata.data.imagery.ImageDataset; 047import ucar.unidata.idv.chooser.IdvChooserManager; 048 049import edu.wisc.ssec.mcidas.AreaDirectory; 050import edu.wisc.ssec.mcidasv.util.McVGuiUtils; 051 052 053/** 054 * Widget to select images from a remote ADDE server 055 * Displays a list of the descriptors (names) of the image datasets 056 * available for a particular ADDE group on the remote server. 057 * 058 * @author Don Murray 059 */ 060public class AddeBasicImageChooser extends AddeImageChooser { 061 062 /** 063 * Construct an Adde image selection widget 064 * 065 * 066 * @param mgr The chooser manager 067 * @param root The chooser.xml node 068 */ 069 public AddeBasicImageChooser(IdvChooserManager mgr, Element root) { 070 super(mgr, root); 071 } 072 073 /** 074 * Get the default value for a key 075 * 076 * @param property property (key type) 077 * @param dflt default value 078 * @return value for key or dflt if not found 079 */ 080 protected String getDefault(String property, String dflt) { 081 if (property.equals(PROP_UNIT)) return ""; 082 if (property.equals(PROP_BAND)) return "ALL"; 083 return super.getDefault(property, dflt); 084 } 085 086 /** 087 * Set the available units in the unit selector 088 * 089 * @param ad AreaDirectory for the image 090 * @param band band to use for units 091 */ 092 protected void setAvailableUnits(AreaDirectory ad, int band) { 093 super.setAvailableUnits(ad, band); 094 unitComboBox.setSelectedItem(ALLUNITS); 095 } 096 097 /** 098 * User said go, we go. Simply get the list of images 099 * from the imageChooser and create the ADDE.IMAGE.V 100 * DataSource 101 * 102 */ 103 public void doLoadInThread() { 104 if ( !getGoodToGo()) { 105 updateStatus(); 106 return; 107 } 108 109 List imageList = getImageList(); 110 if(imageList==null || imageList.size()==0) return; 111 ImageDataset ids = new ImageDataset(getDatasetName(), imageList); 112 113 Hashtable ht = new Hashtable(); 114 getDataSourceProperties(ht); 115 ht.put("preview", true); 116 makeDataSource(ids, "ADDE.IMAGE.V", ht); 117 saveServerState(); 118 } 119 120 /** 121 * Make the UI for this selector. 122 * 123 * @return The gui 124 */ 125 public JComponent doMakeContents() { 126 JPanel myPanel = new JPanel(); 127 128 JLabel timesLabel = McVGuiUtils.makeLabelRight("Times:"); 129 addDescComp(timesLabel); 130 131 JPanel timesPanel = makeTimesPanel(); 132 timesPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 133 addDescComp(timesPanel); 134 135 JLabel navigationLabel = McVGuiUtils.makeLabelRight("Navigation:"); 136 addDescComp(navigationLabel); 137 138 // Use processPropertyComponents to build combo boxes that we rely on 139 processPropertyComponents(); 140 addDescComp(navComboBox); 141 McVGuiUtils.setComponentWidth(navComboBox, McVGuiUtils.Width.DOUBLE); 142 143 GroupLayout layout = new GroupLayout(myPanel); 144 myPanel.setLayout(layout); 145 layout.setHorizontalGroup( 146 layout.createParallelGroup(LEADING) 147 .addGroup(layout.createSequentialGroup() 148 .addGroup(layout.createParallelGroup(LEADING) 149 .addGroup(layout.createSequentialGroup() 150 .addComponent(descriptorLabel) 151 .addGap(GAP_RELATED) 152 .addComponent(descriptorComboBox)) 153 .addGroup(layout.createSequentialGroup() 154 .addComponent(timesLabel) 155 .addGap(GAP_RELATED) 156 .addComponent(timesPanel, PREFERRED_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)) 157 .addGroup(layout.createSequentialGroup() 158 .addComponent(navigationLabel) 159 .addGap(GAP_RELATED) 160 .addComponent(navComboBox)))) 161 ); 162 layout.setVerticalGroup( 163 layout.createParallelGroup(LEADING) 164 .addGroup(layout.createSequentialGroup() 165 .addGroup(layout.createParallelGroup(BASELINE) 166 .addComponent(descriptorLabel) 167 .addComponent(descriptorComboBox)) 168 .addPreferredGap(RELATED) 169 .addGroup(layout.createParallelGroup(LEADING) 170 .addComponent(timesLabel) 171 .addComponent(timesPanel, PREFERRED_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)) 172 .addPreferredGap(RELATED) 173 .addGroup(layout.createParallelGroup(LEADING) 174 .addComponent(navigationLabel) 175 .addComponent(navComboBox))) 176 ); 177 178 setInnerPanel(myPanel); 179 return super.doMakeContents(true); 180 } 181 182}