You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2017/05/30 23:48:49 UTC

[12/50] [abbrv] logging-chainsaw git commit: Slight improvements to UI fidelity (on Mac) - ok/cancel button order is cancel/ok on Mac, ok/cancel everywhere else - use 'FileDialog' instead of JFileChooser on Mac since it looks more like a native Mac fil

Slight improvements to UI fidelity (on Mac)
 - ok/cancel button order is cancel/ok on Mac, ok/cancel everywhere else
 - use 'FileDialog' instead of JFileChooser on Mac since it looks more like a native Mac file-open dialog


Project: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/commit/98f2a549
Tree: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/tree/98f2a549
Diff: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/diff/98f2a549

Branch: refs/heads/master
Commit: 98f2a549255b1a4b0a8c766995a521bf3f7457a0
Parents: 4c8ba76
Author: Scott Deboy <sd...@apache.org>
Authored: Sat Oct 30 18:58:21 2010 +0000
Committer: Scott Deboy <sd...@apache.org>
Committed: Sat Oct 30 18:58:21 2010 +0000

----------------------------------------------------------------------
 .../log4j/chainsaw/AbstractPreferencePanel.java | 10 ++--
 .../ApplicationPreferenceModelPanel.java        | 17 +++---
 .../apache/log4j/chainsaw/FileLoadAction.java   | 35 ++----------
 .../chainsaw/ReceiverConfigurationPanel.java    | 58 ++++++--------------
 .../log4j/chainsaw/helper/SwingHelper.java      | 57 +++++++++++++++++++
 5 files changed, 90 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/98f2a549/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java b/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
index 50adbc6..89e4e5f 100644
--- a/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
@@ -23,6 +23,7 @@ import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.event.ActionListener;
 import java.util.Enumeration;
+import java.util.List;
 
 import javax.swing.BorderFactory;
 import javax.swing.Box;
