You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gr...@apache.org on 2023/12/13 15:20:11 UTC

(logging-chainsaw) branch master updated: extracted TabIconHandler

This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git


The following commit(s) were added to refs/heads/master by this push:
     new e24bb9e  extracted TabIconHandler
e24bb9e is described below

commit e24bb9ed48edc35af7543cc2b87bd5e4e3a9ea2d
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Wed Dec 13 16:20:06 2023 +0100

    extracted TabIconHandler
---
 src/main/java/org/apache/log4j/chainsaw/LogUI.java | 65 +-------------------
 .../components/elements/TabIconHandler.java        | 71 ++++++++++++++++++++++
 2 files changed, 73 insertions(+), 63 deletions(-)

diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index ef4c38d..e5af0ec 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -21,6 +21,7 @@ import org.apache.commons.configuration2.AbstractConfiguration;
 import org.apache.commons.configuration2.event.ConfigurationEvent;
 import org.apache.log4j.chainsaw.color.RuleColorizer;
 import org.apache.log4j.chainsaw.components.elements.SmallButton;
+import org.apache.log4j.chainsaw.components.elements.TabIconHandler;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanel;
 import org.apache.log4j.chainsaw.components.tabbedpane.ChainsawTabbedPane;
 import org.apache.log4j.chainsaw.components.tutorial.TutorialFrame;
@@ -839,10 +840,9 @@ public class LogUI extends JFrame {
             identifierPanels.add(thisPanel);
         }
 
-        TabIconHandler iconHandler = new TabIconHandler(ident);
+        TabIconHandler iconHandler = new TabIconHandler(ident, tabbedPane);
         thisPanel.addEventCountListener(iconHandler);
 
-
         tabbedPane.addChangeListener(iconHandler);
 
         PropertyChangeListener toolbarMenuUpdateListener =
@@ -917,68 +917,7 @@ public class LogUI extends JFrame {
         }
     }
 
-    private class TabIconHandler implements EventCountListener, ChangeListener {
-        //the tabIconHandler is associated with a new tab, and a new tab always
-        //shows the 'new events' icon
-        private boolean newEvents = true;
-        private boolean seenEvents = false;
-        private final String ident;
-        ImageIcon NEW_EVENTS = new ImageIcon(ChainsawIcons.ANIM_RADIO_TOWER);
-        ImageIcon HAS_EVENTS = new ImageIcon(ChainsawIcons.INFO);
-        Icon SELECTED = LineIconFactory.createBlankIcon();
-
-        public TabIconHandler(String identifier) {
-            ident = identifier;
-
-            new Thread(
-                () -> {
-                    while (true) {
-                        //if this tab is active, remove the icon
-                        //don't process undocked tabs
-                        if (getTabbedPane().indexOfTab(ident) > -1 &&
-                            getTabbedPane().getSelectedIndex() == getTabbedPane()
-                                .indexOfTab(ident)) {
-                            getTabbedPane().setIconAt(
-                                getTabbedPane().indexOfTab(ident), SELECTED);
-                            newEvents = false;
-                            seenEvents = true;
-                        } else if (getTabbedPane().indexOfTab(ident) > -1) {
-                            if (newEvents) {
-                                getTabbedPane().setIconAt(
-                                    getTabbedPane().indexOfTab(ident), NEW_EVENTS);
-                                newEvents = false;
-                                seenEvents = false;
-                            } else if (!seenEvents) {
-                                getTabbedPane().setIconAt(
-                                    getTabbedPane().indexOfTab(ident), HAS_EVENTS);
-                            }
-                        }
-
-                        try {
-                            Thread.sleep(1000);
-                        } catch (InterruptedException ie) {
-                        }
-                    }
-                }).start();
-        }
-
-        /**
-         * DOCUMENT ME!
-         *
-         * @param currentCount DOCUMENT ME!
-         * @param totalCount   DOCUMENT ME!
-         */
-        public void eventCountChanged(int currentCount, int totalCount) {
-            newEvents = true;
-        }
 
-        public void stateChanged(ChangeEvent event) {
-            if (
-                getTabbedPane().indexOfTab(ident) > -1 && getTabbedPane().indexOfTab(ident) == getTabbedPane().getSelectedIndex()) {
-                getTabbedPane().setIconAt(getTabbedPane().indexOfTab(ident), SELECTED);
-            }
-        }
-    }
 
     public void addReceiver(ChainsawReceiver rx) {
         receivers.add(rx);
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java
new file mode 100644
index 0000000..0662f91
--- /dev/null
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java
@@ -0,0 +1,71 @@
+package org.apache.log4j.chainsaw.components.elements;
+
+import org.apache.log4j.chainsaw.EventCountListener;
+import org.apache.log4j.chainsaw.components.tabbedpane.ChainsawTabbedPane;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
+import org.apache.log4j.chainsaw.icons.LineIconFactory;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public  class TabIconHandler implements EventCountListener, ChangeListener {
+    //the tabIconHandler is associated with a new tab, and a new tab always
+    //shows the 'new events' icon
+    private boolean newEvents = true;
+    private boolean seenEvents = false;
+    private final String ident;
+    private ChainsawTabbedPane tabbedPane;
+    ImageIcon NEW_EVENTS = new ImageIcon(ChainsawIcons.ANIM_RADIO_TOWER);
+    ImageIcon HAS_EVENTS = new ImageIcon(ChainsawIcons.INFO);
+    Icon SELECTED = LineIconFactory.createBlankIcon();
+
+    public TabIconHandler(String identifier, ChainsawTabbedPane tabbedPane) {
+        ident = identifier;
+        this.tabbedPane = tabbedPane;
+
+        new Thread(
+            () -> {
+                while (true) {
+                    //if this tab is active, remove the icon
+                    //don't process undocked tabs
+                    if (tabbedPane.indexOfTab(ident) > -1 &&
+                        tabbedPane.getSelectedIndex() == tabbedPane
+                            .indexOfTab(ident)) {
+                        tabbedPane.setIconAt(
+                            tabbedPane.indexOfTab(ident), SELECTED);
+                        newEvents = false;
+                        seenEvents = true;
+                    } else if (tabbedPane.indexOfTab(ident) > -1) {
+                        if (newEvents) {
+                            tabbedPane.setIconAt(
+                                tabbedPane.indexOfTab(ident), NEW_EVENTS);
+                            newEvents = false;
+                            seenEvents = false;
+                        } else if (!seenEvents) {
+                            tabbedPane.setIconAt(
+                                tabbedPane.indexOfTab(ident), HAS_EVENTS);
+                        }
+                    }
+
+                    try {
+                        Thread.sleep(1000);
+                    } catch (InterruptedException ie) {
+                    }
+                }
+            }).start();
+    }
+
+    @Override
+    public void eventCountChanged(int currentCount, int totalCount) {
+        newEvents = true;
+    }
+
+    @Override
+    public void stateChanged(ChangeEvent event) {
+        if (
+            tabbedPane.indexOfTab(ident) > -1 && tabbedPane.indexOfTab(ident) == tabbedPane.getSelectedIndex()) {
+            tabbedPane.setIconAt(tabbedPane.indexOfTab(ident), SELECTED);
+        }
+    }
+}