Minor UI fixes - filedialog displayed on top of a jdialog has focus issues..now hiding the 'parent' dialog while the file dialog is displayed from the receiver config screen - since MESSAGE is the default format, changed default pattern to LogFilePatternReceiver pattern - fixed bug in filedialog usage
Project: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/commit/5617df56 Tree: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/tree/5617df56 Diff: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/diff/5617df56 Branch: refs/heads/master Commit: 5617df56985f7d93b4b3a644d3dd6272a4c2694e Parents: 98f2a54 Author: Scott Deboy <[email protected]> Authored: Sat Oct 30 23:54:15 2010 +0000 Committer: Scott Deboy <[email protected]> Committed: Sat Oct 30 23:54:15 2010 +0000 ---------------------------------------------------------------------- .../java/org/apache/log4j/chainsaw/LogUI.java | 220 +++++++++---------- .../chainsaw/ReceiverConfigurationPanel.java | 60 +++-- .../log4j/chainsaw/helper/SwingHelper.java | 16 +- 3 files changed, 167 insertions(+), 129 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/5617df56/src/main/java/org/apache/log4j/chainsaw/LogUI.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java index 984a421..57746f1 100644 --- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java +++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java @@ -21,7 +21,6 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; -import java.awt.Event; import java.awt.EventQueue; import java.awt.Frame; import java.awt.Point; @@ -1463,9 +1462,118 @@ public class LogUI extends JFrame implements ChainsawViewer, SettingsListener { new ActionListener() { public void actionPerformed(ActionEvent e) { dialog.setVisible(false); + + applicationPreferenceModel.setShowNoReceiverWarning(!receiverConfigurationPanel.isDontWarnMeAgain()); + //using this config next time - stop all plugins + if (receiverConfigurationPanel.isDontWarnMeAgain()) { + List plugins = pluginRegistry.getPlugins(); + for (Iterator iter = plugins.iterator();iter.hasNext();) { + Plugin plugin = (Plugin)iter.next(); + //don't stop ZeroConfPlugin if it is registered + if (!plugin.getName().toLowerCase().contains("zeroconf")) { + pluginRegistry.stopPlugin(plugin.getName()); + } + } + } + URL configURL = null; + + if (receiverConfigurationPanel.getModel().isNetworkReceiverMode()) { + int port = receiverConfigurationPanel.getModel().getNetworkReceiverPort(); + + try { + Class receiverClass = receiverConfigurationPanel.getModel().getNetworkReceiverClass(); + Receiver networkReceiver = (Receiver) receiverClass.newInstance(); + networkReceiver.setName(receiverClass.getSimpleName() + "-" + port); + + Method portMethod = + networkReceiver.getClass().getMethod( + "setPort", new Class[] { int.class }); + portMethod.invoke( + networkReceiver, new Object[] { new Integer(port) }); + + networkReceiver.setThreshold(Level.TRACE); + + pluginRegistry.addPlugin(networkReceiver); + networkReceiver.activateOptions(); + receiversPanel.updateReceiverTreeInDispatchThread(); + //setting config URL here ensures we have the receiver panel auto-saved config loaded + if (receiverConfigurationPanel.isDontWarnMeAgain()) { + configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); + } + } catch (Exception e3) { + MessageCenter.getInstance().getLogger().error( + "Error creating Receiver", e3); + MessageCenter.getInstance().getLogger().info( + "An error occurred creating your Receiver"); } - }); + } else if (receiverConfigurationPanel.getModel().isLoadConfig() || + receiverConfigurationPanel.getModel().isLoadSavedConfigs()) { + if (receiverConfigurationPanel.getModel().isLoadSavedConfigs()) { + configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); + } else { + configURL = receiverConfigurationPanel.getModel().getConfigToLoad(); + } + } else if (receiverConfigurationPanel.getModel().isLogFileReceiverConfig()) { + try { + URL fileURL = receiverConfigurationPanel.getModel().getLogFileURL(); + if (fileURL != null) { + VFSLogFilePatternReceiver fileReceiver = new VFSLogFilePatternReceiver(); + fileReceiver.setName(fileURL.getFile()); + fileReceiver.setAutoReconnect(true); + fileReceiver.setContainer(LogUI.this); + fileReceiver.setAppendNonMatches(true); + fileReceiver.setFileURL(fileURL.toURI().toString()); + fileReceiver.setTailing(true); + if (receiverConfigurationPanel.getModel().isPatternLayoutLogFormat()) { + fileReceiver.setLogFormat(LogFilePatternLayoutBuilder.getLogFormatFromPatternLayout(receiverConfigurationPanel.getModel().getLogFormat())); + } else { + fileReceiver.setLogFormat(receiverConfigurationPanel.getModel().getLogFormat()); + } + fileReceiver.setTimestampFormat(receiverConfigurationPanel.getModel().getLogFormatTimestampFormat()); + fileReceiver.setThreshold(Level.TRACE); + + pluginRegistry.addPlugin(fileReceiver); + fileReceiver.activateOptions(); + receiversPanel.updateReceiverTreeInDispatchThread(); + if (receiverConfigurationPanel.isDontWarnMeAgain()) { + configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); + } + } + } catch (Exception e2) { + MessageCenter.getInstance().getLogger().error( + "Error creating Receiver", e2); + MessageCenter.getInstance().getLogger().info( + "An error occurred creating your Receiver"); + } + } + if (configURL != null) { + MessageCenter.getInstance().getLogger().debug( + "Initialiazing Log4j with " + configURL.toExternalForm()); + final URL finalURL = configURL; + new Thread( + new Runnable() { + public void run() { + if (receiverConfigurationPanel.isDontWarnMeAgain()) { + applicationPreferenceModel.setConfigurationURL(finalURL.toExternalForm()); + } else { + try { + if (new File(finalURL.toURI()).exists()) { + loadConfigurationUsingPluginClassLoader(finalURL); + } + } + catch (URISyntaxException e) { + //ignore + } + } + + receiversPanel.updateReceiverTreeInDispatchThread(); + } + }).start(); + } + } + }); + receiverConfigurationPanel.setDialog(dialog); dialog.getContentPane().add(receiverConfigurationPanel); dialog.pack(); @@ -1476,114 +1584,6 @@ public class LogUI extends JFrame implements ChainsawViewer, SettingsListener { (screenSize.height / 2) - (dialog.getHeight() / 2)); dialog.setVisible(true); - applicationPreferenceModel.setShowNoReceiverWarning(!receiverConfigurationPanel.isDontWarnMeAgain()); - //using this config next time - stop all plugins - if (receiverConfigurationPanel.isDontWarnMeAgain()) { - List plugins = pluginRegistry.getPlugins(); - for (Iterator iter = plugins.iterator();iter.hasNext();) { - Plugin plugin = (Plugin)iter.next(); - //don't stop ZeroConfPlugin if it is registered - if (!plugin.getName().toLowerCase().contains("zeroconf")) { - pluginRegistry.stopPlugin(plugin.getName()); - } - } - } - URL configURL = null; - - if (receiverConfigurationPanel.getModel().isNetworkReceiverMode()) { - int port = receiverConfigurationPanel.getModel().getNetworkReceiverPort(); - - try { - Class receiverClass = receiverConfigurationPanel.getModel().getNetworkReceiverClass(); - Receiver networkReceiver = (Receiver) receiverClass.newInstance(); - networkReceiver.setName(receiverClass.getSimpleName() + "-" + port); - - Method portMethod = - networkReceiver.getClass().getMethod( - "setPort", new Class[] { int.class }); - portMethod.invoke( - networkReceiver, new Object[] { new Integer(port) }); - - networkReceiver.setThreshold(Level.TRACE); - - pluginRegistry.addPlugin(networkReceiver); - networkReceiver.activateOptions(); - receiversPanel.updateReceiverTreeInDispatchThread(); - //setting config URL here ensures we have the receiver panel auto-saved config loaded - if (receiverConfigurationPanel.isDontWarnMeAgain()) { - configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); - } - } catch (Exception e) { - MessageCenter.getInstance().getLogger().error( - "Error creating Receiver", e); - MessageCenter.getInstance().getLogger().info( - "An error occurred creating your Receiver"); - } - } else if (receiverConfigurationPanel.getModel().isLoadConfig() || - receiverConfigurationPanel.getModel().isLoadSavedConfigs()) { - if (receiverConfigurationPanel.getModel().isLoadSavedConfigs()) { - configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); - } else { - configURL = receiverConfigurationPanel.getModel().getConfigToLoad(); - } - } else if (receiverConfigurationPanel.getModel().isLogFileReceiverConfig()) { - try { - URL fileURL = receiverConfigurationPanel.getModel().getLogFileURL(); - if (fileURL != null) { - VFSLogFilePatternReceiver fileReceiver = new VFSLogFilePatternReceiver(); - fileReceiver.setName(fileURL.getFile()); - fileReceiver.setAutoReconnect(true); - fileReceiver.setContainer(LogUI.this); - fileReceiver.setAppendNonMatches(true); - fileReceiver.setFileURL(fileURL.toURI().toString()); - fileReceiver.setTailing(true); - if (receiverConfigurationPanel.getModel().isPatternLayoutLogFormat()) { - fileReceiver.setLogFormat(LogFilePatternLayoutBuilder.getLogFormatFromPatternLayout(receiverConfigurationPanel.getModel().getLogFormat())); - } else { - fileReceiver.setLogFormat(receiverConfigurationPanel.getModel().getLogFormat()); - } - fileReceiver.setTimestampFormat(receiverConfigurationPanel.getModel().getLogFormatTimestampFormat()); - fileReceiver.setThreshold(Level.TRACE); - - pluginRegistry.addPlugin(fileReceiver); - fileReceiver.activateOptions(); - receiversPanel.updateReceiverTreeInDispatchThread(); - if (receiverConfigurationPanel.isDontWarnMeAgain()) { - configURL = receiverConfigurationPanel.getModel().getSavedConfigToLoad(); - } - } - } catch (Exception e) { - MessageCenter.getInstance().getLogger().error( - "Error creating Receiver", e); - MessageCenter.getInstance().getLogger().info( - "An error occurred creating your Receiver"); - } - } - if (configURL != null) { - MessageCenter.getInstance().getLogger().debug( - "Initialiazing Log4j with " + configURL.toExternalForm()); - final URL finalURL = configURL; - new Thread( - new Runnable() { - public void run() { - if (receiverConfigurationPanel.isDontWarnMeAgain()) { - applicationPreferenceModel.setConfigurationURL(finalURL.toExternalForm()); - } else { - try { - if (new File(finalURL.toURI()).exists()) { - loadConfigurationUsingPluginClassLoader(finalURL); - } - } - catch (URISyntaxException e) { - //ignore - } - } - - receiversPanel.updateReceiverTreeInDispatchThread(); - } - }).start(); - } - } }); } http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/5617df56/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java index 8f276f1..bbc3ee3 100644 --- a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java +++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java @@ -18,7 +18,9 @@ package org.apache.log4j.chainsaw; import java.awt.BorderLayout; import java.awt.Component; +import java.awt.Container; import java.awt.Dimension; +import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -111,8 +113,10 @@ class ReceiverConfigurationPanel extends JPanel { //set by LogUI to handle hiding of the dialog private ActionListener completionActionListener; + //used as frame for file open dialogs + private Container dialog; - ReceiverConfigurationPanel() { + ReceiverConfigurationPanel() { setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15)); setLayout(new GridBagLayout()); @@ -363,8 +367,8 @@ class ReceiverConfigurationPanel extends JPanel { panel.add(new JLabel(" Log file format type "), c); DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel(); - comboBoxModel.addElement("PatternLayout format"); comboBoxModel.addElement("LogFilePatternReceiver LogFormat"); + comboBoxModel.addElement("PatternLayout format"); logFileFormatTypeComboBox = new JComboBox(comboBoxModel); logFileFormatTypeComboBox.setOpaque(false); @@ -553,15 +557,25 @@ class ReceiverConfigurationPanel extends JPanel { * or null if they cancelled. */ private URL browseConfig() throws MalformedURLException { - File selectedFile = SwingHelper.promptForFile(this, null, "Choose a Chainsaw configuration file"); + //hiding and showing the dialog to avoid focus issues with 2 dialogs + dialog.setVisible(false); + File selectedFile = SwingHelper.promptForFile(dialog, null, "Choose a Chainsaw configuration file"); + URL result = null; if (selectedFile == null) { - return null; + result = null; } - - if (!selectedFile.exists() || !selectedFile.canRead()) { - return null; + if (selectedFile != null && (!selectedFile.exists() || !selectedFile.canRead())) { + result = null; + } + if (selectedFile != null) { + result = selectedFile.toURI().toURL(); } - return selectedFile.toURI().toURL(); + EventQueue.invokeLater(new Runnable() { + public void run() { + dialog.setVisible(true); + } + }); + return result; } /** @@ -569,17 +583,25 @@ class ReceiverConfigurationPanel extends JPanel { * or null if they cancelled. */ private URL browseLogFile() throws MalformedURLException { - - File selectedFile = SwingHelper.promptForFile(this, null, "Select a log file"); + //hiding and showing the dialog to avoid focus issues with 2 dialogs + dialog.setVisible(false); + File selectedFile = SwingHelper.promptForFile(dialog, null, "Select a log file"); + URL result = null; if (selectedFile == null) { - return null; + result = null; } - - if (!selectedFile.exists() || !selectedFile.canRead()) { - return null; + if (selectedFile != null && (!selectedFile.exists() || !selectedFile.canRead())) { + result = null; } - - return selectedFile.toURI().toURL(); + if (selectedFile != null) { + result = selectedFile.toURI().toURL(); + } + EventQueue.invokeLater(new Runnable() { + public void run() { + dialog.setVisible(true); + } + }); + return result; } public static void main(String[] args) { @@ -599,7 +621,11 @@ class ReceiverConfigurationPanel extends JPanel { return dontwarnIfNoReceiver.isSelected(); } - /** + public void setDialog(Container dialog) { + this.dialog = dialog; + } + + /** * This class represents the model of the chosen options the user * has configured. * http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/5617df56/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java b/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java index 018e45c..89045a6 100644 --- a/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java +++ b/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java @@ -20,10 +20,10 @@ package org.apache.log4j.chainsaw.helper; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; +import java.awt.EventQueue; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Toolkit; -import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; @@ -38,6 +38,7 @@ import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; /** * A collection of standard utility methods for use within Swing. @@ -109,7 +110,14 @@ public final class SwingHelper { public static File promptForFile(Container parent, String defaultPath, String title) { if (SwingHelper.isMacOSX()) { //use filedialog on mac - FileDialog fileDialog = new FileDialog((Frame)null, title); + Component root = SwingUtilities.getRoot(parent); + Frame frame = null; + if (root instanceof Frame) { + frame = (Frame) root; + } + + FileDialog fileDialog = new FileDialog(frame, title); + fileDialog.setModal(true); if (defaultPath != null) { fileDialog.setDirectory(defaultPath); } @@ -118,7 +126,11 @@ public final class SwingHelper { if (fileString == null) { return null; } + if (fileDialog.getDirectory() != null) { + return new File(fileDialog.getDirectory(), fileString); + } else { return new File(fileString); + } } else { JFileChooser chooser;
