001 /* 002 * This file is part of McIDAS-V 003 * 004 * Copyright 2007-2013 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 */ 028 package edu.wisc.ssec.mcidasv.servermanager; 029 030 import java.awt.BorderLayout; 031 import java.awt.FlowLayout; 032 import java.awt.event.ActionListener; 033 import java.awt.event.ActionEvent; 034 035 import javax.swing.JButton; 036 import javax.swing.JCheckBox; 037 import javax.swing.JDialog; 038 import javax.swing.JLabel; 039 import javax.swing.JPanel; 040 import javax.swing.JTextField; 041 import javax.swing.SwingUtilities; 042 import javax.swing.border.EmptyBorder; 043 import javax.swing.event.DocumentListener; 044 import javax.swing.event.DocumentEvent; 045 046 import org.slf4j.Logger; 047 import org.slf4j.LoggerFactory; 048 049 import net.miginfocom.swing.MigLayout; 050 051 /** 052 * 053 * 054 */ 055 public class ImportUrl extends JDialog implements ActionListener { 056 057 protected static final String CMD_DEFAULT_ACCOUNTING = "use_default_accounting"; 058 protected static final String CMD_IMPORT = "import"; 059 protected static final String CMD_CANCEL = "cancel"; 060 061 private TabbedAddeManager serverManagerGui; 062 private EntryStore serverManager; 063 064 private static final Logger logger = LoggerFactory.getLogger(ImportUrl.class); 065 066 private JLabel userLabel; 067 private JLabel projLabel; 068 private JCheckBox acctBox; 069 private JTextField mctableField; 070 private JTextField userField; 071 private JTextField projField; 072 private JButton okButton; 073 private JButton cancelButton; 074 075 private final JPanel contentPanel = new JPanel(); 076 077 078 /** 079 * Create the dialog. 080 */ 081 public ImportUrl() { 082 initComponents(); 083 } 084 085 public ImportUrl(final EntryStore serverManager, final TabbedAddeManager serverManagerGui) { 086 this.serverManager = serverManager; 087 this.serverManagerGui = serverManagerGui; 088 initComponents(); 089 } 090 091 public void initComponents() { 092 setTitle("Import from URL"); 093 setBounds(100, 100, 450, 215); 094 getContentPane().setLayout(new BorderLayout()); 095 contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); 096 getContentPane().add(contentPanel, BorderLayout.CENTER); 097 contentPanel.setLayout(new MigLayout("", "[][grow]", "[][][][]")); 098 099 JLabel mctableLabel = new JLabel("MCTABLE.TXT URL:"); 100 contentPanel.add(mctableLabel, "cell 0 0,alignx trailing"); 101 102 mctableField = new JTextField(); 103 contentPanel.add(mctableField, "cell 1 0,growx"); 104 mctableField.getDocument().addDocumentListener(new DocumentListener() { 105 public void changedUpdate(final DocumentEvent e) { 106 int len = mctableField.getText().trim().length(); 107 // okButton.setEnabled(mctableField.getText().trim().length() > 0); 108 okButton.setEnabled(len > 0); 109 logger.trace("len={}", len); 110 } 111 public void insertUpdate(final DocumentEvent e) {} 112 public void removeUpdate(final DocumentEvent e) {} 113 }); 114 115 acctBox = new JCheckBox("Use default accounting?"); 116 acctBox.addActionListener(new ActionListener() { 117 public void actionPerformed(ActionEvent e) { 118 boolean selected = acctBox.isSelected(); 119 userLabel.setEnabled(!selected); 120 userField.setEnabled(!selected); 121 projLabel.setEnabled(!selected); 122 projField.setEnabled(!selected); 123 } 124 }); 125 acctBox.setSelected(true); 126 contentPanel.add(acctBox, "cell 1 1"); 127 128 userLabel = new JLabel("Username:"); 129 userLabel.setEnabled(!acctBox.isSelected()); 130 contentPanel.add(userLabel, "cell 0 2,alignx trailing"); 131 132 userField = new JTextField(); 133 contentPanel.add(userField, "cell 1 2,growx"); 134 userField.setColumns(4); 135 userField.setEnabled(!acctBox.isSelected()); 136 137 projLabel = new JLabel("Project #:"); 138 projLabel.setEnabled(!acctBox.isSelected()); 139 contentPanel.add(projLabel, "cell 0 3,alignx trailing"); 140 141 projField = new JTextField(); 142 contentPanel.add(projField, "cell 1 3,growx"); 143 projField.setColumns(4); 144 projField.setEnabled(!acctBox.isSelected()); 145 146 { 147 JPanel buttonPane = new JPanel(); 148 buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); 149 getContentPane().add(buttonPane, BorderLayout.SOUTH); 150 { 151 okButton = new JButton("Import MCTABLE.TXT"); 152 okButton.setActionCommand(CMD_IMPORT); 153 okButton.addActionListener(this); 154 buttonPane.add(okButton); 155 // getRootPane().setDefaultButton(okButton); 156 } 157 { 158 cancelButton = new JButton("Cancel"); 159 cancelButton.setActionCommand(CMD_CANCEL); 160 cancelButton.addActionListener(this); 161 buttonPane.add(cancelButton); 162 } 163 } 164 165 } 166 167 168 169 public void actionPerformed(final ActionEvent e) { 170 String cmd = e.getActionCommand(); 171 if (CMD_CANCEL.equals(cmd)) { 172 dispose(); 173 } else if (CMD_IMPORT.equals(cmd)) { 174 175 String path = mctableField.getText().trim(); 176 String user = AddeEntry.DEFAULT_ACCOUNT.getUsername(); 177 String proj = AddeEntry.DEFAULT_ACCOUNT.getProject(); 178 if (!acctBox.isSelected()) { 179 user = userField.getText().trim(); 180 proj = projField.getText().trim(); 181 } 182 logger.trace("importing: path={} user={} proj={}", new Object[] { path, user, proj}); 183 if (serverManagerGui != null) { 184 serverManagerGui.importMctable(path, user, proj); 185 } 186 dispose(); 187 } 188 } 189 190 /** 191 * Launch the application. 192 */ 193 public static void main(String[] args) { 194 SwingUtilities.invokeLater(new Runnable() { 195 public void run() { 196 try { 197 ImportUrl dialog = new ImportUrl(); 198 dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 199 dialog.setVisible(true); 200 } catch (Exception e) { 201 e.printStackTrace(); 202 } 203 } 204 }); 205 206 } 207 }