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