diff --git a/src/webcrawler/ApplicationRunner.java b/src/webcrawler/ApplicationRunner.java index e2a4260..a37a6d9 100644 --- a/src/webcrawler/ApplicationRunner.java +++ b/src/webcrawler/ApplicationRunner.java @@ -1,7 +1,8 @@ package webcrawler; public class ApplicationRunner { - public static void main(String[] args) { - new WebCrawler(); - } + + public static void main(String[] args) { + new WebCrawlerWindow(); + } } diff --git a/src/webcrawler/WebCrawler.java b/src/webcrawler/WebCrawler.java deleted file mode 100644 index 737f85a..0000000 --- a/src/webcrawler/WebCrawler.java +++ /dev/null @@ -1,12 +0,0 @@ -package webcrawler; - -import javax.swing.*; - -public class WebCrawler extends JFrame { - public WebCrawler() { - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - setSize(300, 300); - setVisible(true); - setLayout(null); - } -} \ No newline at end of file diff --git a/src/webcrawler/WebCrawlerWindow.java b/src/webcrawler/WebCrawlerWindow.java new file mode 100644 index 0000000..471bf50 --- /dev/null +++ b/src/webcrawler/WebCrawlerWindow.java @@ -0,0 +1,81 @@ +package webcrawler; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; + +public class WebCrawlerWindow extends JFrame { + + public static final String LINE_SEPARATOR = System.getProperty("line.separator"); + private final JTextArea textArea; + private final JTextField location; + private final JButton goButton; + + public WebCrawlerWindow() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(600, 600); + + this.location = new JTextField("http://example.com"); + this.goButton = new JButton("Get text!"); + this.textArea = new JTextArea(); + initLayout(); + initActions(); + setVisible(true); + } + + private void initActions() { + goButton.addActionListener(e -> { + String url = location.getText(); + try ( + InputStream inputStream = new URL(url).openStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)) + ) { + final StringBuilder stringBuilder = new StringBuilder(); + String nextLine; + while ((nextLine = reader.readLine()) != null) { + stringBuilder.append(nextLine); + stringBuilder.append(LINE_SEPARATOR); + } + final String siteText = stringBuilder.toString(); + textArea.setText(siteText); + } catch (IOException e1) { + e1.printStackTrace(); + } + }); + } + + private void initLayout() { + var rootPanel = getContentPane(); + + var locationPanel = new JPanel(); + locationPanel.setLayout(new BoxLayout(locationPanel, BoxLayout.LINE_AXIS)); + locationPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + locationPanel.add(location); + locationPanel.add(goButton); + + var scrollPane = new JScrollPane(textArea); + scrollPane.setPreferredSize(new Dimension(400, 400)); + + var areaPanel = new JPanel(); + areaPanel.setLayout(new BoxLayout(areaPanel, BoxLayout.PAGE_AXIS)); + areaPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + areaPanel.add(scrollPane); + + rootPanel.add(locationPanel, BorderLayout.PAGE_START); + rootPanel.add(areaPanel, BorderLayout.CENTER); + + + } +} \ No newline at end of file