* 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"));
}
public static boolean isMacApp() {
return "mas".equals(getApplicationDeployment()) || "app".equals(getApplicationDeployment());
}
public static boolean isAppStore() {
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.util.ui.SwingUI.*;
import java.awt.Desktop;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
@ -12,13 +13,28 @@ import java.io.File;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import net.filebot.mac.MacAppUtilities;
import net.filebot.util.FileUtilities.ExtensionFileFilter;
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();
public static void setDefaultFileChooser(FileChooser fileChooser) {

View File

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

View File

@ -229,7 +229,7 @@ public class MainFrame extends JFrame {
selectEnabled = true;
// bring window to front when on dnd
if (Settings.isMacSandbox()) {
if (Settings.isMacApp()) {
MacAppUtilities.requestForeground();
} else {
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 net.filebot.ui.NotificationLogging.*;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
@ -29,6 +28,7 @@ import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import net.filebot.ResourceManager;
import net.filebot.UserFiles;
import net.filebot.util.ExceptionUtilities;
import net.filebot.util.FilterIterator;
import net.filebot.util.TreeIterator;
@ -120,7 +120,7 @@ public class FileTree extends JTree {
public void actionPerformed(ActionEvent event) {
try {
for (Object file : (Collection<?>) getValue("files")) {
Desktop.getDesktop().open((File) file);
UserFiles.revealFile((File) file);
}
} catch (Exception 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.Cursor;
import java.awt.Desktop;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -52,6 +51,7 @@ import net.filebot.Language;
import net.filebot.ResourceManager;
import net.filebot.Settings;
import net.filebot.StandardRenameAction;
import net.filebot.UserFiles;
import net.filebot.WebServices;
import net.filebot.format.MediaBindingBean;
import net.filebot.media.MediaDetection;
@ -248,7 +248,7 @@ public class RenamePanel extends JComponent {
JList list = (JList) evt.getSource();
if (list.getSelectedIndex() >= 0) {
File item = (File) list.getSelectedValue();
Desktop.getDesktop().open(item.getParentFile());
UserFiles.revealFile(item);
}
} catch (Exception e) {
Logger.getLogger(RenamePanel.class.getName()).log(Level.WARNING, e.getMessage());