diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Agile Software Development/TestApp/src/testapp/AppFrame.java | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Master/Agile Software Development/TestApp/src/testapp/AppFrame.java')
| -rw-r--r-- | Master/Agile Software Development/TestApp/src/testapp/AppFrame.java | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/Master/Agile Software Development/TestApp/src/testapp/AppFrame.java b/Master/Agile Software Development/TestApp/src/testapp/AppFrame.java new file mode 100644 index 0000000..ab025c4 --- /dev/null +++ b/Master/Agile Software Development/TestApp/src/testapp/AppFrame.java @@ -0,0 +1,172 @@ +/* + * 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) { + } + } + + +} |
