POM and swing fixes
diff --git a/.gitignore b/.gitignore
index a3d06f6..ed86588 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
.project
.idea/
*.iml
+.DS_Store
diff --git a/pom.xml b/pom.xml
index b1ef541..2bb282e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,12 +17,6 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.apache.logging</groupId>
- <artifactId>logging-parent</artifactId>
- <version>2</version>
- <relativePath/>
- </parent>
<modelVersion>4.0.0</modelVersion>
<groupId>log4j</groupId>
<artifactId>apache-chainsaw</artifactId>
@@ -120,6 +114,7 @@
<chainsaw.mainclass>org.apache.log4j.chainsaw.LogUI</chainsaw.mainclass>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
+ <dependency.locations.enabled>false</dependency.locations.enabled>
</properties>
<build>
@@ -142,6 +137,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
+ <version>3.8.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -168,6 +164,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
<executions>
<execution>
<phase>site</phase>
@@ -287,20 +284,6 @@
</executions>
</plugin>
<plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <additionalparam>-Xdoclint:none</additionalparam>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>jar</goal>
- <goal>javadoc</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
@@ -362,10 +345,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
- <configuration>
- <locales>en</locales>
- <templateFile>${basedir}/src/site/site.vm</templateFile>
- </configuration>
+ <version>3.7.1</version>
</plugin>
</plugins>
</build>
@@ -387,9 +367,9 @@
<version>3.4.1</version>
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
- <version>1.1.2</version>
+ <version>1.4.11.1</version>
</dependency>
<dependency>
<groupId>commons-vfs</groupId>
@@ -435,7 +415,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
- <version>1.16.20</version>
+ <version>1.18.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -474,17 +454,19 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
+ <version>3.1.1</version>
<configuration>
<bottom><![CDATA[<p align="center">Copyright © {inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.<br />
Apache Logging, Apache Log4j, Log4j, Apache Chainsaw, Chainsaw, Apache, the Apache feather logo, the Apache Logging project logo,
and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p>]]></bottom>
- <additionalparam>-Xdoclint:none</additionalparam>
<encoding>UTF-8</encoding>
+ <doclint>none</doclint>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>2.9</version>
<reportSets>
<reportSet>
<reports>
@@ -520,18 +502,32 @@
<build>
<plugins>
<plugin>
- <groupId>sh.tak.appbundler</groupId>
- <artifactId>appbundle-maven-plugin</artifactId>
- <version>1.2.0</version>
+ <groupId>de.perdian.maven.plugins</groupId>
+ <artifactId>macosappbundler-maven-plugin</artifactId>
+ <version>1.9.0</version>
<configuration>
- <mainClass>${chainsaw.mainclass}</mainClass>
- <bundleName>Chainsaw</bundleName>
- <iconFile>logo.icns</iconFile>
- <generateDiskImageFile>true</generateDiskImageFile>
- <jvmOptions>
- <jvmOption>-Xms128m</jvmOption>
- <jvmOption>-Xmx512m</jvmOption>
- </jvmOptions>
+ <plist>
+ <CFBundleIconFile>src/main/resources/logo.icns</CFBundleIconFile>
+ <CFBundleDisplayName>Chainsaw</CFBundleDisplayName>
+ <CFBundleDevelopmentRegion>English</CFBundleDevelopmentRegion>
+ <CFBundleURLTypes>
+ <string>msa</string>
+ </CFBundleURLTypes>
+ <JVMMainClassName>${chainsaw.mainclass}</JVMMainClassName>
+ <JVMVersion>11+</JVMVersion>
+ <JVMOptions>
+ <jvmOption>-Xms128m</jvmOption>
+ <jvmOption>-Xmx512m</jvmOption>
+ </JVMOptions>
+ </plist>
+ <dmg>
+ <generate>true</generate>
+ <additionalResources>
+ <additionalResource>
+ <directory>src/bundle/macos/distribution</directory>
+ </additionalResource>
+ </additionalResources>
+ </dmg>
</configuration>
<executions>
<execution>
diff --git a/src/main/java/org/apache/log4j/chainsaw/JSortTable.java b/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
index 64ae803..840e0d0 100644
--- a/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
+++ b/src/main/java/org/apache/log4j/chainsaw/JSortTable.java
@@ -19,9 +19,10 @@
import org.apache.log4j.chainsaw.helper.SwingHelper;
-import javax.swing.*;
+import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
+import java.awt.Color;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
@@ -60,6 +61,7 @@
protected void initSortHeader() {
JTableHeader header = getTableHeader();
+ header.setBackground(Color.WHITE);
header.setDefaultRenderer(new SortHeaderRenderer());
header.addMouseListener(this);
}
diff --git a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
index 3161792..8479cd5 100644
--- a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
@@ -32,6 +32,7 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
@@ -47,7 +48,7 @@
*/
public class TableColorizingRenderer extends DefaultTableCellRenderer {
private static final DateFormat DATE_FORMATTER = new SimpleDateFormat(Constants.SIMPLE_TIME_PATTERN);
- private static final Map<String, Icon> iconMap = LevelIconFactory.getInstance().getLevelToIconMap();
+ private final Map<String, Icon> iconMap;
private RuleColorizer colorizer;
private boolean levelUseIcons = false;
private boolean wrap = false;
@@ -95,6 +96,13 @@
levelPanel.setLayout(new BoxLayout(levelPanel, BoxLayout.Y_AXIS));
maxHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
+ iconMap = new HashMap<>();
+ try {
+ iconMap.putAll(LevelIconFactory.getInstance().getLevelToIconMap());
+ } catch (IllegalStateException ise) {
+ //ignore
+ }
+
if (UIManager.get("Table.selectionBackground") != null) {
borderColor = (Color) UIManager.get("Table.selectionBackground");
} else {
diff --git a/src/main/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java b/src/main/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java
index 1bac38f..3d7b76b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java
+++ b/src/main/java/org/apache/log4j/chainsaw/icons/LevelIconFactory.java
@@ -44,19 +44,20 @@
"icons/" + iconFileNames[i]);
}
if (resourceURL == null) {
- throw new IllegalStateException("Was unable to locate an L&F icon using either the current L&F or the cross platform L&F.");
- }
+ iconMap.put(iconLabels[i], ChainsawIcons.ICON_DEBUG);
+ } else {
- final ImageIcon icon =
- new ImageIcon(resourceURL);
- double scalex = .5;
- double scaley = .5;
- final int newWidth = (int) (scalex * icon.getIconWidth());
- final int newHeight = (int) (scaley * icon.getIconHeight());
- Image iconImage =
- icon.getImage().getScaledInstance(
- newWidth, newHeight, Image.SCALE_SMOOTH);
- iconMap.put(iconLabels[i], new ImageIcon(iconImage));
+ final ImageIcon icon =
+ new ImageIcon(resourceURL);
+ double scalex = .5;
+ double scaley = .5;
+ final int newWidth = (int) (scalex * icon.getIconWidth());
+ final int newHeight = (int) (scaley * icon.getIconHeight());
+ Image iconImage =
+ icon.getImage().getScaledInstance(
+ newWidth, newHeight, Image.SCALE_SMOOTH);
+ iconMap.put(iconLabels[i], new ImageIcon(iconImage));
+ }
}
//reuse DEBUG icon for TRACE level
iconMap.put("TRACE", ChainsawIcons.ICON_DEBUG);