* use revealInFinder when possible

This commit is contained in:
Reinhard Pointner 2014-08-10 06:31:47 +00:00
parent af120ad517
commit 8b01e2e05d
7 changed files with 42 additions and 13 deletions

View File

@ -72,6 +72,10 @@ public final class Settings {
return Boolean.parseBoolean(System.getProperty("useCreationDate")); return Boolean.parseBoolean(System.getProperty("useCreationDate"));
} }
public static boolean isMacApp() {
return "mas".equals(getApplicationDeployment()) || "app".equals(getApplicationDeployment());
}
public static boolean isAppStore() { public static boolean isAppStore() {
return "mas".equals(getApplicationDeployment()) || "usc".equals(getApplicationDeployment()); return "mas".equals(getApplicationDeployment()) || "usc".equals(getApplicationDeployment());
} }

View File

@ -5,6 +5,7 @@ import static java.util.Collections.*;
import static net.filebot.Settings.*; import static net.filebot.Settings.*;
import static net.filebot.util.ui.SwingUI.*; import static net.filebot.util.ui.SwingUI.*;
import java.awt.Desktop;
import java.awt.Dialog; import java.awt.Dialog;
import java.awt.FileDialog; import java.awt.FileDialog;
import java.awt.Frame; import java.awt.Frame;
@ -12,13 +13,28 @@ import java.io.File;
import java.util.List; import java.util.List;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask; import java.util.concurrent.FutureTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import net.filebot.mac.MacAppUtilities;
import net.filebot.util.FileUtilities.ExtensionFileFilter; import net.filebot.util.FileUtilities.ExtensionFileFilter;
public class UserFiles { public class UserFiles {
public static void revealFile(File file) {
try {
if (isMacApp()) {
MacAppUtilities.revealInFinder(file);
} else {
Desktop.getDesktop().open(file.getParentFile());
}
} catch (Exception e) {
Logger.getLogger(UserFiles.class.getName()).log(Level.WARNING, e.toString());
}
}
private static FileChooser defaultFileChooser = getPreferredFileChooser(); private static FileChooser defaultFileChooser = getPreferredFileChooser();
public static void setDefaultFileChooser(FileChooser fileChooser) { public static void setDefaultFileChooser(FileChooser fileChooser) {

View File

@ -11,7 +11,6 @@ import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dialog.ModalExclusionType; import java.awt.Dialog.ModalExclusionType;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
@ -158,14 +157,14 @@ public class DropToUnlock extends JList<File> {
dialog.setAlwaysOnTop(true); dialog.setAlwaysOnTop(true);
// open required folders for easy drag and drop (a few milliseconds after the dialog has become visible) // open required folders for easy drag and drop (a few milliseconds after the dialog has become visible)
invokeLater(750, () -> { invokeLater(500, () -> {
model.stream().map(f -> f.getParentFile()).sorted().distinct().forEach(f -> { try {
try { for (File it : model) {
Desktop.getDesktop().open(f); revealFile(it);
} catch (Exception e) {
Logger.getLogger(DropToUnlock.class.getName()).log(Level.WARNING, e.toString());
} }
}); } catch (Exception e) {
Logger.getLogger(DropToUnlock.class.getName()).log(Level.WARNING, e.toString());
}
}); });
// show and wait for user input // show and wait for user input

View File

@ -54,6 +54,16 @@ public class MacAppUtilities {
} }
} }
public static void revealInFinder(File file) {
try {
Class<?> fileManager = Class.forName("com.apple.eio.FileManager");
Method revealInFinder = fileManager.getMethod("revealInFinder", new Class<?>[] { File.class });
revealInFinder.invoke(null, file);
} catch (Throwable t) {
Logger.getLogger(MacAppUtilities.class.getName()).log(Level.WARNING, "revealInFinder not supported: " + t);
}
}
public static void setUIDefaults() { public static void setUIDefaults() {
UIManager.put("TitledBorder.border", UIManager.getBorder("InsetBorder.aquaVariant")); UIManager.put("TitledBorder.border", UIManager.getBorder("InsetBorder.aquaVariant"));
} }

View File

@ -229,7 +229,7 @@ public class MainFrame extends JFrame {
selectEnabled = true; selectEnabled = true;
// bring window to front when on dnd // bring window to front when on dnd
if (Settings.isMacSandbox()) { if (Settings.isMacApp()) {
MacAppUtilities.requestForeground(); MacAppUtilities.requestForeground();
} else { } else {
SwingUtilities.getWindowAncestor(((DropTarget) dtde.getSource()).getComponent()).toFront(); SwingUtilities.getWindowAncestor(((DropTarget) dtde.getSource()).getComponent()).toFront();

View File

@ -3,7 +3,6 @@ package net.filebot.ui.analyze;
import static java.util.Collections.*; import static java.util.Collections.*;
import static net.filebot.ui.NotificationLogging.*; import static net.filebot.ui.NotificationLogging.*;
import java.awt.Desktop;
import java.awt.Font; import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
@ -29,6 +28,7 @@ import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreeSelectionModel;
import net.filebot.ResourceManager; import net.filebot.ResourceManager;
import net.filebot.UserFiles;
import net.filebot.util.ExceptionUtilities; import net.filebot.util.ExceptionUtilities;
import net.filebot.util.FilterIterator; import net.filebot.util.FilterIterator;
import net.filebot.util.TreeIterator; import net.filebot.util.TreeIterator;
@ -120,7 +120,7 @@ public class FileTree extends JTree {
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
try { try {
for (Object file : (Collection<?>) getValue("files")) { for (Object file : (Collection<?>) getValue("files")) {
Desktop.getDesktop().open((File) file); UserFiles.revealFile((File) file);
} }
} catch (Exception e) { } catch (Exception e) {
UILogger.log(Level.WARNING, ExceptionUtilities.getRootCauseMessage(e), e); UILogger.log(Level.WARNING, ExceptionUtilities.getRootCauseMessage(e), e);

View File

@ -11,7 +11,6 @@ import static net.filebot.util.ui.SwingUI.*;
import java.awt.Component; import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Insets; import java.awt.Insets;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -52,6 +51,7 @@ import net.filebot.Language;
import net.filebot.ResourceManager; import net.filebot.ResourceManager;
import net.filebot.Settings; import net.filebot.Settings;
import net.filebot.StandardRenameAction; import net.filebot.StandardRenameAction;
import net.filebot.UserFiles;
import net.filebot.WebServices; import net.filebot.WebServices;
import net.filebot.format.MediaBindingBean; import net.filebot.format.MediaBindingBean;
import net.filebot.media.MediaDetection; import net.filebot.media.MediaDetection;
@ -248,7 +248,7 @@ public class RenamePanel extends JComponent {
JList list = (JList) evt.getSource(); JList list = (JList) evt.getSource();
if (list.getSelectedIndex() >= 0) { if (list.getSelectedIndex() >= 0) {
File item = (File) list.getSelectedValue(); File item = (File) list.getSelectedValue();
Desktop.getDesktop().open(item.getParentFile()); UserFiles.revealFile(item);
} }
} catch (Exception e) { } catch (Exception e) {
Logger.getLogger(RenamePanel.class.getName()).log(Level.WARNING, e.getMessage()); Logger.getLogger(RenamePanel.class.getName()).log(Level.WARNING, e.getMessage());