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);
+ }
+ }
+}