/* * GUI */ package testapp; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import java.util.logging.*; import javax.swing.JProgressBar; /** * * @author eisenhauer */ public class AppFrame extends JFrame { private static final Logger logger = Logger.getLogger(AppFrame.class.getName()); private JPanel taskPanel; private JTextField urlTxf; private JButton loadBtn; private ImageComponent imgComp; private JScrollPane imgScroll; private static AppFrame theInstance = null; private JPanel progressPanel; public AppFrame(String title) { super(title); theInstance = this; initUI(); } public static AppFrame getInstance() { return theInstance; } private void initUI() { this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { if (imgComp != null) { if (imgComp.getFile() != null) { // TODO //imgComp.getFile().delete(); } } System.exit(0); } }); Container cont = this.getContentPane(); ButtonListener bl = new ButtonListener(); CellConstraints cc = new CellConstraints(); setLayout(new BorderLayout()); taskPanel = new JPanel(); String colSpec = "5dlu,p,5dlu,200dlu,5dlu,p,5dlu"; String rowSpec = "5dlu,p,5dlu,p,5dlu"; taskPanel.setLayout(new FormLayout(colSpec, rowSpec)); int row = 2; JLabel urlLabel = new JLabel("URL:"); taskPanel.add(urlLabel, cc.xy(2, row)); urlTxf = new JTextField(""); taskPanel.add(urlTxf, cc.xy(4, row)); loadBtn = new JButton("Analyze"); loadBtn.setActionCommand("LOADURL"); loadBtn.addActionListener(bl); urlTxf.addKeyListener(bl); taskPanel.add(loadBtn, cc.xy(6, row)); imgComp = new ImageComponent(); imgScroll = new JScrollPane(imgComp); imgScroll.setPreferredSize(new Dimension(200, 200)); JProgressBar progressBar = new JProgressBar(); progressBar.setIndeterminate(true); progressPanel = new JPanel(); progressPanel.setVisible(false); progressBar.setPreferredSize(new Dimension (500,25)); imgScroll.setForeground(Color.white); progressBar.setBackground(Color.black); progressBar.setForeground(Color.red); progressPanel.add(progressBar); cont.add(progressPanel, BorderLayout.SOUTH); cont.add(taskPanel, BorderLayout.NORTH); cont.add(imgScroll, BorderLayout.CENTER); } public void endProgressBar () { progressPanel.setVisible(false); } private void onLoad() { String url = urlTxf.getText(); if (!url.startsWith("http://")) url = "http://" + url; ItemGenerator ig = new ItemGenerator(url, progressPanel); progressPanel.setVisible(true); ig.execute(); } public void setImage(File img) { if (!img.canRead()) { logger.log(Level.SEVERE,"Cannot read File"); return; } if (imgComp.getFile() != null) { //TODO //imgComp.getFile().delete(); } imgComp.setImage(img); imgScroll.revalidate(); progressPanel.setVisible(false); } public File getImageFile() { return imgComp.getFile(); } public class ButtonListener implements ActionListener, KeyListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if (cmd.equals("LOADURL")) { onLoad(); } } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { onLoad(); } } public void keyReleased(KeyEvent e) { } } }