@@ -42,6 +43,7 @@ import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 /**
  * Some basic plumbing for Preference related dialogs.
@@ -106,14 +108,12 @@ public abstract class AbstractPreferencePanel extends JPanel
   
     add(mainPanel, BorderLayout.CENTER);
   
-  
-
-  
     Box buttonBox = Box.createHorizontalBox();
+    List buttons = SwingHelper.orderOKCancelButtons(okButton, cancelButton);
     buttonBox.add(Box.createHorizontalGlue());
-    buttonBox.add(okButton);
+    buttonBox.add((JButton)buttons.get(0));
     buttonBox.add(Box.createHorizontalStrut(10));
-    buttonBox.add(cancelButton);
+    buttonBox.add((JButton)buttons.get(1));
   
     add(buttonBox, BorderLayout.SOUTH);
   

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/98f2a549/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
index 35457be..64cba35 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
@@ -40,7 +40,6 @@ import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
-import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -58,6 +57,7 @@ import javax.swing.tree.TreeModel;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.osx.OSXIntegration;
 
 
@@ -509,7 +509,7 @@ public static void main(String[] args) {
 
       p6.add(configURLPanel);
 
-      JButton browseButton = new JButton(" Browse ");
+      JButton browseButton = new JButton(" Open File... ");
       browseButton.addActionListener(new ActionListener()
       {
           public void actionPerformed(ActionEvent e)
@@ -552,7 +552,7 @@ public static void main(String[] args) {
                   File currentConfigurationPath = new File(selectedItem.toString()).getParentFile();
                   if (currentConfigurationPath != null) {
                       defaultPath = currentConfigurationPath.getPath();
-                      //JFileChooser constructor will not navigate to this location unless we remove the prefixing protocol and slash
+                      //FileDialog will not navigate to this location unless we remove the prefixing protocol and slash
                       //at least on winxp
                       if (defaultPath.toLowerCase().startsWith("file:\\")) {
                           defaultPath = defaultPath.substring("file:\\".length());
@@ -560,14 +560,11 @@ public static void main(String[] args) {
                   }
               }
           }
-
-          JFileChooser chooser = new JFileChooser(defaultPath);
-          int result = chooser.showOpenDialog(ApplicationPreferenceModelPanel.this);
-          if (JFileChooser.APPROVE_OPTION == result) {
-              File f = chooser.getSelectedFile();
+      File selectedFile = SwingHelper.promptForFile(this, defaultPath, "Select a Chainsaw configuration file");
+      if (selectedFile != null) {
               try
               {
-                  String newConfigurationFile = f.toURI().toURL().toExternalForm();
+                  String newConfigurationFile = selectedFile.toURI().toURL().toExternalForm();
                   if (!committedPreferenceModel.getConfigurationURLs().contains(newConfigurationFile)) {
                     configurationURL.addItem(newConfigurationFile);
                   }
@@ -575,7 +572,7 @@ public static void main(String[] args) {
               }
               catch (MalformedURLException e1)
               {
-                  e1.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                  e1.printStackTrace();
               }
           }
       }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/98f2a549/src/main/java/org/apache/log4j/chainsaw/FileLoadAction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/FileLoadAction.java b/src/main/java/org/apache/log4j/chainsaw/FileLoadAction.java
index d5432e5..638bc50 100644
--- a/src/main/java/org/apache/log4j/chainsaw/FileLoadAction.java
+++ b/src/main/java/org/apache/log4j/chainsaw/FileLoadAction.java
@@ -27,11 +27,10 @@ import java.util.Map;
 import java.util.Vector;
 
 import javax.swing.AbstractAction;
-import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
-import javax.swing.filechooser.FileFilter;
 
 import org.apache.log4j.Logger;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.prefs.MRUFileList;
 import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.spi.Decoder;
@@ -57,8 +56,6 @@ class FileLoadAction extends AbstractAction {
 
     private LogUI parent;
 
-    private JFileChooser chooser = null;
-
     private boolean remoteURL = false;
 
     public FileLoadAction(LogUI parent, Decoder decoder, String title,
@@ -81,35 +78,13 @@ class FileLoadAction extends AbstractAction {
         String name = "";
         URL url = null;
 
-        if (!remoteURL) {
-            if (chooser == null) {
-                chooser = new JFileChooser();
-
-                chooser.setDialogTitle("Load Events from XML file...");
-
-                chooser.setAcceptAllFileFilterUsed(true);
-
-                chooser.setFileFilter(new FileFilter() {
-                    public boolean accept(File f) {
-                        return (f.getName().toLowerCase().endsWith(".xml") || f.getName().toLowerCase().endsWith(".zip")
-                                || f.isDirectory());
-                    }
-
-                    public String getDescription() {
-                        return "XML files (*.xml), ZIP files (*.zip)";
-                    }
-                });
-            }
-
-            int i = chooser.showOpenDialog(parent);
-            if (i != JFileChooser.APPROVE_OPTION) {
-                return;
-            }
-            File selectedFile = chooser.getSelectedFile();
-
+      if (!remoteURL) {
             try {
+              File selectedFile = SwingHelper.promptForFile(parent, null, "Load Events from XML file or zipped XML file...");
+              if (selectedFile != null) {
                 url = selectedFile.toURI().toURL();
                 name = selectedFile.getName();
+              }
             } catch (Exception ex) {
                 // TODO: handle exception
             }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/98f2a549/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 fbd4c22..8f276f1 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
@@ -29,6 +29,7 @@ import java.awt.event.FocusListener;
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.List;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -37,7 +38,6 @@ import javax.swing.DefaultComboBoxModel;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
-import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -45,13 +45,13 @@ import javax.swing.JRadioButton;
 import javax.swing.JTextField;
 import javax.swing.JTextPane;
 import javax.swing.SwingUtilities;
-import javax.swing.filechooser.FileFilter;
 import javax.swing.text.SimpleAttributeSet;
 import javax.swing.text.StyleConstants;
 import javax.swing.text.StyledDocument;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.net.SocketReceiver;
 import org.apache.log4j.net.UDPReceiver;
@@ -210,20 +210,24 @@ class ReceiverConfigurationPanel extends JPanel {
         dontwarnIfNoReceiver = new JCheckBox("Always start Chainsaw with this configuration");
         panel.add(dontwarnIfNoReceiver, c);
 
+        okButton = new JButton(" OK ");
+        cancelButton = new JButton(" Cancel ");
+
+        List okCancelButtons = SwingHelper.orderOKCancelButtons(okButton, cancelButton);
+
         c = new GridBagConstraints();
         c.fill = GridBagConstraints.HORIZONTAL;
         c.gridx = 1;
         c.gridy = 0;
         c.insets = new Insets(0, 0, 0, 10);
-        okButton = new JButton(" OK ");
-        panel.add(okButton, c);
+        panel.add((JButton)okCancelButtons.get(0), c);
 
         c = new GridBagConstraints();
         c.fill = GridBagConstraints.HORIZONTAL;
         c.gridx = 2;
         c.gridy = 0;
-        cancelButton = new JButton(" Cancel ");
-        panel.add(cancelButton, c);
+        panel.add((JButton)okCancelButtons.get(1), c);
+
         cancelButton.addActionListener(new ActionListener()
         {
             public void actionPerformed(ActionEvent e)
@@ -308,7 +312,7 @@ class ReceiverConfigurationPanel extends JPanel {
 
     private JPanel buildLogFileReceiverPanel() {
         JPanel panel = new JPanel(new GridBagLayout());
-        browseLogFileButton = new JButton(new AbstractAction(" Find a log file ") {
+        browseLogFileButton = new JButton(new AbstractAction(" Open File... ") {
             public void actionPerformed(ActionEvent e) {
                 try {
 
@@ -465,7 +469,7 @@ class ReceiverConfigurationPanel extends JPanel {
                 }
             });
 
-        browseForAnExistingConfigurationButton = new JButton(new AbstractAction(" Find an existing configuration ") {
+        browseForAnExistingConfigurationButton = new JButton(new AbstractAction(" Open File... ") {
                     public void actionPerformed(ActionEvent e) {
                         try {
 
@@ -549,39 +553,15 @@ class ReceiverConfigurationPanel extends JPanel {
      * or null if they cancelled.
      */
     private URL browseConfig() throws MalformedURLException {
-
-        JFileChooser chooser = new JFileChooser();
-        chooser.setDialogTitle("Use an existing configuration file...");
-        chooser.setDialogType(JFileChooser.OPEN_DIALOG);
-        chooser.setFileFilter(new FileFilter() {
-                public boolean accept(File f) {
-
-                    return f.isDirectory() ||
-                    f.getName().endsWith(".properties") ||
-                    f.getName().endsWith(".xml");
-                }
-
-                public String getDescription() {
-
-                    return "Log4j Configuration file";
-                }
-            });
-
-        chooser.showOpenDialog(this);
-
-        File selectedFile = chooser.getSelectedFile();
-
+        File selectedFile = SwingHelper.promptForFile(this, null, "Choose a Chainsaw configuration file");
         if (selectedFile == null) {
-
             return null;
         }
 
         if (!selectedFile.exists() || !selectedFile.canRead()) {
-
             return null;
         }
-
-        return chooser.getSelectedFile().toURI().toURL();
+        return selectedFile.toURI().toURL();
     }
 
     /**
@@ -590,13 +570,7 @@ class ReceiverConfigurationPanel extends JPanel {
      */
     private URL browseLogFile() throws MalformedURLException {
 
-        JFileChooser chooser = new JFileChooser();
-        chooser.setDialogTitle("Browse for a log file...");
-        chooser.setDialogType(JFileChooser.OPEN_DIALOG);
-        chooser.showOpenDialog(this);
-
-        File selectedFile = chooser.getSelectedFile();
-
+        File selectedFile = SwingHelper.promptForFile(this, null, "Select a log file");
         if (selectedFile == null) {
             return null;
         }
@@ -605,7 +579,7 @@ class ReceiverConfigurationPanel extends JPanel {
             return null;
         }
 
-        return chooser.getSelectedFile().toURI().toURL();
+        return selectedFile.toURI().toURL();
     }
 
     public static void main(String[] args) {

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/98f2a549/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 f10b441..018e45c 100644
--- a/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java
+++ b/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java
@@ -18,11 +18,17 @@
 package org.apache.log4j.chainsaw.helper;
 
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Dimension;
+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;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -30,6 +36,7 @@ import javax.swing.InputMap;
 import javax.swing.JButton;
 import javax.swing.JComponent;
 import javax.swing.JDialog;
+import javax.swing.JFileChooser;
 import javax.swing.KeyStroke;
 
 /**
@@ -82,4 +89,54 @@ public final class SwingHelper {
       EventQueue.invokeLater(runnable);
     }
   }
+
+  public static boolean isMacOSX() {
+    return System.getProperty("os.name").toLowerCase().startsWith("mac os x");
+  }
+
+  public static List orderOKCancelButtons(JButton okButton, JButton cancelButton) {
+    List result = new ArrayList();
+    if (isMacOSX()) {
+      result.add(cancelButton);
+      result.add(okButton);
+    } else {
+      result.add(okButton);
+      result.add(cancelButton);
+    }
+    return result;
+  }
+
+  public static File promptForFile(Container parent, String defaultPath, String title) {
+        if (SwingHelper.isMacOSX()) {
+            //use filedialog on mac
+            FileDialog fileDialog = new FileDialog((Frame)null, title);
+            if (defaultPath != null) {
+              fileDialog.setDirectory(defaultPath);
+            }
+            fileDialog.setVisible(true);
+            String fileString = fileDialog.getFile();
+            if (fileString == null) {
+              return null;
+            }
+            return new File(fileString);
+          } else {
+
+                JFileChooser chooser;
+                if (defaultPath != null) {
+                  chooser = new JFileChooser(defaultPath);
+                } else {
+                  chooser = new JFileChooser();
+                }
+
+                chooser.setDialogTitle(title);
+
+                chooser.setAcceptAllFileFilterUsed(true);
+
+                int i = chooser.showOpenDialog(parent);
+                if (i != JFileChooser.APPROVE_OPTION) {
+                    return null;
+                }
+            return chooser.getSelectedFile();
+        }
+    }
 }