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    }