From de0ae8591890263033346b4cdaeb15662d258938 Mon Sep 17 00:00:00 2001 From: Balazs Toldi Date: Sun, 29 Nov 2020 12:47:04 +0100 Subject: [PATCH] Added search bar adn some bug fiexs --- src/main/java/eu/toldi/rss/Article.java | 1 + src/main/java/eu/toldi/rss/FeedFrame.java | 40 ++++++++++++++++--- src/main/java/eu/toldi/rss/UpdaterThread.java | 14 ++++--- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/main/java/eu/toldi/rss/Article.java b/src/main/java/eu/toldi/rss/Article.java index 5c3e2e5..0bfbad2 100644 --- a/src/main/java/eu/toldi/rss/Article.java +++ b/src/main/java/eu/toldi/rss/Article.java @@ -117,6 +117,7 @@ public class Article { public void open(){ + if(getURL() == null) return; Desktop desktop; if(Desktop.isDesktopSupported() && (desktop = Desktop.getDesktop()).isSupported(Desktop.Action.BROWSE)){ try { diff --git a/src/main/java/eu/toldi/rss/FeedFrame.java b/src/main/java/eu/toldi/rss/FeedFrame.java index 1da117f..8a52d3c 100644 --- a/src/main/java/eu/toldi/rss/FeedFrame.java +++ b/src/main/java/eu/toldi/rss/FeedFrame.java @@ -1,11 +1,8 @@ package eu.toldi.rss; -import org.xml.sax.helpers.DefaultHandler; - -import javax.naming.ldap.SortKey; import javax.swing.*; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import javax.swing.table.TableRowSorter; import javax.swing.tree.*; import java.awt.*; @@ -34,12 +31,13 @@ public class FeedFrame extends JFrame { private DefaultMutableTreeNode treeRoot; public FeedFrame() { - setTitle("RSS Feed reader"); setDefaultCloseOperation(EXIT_ON_CLOSE); setMinimumSize(new Dimension(900, 600)); initData(); initComponents(); + UpdaterThread updater = new UpdaterThread(data,table); + updater.start(); } private void initData() { @@ -65,7 +63,36 @@ public class FeedFrame extends JFrame { table.setRowSorter(sorter); add(scrollPane, BorderLayout.CENTER); + } + private void initSearchBar(){ + JTextField searchBox = new JTextField(); + searchBox.setColumns(50); + searchBox.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + search(); + } + public void removeUpdate(DocumentEvent e) { + search(); + } + public void insertUpdate(DocumentEvent e) { + search(); + } + public void search(){ + String text = searchBox.getText(); + if (text.trim().length() == 0) { + sorter.setRowFilter(null); + } else { + sorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); + } + } + }); + JPanel searchPanel = new JPanel(new BorderLayout()); + JLabel searchText = new JLabel("Search:",JLabel.LEFT); + searchPanel.setLayout(new FlowLayout()); + searchPanel.add(searchText); + searchPanel.add(searchBox); + add(searchPanel, BorderLayout.NORTH); } private void initMenuBar() { @@ -116,6 +143,7 @@ public class FeedFrame extends JFrame { ImageIcon icon = new ImageIcon(this.getClass().getResource("/icon.png")); this.setIconImage(icon.getImage()); initTable(); + initSearchBar(); initMenuBar(); initTree(); } diff --git a/src/main/java/eu/toldi/rss/UpdaterThread.java b/src/main/java/eu/toldi/rss/UpdaterThread.java index 374ec67..3367890 100644 --- a/src/main/java/eu/toldi/rss/UpdaterThread.java +++ b/src/main/java/eu/toldi/rss/UpdaterThread.java @@ -1,6 +1,7 @@ package eu.toldi.rss; import javax.swing.*; +import javax.swing.table.TableRowSorter; import java.io.IOException; public class UpdaterThread extends Thread{ @@ -15,6 +16,11 @@ public class UpdaterThread extends Thread{ @Override public void run() { while (true) { + try { + sleep(60 * 1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } for (Feed f : data.getFeeds()) { try { f.updateFeed(); @@ -22,14 +28,10 @@ public class UpdaterThread extends Thread{ e.printStackTrace(); } } - RowSorter sorter = table.getRowSorter(); + TableRowSorter sorter = (TableRowSorter) table.getRowSorter(); table.setModel(data); + table.setRowSorter(sorter); table.updateUI(); - try { - sleep(60 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } } } }