package fr.orsay.lri.varna.views; import java.awt.CardLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import fr.orsay.lri.varna.VARNAPanel; public class VueLoadColorMapValues extends JPanel implements ActionListener { /** * */ private static final long serialVersionUID = -1648400107478203724L; VARNAPanel _vp; public VueLoadColorMapValues(VARNAPanel vp) { _vp = vp; init(); } JRadioButton urlCB = new JRadioButton("URL"); JRadioButton fileCB = new JRadioButton("File"); JPanel urlAux = new JPanel(); JPanel fileAux = new JPanel(); CardLayout l = new CardLayout(); JPanel input = new JPanel(); JTextField urlTxt = new JTextField(); JTextField fileTxt = new JTextField(); JButton load = new JButton("Choose file"); private void init() { setLayout(new GridLayout(2,1)); JPanel choice = new JPanel(); urlCB.addActionListener(this); fileCB.addActionListener(this); ButtonGroup group = new ButtonGroup(); group.add(urlCB); group.add(fileCB); choice.add(new JLabel("Choose input source:")); choice.add(urlCB); choice.add(fileCB); input.setLayout(l); urlTxt.setPreferredSize(new Dimension(300,30)); fileTxt.setPreferredSize(new Dimension(300,30)); urlAux.add(urlTxt); fileAux.add(fileTxt); fileAux.add(load); input.add(fileAux,"file"); input.add(urlAux,"url"); group.setSelected(fileCB.getModel(), true); load.addActionListener(this); this.add(choice); this.add(input); } public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof JRadioButton) { if (urlCB.isSelected()) { l.show(input, "url"); } else { l.show(input, "file"); } } else if (e.getSource() instanceof JButton) { JFileChooser fc = new JFileChooser(); if (fc.showSaveDialog(_vp) == JFileChooser.APPROVE_OPTION) { this.fileTxt.setText(fc.getSelectedFile().getAbsolutePath()); } } } public Reader getReader() throws IOException { if (urlCB.isSelected()) { URL url = new URL(urlTxt.getText()); URLConnection connexion = url.openConnection(); connexion.setUseCaches(false); InputStream r = connexion.getInputStream(); return new InputStreamReader(r); } else { return new FileReader(fileTxt.getText()); } } }