* fixed potential EDT deadlock in Tool
* display messages via ui logger * maybe fix layout bug (component gets very small) for LoadingOverlayPane
This commit is contained in:
parent
931efbdd06
commit
1dfa8abcfd
|
@ -9,6 +9,7 @@ import javax.swing.UIManager;
|
||||||
import net.sourceforge.filebot.ArgumentBean;
|
import net.sourceforge.filebot.ArgumentBean;
|
||||||
import net.sourceforge.filebot.FileBotUtil;
|
import net.sourceforge.filebot.FileBotUtil;
|
||||||
import net.sourceforge.filebot.ui.FileBotWindow;
|
import net.sourceforge.filebot.ui.FileBotWindow;
|
||||||
|
import net.sourceforge.filebot.ui.NotificationLoggingHandler;
|
||||||
|
|
||||||
import org.kohsuke.args4j.CmdLineException;
|
import org.kohsuke.args4j.CmdLineException;
|
||||||
import org.kohsuke.args4j.CmdLineParser;
|
import org.kohsuke.args4j.CmdLineParser;
|
||||||
|
@ -21,21 +22,20 @@ public class Main {
|
||||||
*/
|
*/
|
||||||
public static void main(String... args) {
|
public static void main(String... args) {
|
||||||
|
|
||||||
final ArgumentBean argumentBean = parseArguments(args);
|
setupLogging();
|
||||||
|
|
||||||
if (argumentBean.isClear()) {
|
final ArgumentBean argumentBean = handleArguments(args);
|
||||||
try {
|
|
||||||
Preferences.userNodeForPackage(FileBotUtil.class).removeNode();
|
|
||||||
} catch (BackingStoreException e) {
|
|
||||||
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
|
// UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
|
||||||
|
// UIManager.setLookAndFeel("a03.swing.plaf.A03LookAndFeel");
|
||||||
|
// UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
|
||||||
|
// UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel");
|
||||||
|
// UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceSaharaLookAndFeel");
|
||||||
|
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e);
|
Logger.getLogger("global").log(Level.SEVERE, e.toString(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
@ -54,7 +54,14 @@ public class Main {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static ArgumentBean parseArguments(String... args) {
|
private static void setupLogging() {
|
||||||
|
Logger uiLogger = Logger.getLogger("ui");
|
||||||
|
uiLogger.addHandler(new NotificationLoggingHandler());
|
||||||
|
uiLogger.setUseParentHandlers(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static ArgumentBean handleArguments(String... args) {
|
||||||
|
|
||||||
ArgumentBean argumentBean = new ArgumentBean();
|
ArgumentBean argumentBean = new ArgumentBean();
|
||||||
CmdLineParser argumentParser = new CmdLineParser(argumentBean);
|
CmdLineParser argumentParser = new CmdLineParser(argumentBean);
|
||||||
|
@ -62,7 +69,7 @@ public class Main {
|
||||||
try {
|
try {
|
||||||
argumentParser.parseArgument(args);
|
argumentParser.parseArgument(args);
|
||||||
} catch (CmdLineException e) {
|
} catch (CmdLineException e) {
|
||||||
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.WARNING, e.getMessage());
|
Logger.getLogger("global").log(Level.WARNING, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argumentBean.isHelp()) {
|
if (argumentBean.isHelp()) {
|
||||||
|
@ -73,6 +80,15 @@ public class Main {
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argumentBean.isClear()) {
|
||||||
|
// clear preferences
|
||||||
|
try {
|
||||||
|
Preferences.userNodeForPackage(FileBotUtil.class).removeNode();
|
||||||
|
} catch (BackingStoreException e) {
|
||||||
|
Logger.getLogger("global").log(Level.SEVERE, e.toString(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return argumentBean;
|
return argumentBean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -134,6 +134,10 @@ public abstract class AbstractSearchPanel<S, E, T extends JComponent> extends Fi
|
||||||
private final AbstractAction searchAction = new AbstractAction("Find", ResourceManager.getIcon("action.find")) {
|
private final AbstractAction searchAction = new AbstractAction("Find", ResourceManager.getIcon("action.find")) {
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getActionCommand() == null) {
|
||||||
|
// command triggered by auto-completion
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SearchTask searchTask = createSearchTask();
|
SearchTask searchTask = createSearchTask();
|
||||||
searchTask.addPropertyChangeListener(new SearchTaskListener());
|
searchTask.addPropertyChangeListener(new SearchTaskListener());
|
||||||
|
@ -166,7 +170,7 @@ public abstract class AbstractSearchPanel<S, E, T extends JComponent> extends Fi
|
||||||
|
|
||||||
switch (get().size()) {
|
switch (get().size()) {
|
||||||
case 0:
|
case 0:
|
||||||
MessageManager.showWarning(String.format("\"%s\" has not been found.", getSearchText()));
|
Logger.getLogger("ui").warning(String.format("\"%s\" has not been found.", getSearchText()));
|
||||||
return null;
|
return null;
|
||||||
case 1:
|
case 1:
|
||||||
return get().iterator().next();
|
return get().iterator().next();
|
||||||
|
@ -266,10 +270,8 @@ public abstract class AbstractSearchPanel<S, E, T extends JComponent> extends Fi
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
tab.close();
|
tab.close();
|
||||||
|
|
||||||
Throwable cause = ExceptionUtil.getRootCause(e);
|
Logger.getLogger("ui").warning(ExceptionUtil.getRootCause(e).getMessage());
|
||||||
|
Logger.getLogger("global").log(Level.SEVERE, "Search failed", e);
|
||||||
MessageManager.showWarning(cause.getMessage());
|
|
||||||
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, cause.getMessage(), cause);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -392,14 +394,14 @@ public abstract class AbstractSearchPanel<S, E, T extends JComponent> extends Fi
|
||||||
|
|
||||||
// close tab if no elements were fetched
|
// close tab if no elements were fetched
|
||||||
if (task.getCount() <= 0) {
|
if (task.getCount() <= 0) {
|
||||||
MessageManager.showWarning(info);
|
Logger.getLogger("ui").warning(info);
|
||||||
tab.close();
|
tab.close();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
tab.close();
|
tab.close();
|
||||||
|
|
||||||
MessageManager.showWarning(ExceptionUtil.getRootCause(e).getMessage());
|
Logger.getLogger("ui").warning(ExceptionUtil.getRootCause(e).getMessage());
|
||||||
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e);
|
Logger.getLogger("global").log(Level.SEVERE, "Fetch failed", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
tab.setLoading(false);
|
tab.setLoading(false);
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
|
|
||||||
package net.sourceforge.filebot.ui;
|
|
||||||
|
|
||||||
|
|
||||||
import javax.swing.Icon;
|
|
||||||
import javax.swing.SwingConstants;
|
|
||||||
|
|
||||||
import net.sourceforge.filebot.FileBotUtil;
|
|
||||||
import net.sourceforge.filebot.ResourceManager;
|
|
||||||
import net.sourceforge.tuned.ui.notification.MessageNotification;
|
|
||||||
import net.sourceforge.tuned.ui.notification.NotificationManager;
|
|
||||||
import net.sourceforge.tuned.ui.notification.QueueNotificationLayout;
|
|
||||||
|
|
||||||
|
|
||||||
public class MessageManager {
|
|
||||||
|
|
||||||
private static final int TIMEOUT = 2500;
|
|
||||||
private static final NotificationManager manager = new NotificationManager(new QueueNotificationLayout(SwingConstants.NORTH, SwingConstants.SOUTH));
|
|
||||||
|
|
||||||
|
|
||||||
public static void showInfo(String message) {
|
|
||||||
show(message, ResourceManager.getIcon("message.info"), TIMEOUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void showWarning(String message) {
|
|
||||||
show(message, ResourceManager.getIcon("message.warning"), TIMEOUT * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static void show(String message, Icon icon, int timeout) {
|
|
||||||
manager.show(new MessageNotification(FileBotUtil.getApplicationName(), message, icon, timeout));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
|
||||||
|
package net.sourceforge.filebot.ui;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.logging.Handler;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.LogRecord;
|
||||||
|
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
import net.sourceforge.filebot.FileBotUtil;
|
||||||
|
import net.sourceforge.filebot.ResourceManager;
|
||||||
|
import net.sourceforge.tuned.ui.notification.MessageNotification;
|
||||||
|
import net.sourceforge.tuned.ui.notification.NotificationManager;
|
||||||
|
import net.sourceforge.tuned.ui.notification.QueueNotificationLayout;
|
||||||
|
|
||||||
|
|
||||||
|
public class NotificationLoggingHandler extends Handler {
|
||||||
|
|
||||||
|
public final NotificationManager notificationManager;
|
||||||
|
public final int timeout = 2500;
|
||||||
|
|
||||||
|
|
||||||
|
public NotificationLoggingHandler() {
|
||||||
|
this(new NotificationManager(new QueueNotificationLayout(SwingConstants.NORTH, SwingConstants.SOUTH)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public NotificationLoggingHandler(NotificationManager notificationManager) {
|
||||||
|
this.notificationManager = notificationManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void publish(final LogRecord record) {
|
||||||
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Level level = record.getLevel();
|
||||||
|
|
||||||
|
if (level == Level.INFO) {
|
||||||
|
show(record.getMessage(), ResourceManager.getIcon("message.info"), timeout * 1);
|
||||||
|
} else if (level == Level.WARNING) {
|
||||||
|
show(record.getMessage(), ResourceManager.getIcon("message.warning"), timeout * 2);
|
||||||
|
} else if (level == Level.SEVERE) {
|
||||||
|
show(record.getMessage(), ResourceManager.getIcon("message.error"), timeout * 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void show(String message, Icon icon, int timeout) {
|
||||||
|
notificationManager.show(new MessageNotification(FileBotUtil.getApplicationName(), message, icon, timeout));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws SecurityException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flush() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -31,8 +31,8 @@ public class AnalyzePanel extends FileBotPanel {
|
||||||
|
|
||||||
setLayout(new MigLayout("insets 0, gapx 50, fill"));
|
setLayout(new MigLayout("insets 0, gapx 50, fill"));
|
||||||
|
|
||||||
add(fileTreePanel, "grow, sizegroup column");
|
add(fileTreePanel, "grow, sizegroupx column");
|
||||||
add(toolsPanel, "grow, sizegroup column");
|
add(toolsPanel, "grow, sizegroupx column");
|
||||||
|
|
||||||
addTool(new TypeTool());
|
addTool(new TypeTool());
|
||||||
addTool(new SplitTool());
|
addTool(new SplitTool());
|
||||||
|
|
|
@ -32,7 +32,6 @@ import javax.swing.tree.TreePath;
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
import javax.swing.tree.TreeSelectionModel;
|
||||||
|
|
||||||
import net.sourceforge.filebot.ResourceManager;
|
import net.sourceforge.filebot.ResourceManager;
|
||||||
import net.sourceforge.filebot.ui.MessageManager;
|
|
||||||
import net.sourceforge.tuned.FilterIterator;
|
import net.sourceforge.tuned.FilterIterator;
|
||||||
import net.sourceforge.tuned.TreeIterator;
|
import net.sourceforge.tuned.TreeIterator;
|
||||||
|
|
||||||
|
@ -160,8 +159,8 @@ public class FileTree extends JTree {
|
||||||
Desktop.getDesktop().open(file);
|
Desktop.getDesktop().open(file);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
MessageManager.showWarning(e.getMessage());
|
Logger.getLogger("ui").warning(e.getMessage());
|
||||||
Logger.getLogger("global").log(Level.SEVERE, e.getMessage(), e);
|
Logger.getLogger("global").log(Level.SEVERE, "Failed to open file", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
package net.sourceforge.filebot.ui.panel.analyze;
|
package net.sourceforge.filebot.ui.panel.analyze;
|
||||||
|
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
@ -34,18 +36,11 @@ abstract class Tool<M> extends JComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTask = new UpdateModelTask(sourceModel);
|
updateTask = new UpdateModelTask(sourceModel);
|
||||||
|
updateTask.addPropertyChangeListener(loadingListener);
|
||||||
updateSemaphore.acquireUninterruptibly();
|
|
||||||
setLoading(true);
|
|
||||||
updateTask.execute();
|
updateTask.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setLoading(boolean loading) {
|
|
||||||
firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, !loading, loading);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected abstract M createModelInBackground(FolderNode sourceModel, Cancellable cancellable);
|
protected abstract M createModelInBackground(FolderNode sourceModel, Cancellable cancellable);
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,7 +59,22 @@ abstract class Tool<M> extends JComponent {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected M doInBackground() throws Exception {
|
protected M doInBackground() throws Exception {
|
||||||
return createModelInBackground(sourceModel, this);
|
// acquire semaphore
|
||||||
|
updateSemaphore.acquireUninterruptibly();
|
||||||
|
|
||||||
|
try {
|
||||||
|
M model = null;
|
||||||
|
|
||||||
|
if (!isCancelled()) {
|
||||||
|
firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, false, true);
|
||||||
|
model = createModelInBackground(sourceModel, this);
|
||||||
|
firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return model;
|
||||||
|
} finally {
|
||||||
|
updateSemaphore.release();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,9 +89,6 @@ abstract class Tool<M> extends JComponent {
|
||||||
Logger.getLogger("global").log(Level.WARNING, e.toString());
|
Logger.getLogger("global").log(Level.WARNING, e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setLoading(false);
|
|
||||||
updateSemaphore.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,4 +118,16 @@ abstract class Tool<M> extends JComponent {
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final PropertyChangeListener loadingListener = new PropertyChangeListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
// propagate loading events
|
||||||
|
if (evt.getPropertyName().equals(LoadingOverlayPane.LOADING_PROPERTY)) {
|
||||||
|
firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,9 +31,9 @@ public class TypeTool extends Tool<TreeModel> {
|
||||||
|
|
||||||
setLayout(new MigLayout("insets 0, fill"));
|
setLayout(new MigLayout("insets 0, fill"));
|
||||||
|
|
||||||
JScrollPane sp = new JScrollPane(tree);
|
JScrollPane treeScrollPane = new JScrollPane(tree);
|
||||||
sp.setBorder(BorderFactory.createEmptyBorder());
|
treeScrollPane.setBorder(BorderFactory.createEmptyBorder());
|
||||||
add(new LoadingOverlayPane(sp, this), "grow");
|
add(new LoadingOverlayPane(treeScrollPane, this), "grow");
|
||||||
|
|
||||||
tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler()));
|
tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler()));
|
||||||
tree.setDragEnabled(true);
|
tree.setDragEnabled(true);
|
||||||
|
|
|
@ -37,7 +37,6 @@ import net.sourceforge.filebot.ui.FileBotList;
|
||||||
import net.sourceforge.filebot.ui.FileBotPanel;
|
import net.sourceforge.filebot.ui.FileBotPanel;
|
||||||
import net.sourceforge.filebot.ui.FileBotTab;
|
import net.sourceforge.filebot.ui.FileBotTab;
|
||||||
import net.sourceforge.filebot.ui.HistoryPanel;
|
import net.sourceforge.filebot.ui.HistoryPanel;
|
||||||
import net.sourceforge.filebot.ui.MessageManager;
|
|
||||||
import net.sourceforge.filebot.ui.SelectDialog;
|
import net.sourceforge.filebot.ui.SelectDialog;
|
||||||
import net.sourceforge.filebot.ui.transfer.FileExportHandler;
|
import net.sourceforge.filebot.ui.transfer.FileExportHandler;
|
||||||
import net.sourceforge.filebot.ui.transfer.SaveAction;
|
import net.sourceforge.filebot.ui.transfer.SaveAction;
|
||||||
|
@ -293,7 +292,7 @@ public class EpisodeListPanel extends FileBotPanel {
|
||||||
|
|
||||||
Throwable cause = ExceptionUtil.getRootCause(e);
|
Throwable cause = ExceptionUtil.getRootCause(e);
|
||||||
|
|
||||||
MessageManager.showWarning(cause.getMessage());
|
Logger.getLogger("ui").warning(cause.getMessage());
|
||||||
Logger.getLogger("global").log(Level.WARNING, cause.toString());
|
Logger.getLogger("global").log(Level.WARNING, cause.toString());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -317,7 +316,7 @@ public class EpisodeListPanel extends FileBotPanel {
|
||||||
|
|
||||||
selectedResult = select.getSelectedValue();
|
selectedResult = select.getSelectedValue();
|
||||||
} else {
|
} else {
|
||||||
MessageManager.showWarning("\"" + task.query + "\" has not been found.");
|
Logger.getLogger("ui").warning(String.format("\"%s\" has not been found.", task.query));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedResult == null) {
|
if (selectedResult == null) {
|
||||||
|
@ -383,7 +382,7 @@ public class EpisodeListPanel extends FileBotPanel {
|
||||||
|
|
||||||
Throwable cause = ExceptionUtil.getRootCause(e);
|
Throwable cause = ExceptionUtil.getRootCause(e);
|
||||||
|
|
||||||
MessageManager.showWarning(cause.getMessage());
|
Logger.getLogger("ui").warning(cause.getMessage());
|
||||||
Logger.getLogger("global").log(Level.SEVERE, cause.getMessage(), cause);
|
Logger.getLogger("global").log(Level.SEVERE, cause.getMessage(), cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.awt.BorderLayout;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.logging.Logger;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -24,7 +25,6 @@ import net.sourceforge.filebot.ui.FileBotList;
|
||||||
import net.sourceforge.filebot.ui.FileBotListExportHandler;
|
import net.sourceforge.filebot.ui.FileBotListExportHandler;
|
||||||
import net.sourceforge.filebot.ui.FileBotPanel;
|
import net.sourceforge.filebot.ui.FileBotPanel;
|
||||||
import net.sourceforge.filebot.ui.FileTransferableMessageHandler;
|
import net.sourceforge.filebot.ui.FileTransferableMessageHandler;
|
||||||
import net.sourceforge.filebot.ui.MessageManager;
|
|
||||||
import net.sourceforge.filebot.ui.transfer.LoadAction;
|
import net.sourceforge.filebot.ui.transfer.LoadAction;
|
||||||
import net.sourceforge.filebot.ui.transfer.SaveAction;
|
import net.sourceforge.filebot.ui.transfer.SaveAction;
|
||||||
import net.sourceforge.tuned.MessageHandler;
|
import net.sourceforge.tuned.MessageHandler;
|
||||||
|
@ -99,7 +99,7 @@ public class ListPanel extends FileBotPanel {
|
||||||
String pattern = textField.getText();
|
String pattern = textField.getText();
|
||||||
|
|
||||||
if (!pattern.contains(INDEX_VARIABLE)) {
|
if (!pattern.contains(INDEX_VARIABLE)) {
|
||||||
MessageManager.showWarning(String.format("Pattern does not contain index variable %s.", INDEX_VARIABLE));
|
Logger.getLogger("ui").warning(String.format("Pattern does not contain index variable %s.", INDEX_VARIABLE));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ package net.sourceforge.filebot.ui.panel.rename;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
|
|
||||||
import net.sourceforge.filebot.ResourceManager;
|
import net.sourceforge.filebot.ResourceManager;
|
||||||
import net.sourceforge.filebot.ui.MessageManager;
|
|
||||||
import net.sourceforge.filebot.ui.panel.rename.entry.FileEntry;
|
import net.sourceforge.filebot.ui.panel.rename.entry.FileEntry;
|
||||||
import net.sourceforge.filebot.ui.panel.rename.entry.ListEntry;
|
import net.sourceforge.filebot.ui.panel.rename.entry.ListEntry;
|
||||||
import net.sourceforge.tuned.FileUtil;
|
import net.sourceforge.tuned.FileUtil;
|
||||||
|
@ -56,9 +56,9 @@ public class RenameAction extends AbstractAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errors > 0)
|
if (errors > 0)
|
||||||
MessageManager.showInfo(String.format("%d of %d files renamed.", i - errors, i));
|
Logger.getLogger("ui").info(String.format("%d of %d files renamed.", i - errors, i));
|
||||||
else
|
else
|
||||||
MessageManager.showInfo(String.format("%d files renamed.", i));
|
Logger.getLogger("ui").info(String.format("%d files renamed.", i));
|
||||||
|
|
||||||
namesList.repaint();
|
namesList.repaint();
|
||||||
filesList.repaint();
|
filesList.repaint();
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class LoadingOverlayPane extends JComponent {
|
||||||
|
|
||||||
private boolean overlayEnabled = false;
|
private boolean overlayEnabled = false;
|
||||||
|
|
||||||
private int millisToOverlay = 500;
|
private int millisToOverlay = 400;
|
||||||
|
|
||||||
|
|
||||||
public LoadingOverlayPane(JComponent component, JComponent propertyChangeSource) {
|
public LoadingOverlayPane(JComponent component, JComponent propertyChangeSource) {
|
||||||
|
@ -27,16 +27,18 @@ public class LoadingOverlayPane extends JComponent {
|
||||||
|
|
||||||
|
|
||||||
public LoadingOverlayPane(JComponent component, JComponent animationComponent, JComponent propertyChangeSource) {
|
public LoadingOverlayPane(JComponent component, JComponent animationComponent, JComponent propertyChangeSource) {
|
||||||
setLayout(new MigLayout("fill, insets 0"));
|
setLayout(new MigLayout("insets 0, fill"));
|
||||||
this.animationComponent = animationComponent;
|
this.animationComponent = animationComponent;
|
||||||
|
|
||||||
add(animationComponent, "pos visual.x2-pref-18px 8px");
|
add(animationComponent, "pos n 8px 100%-18px n");
|
||||||
add(component, "grow");
|
add(component, "grow");
|
||||||
|
|
||||||
animationComponent.setVisible(false);
|
animationComponent.setVisible(false);
|
||||||
|
|
||||||
|
if (propertyChangeSource != null) {
|
||||||
propertyChangeSource.addPropertyChangeListener(LOADING_PROPERTY, loadingListener);
|
propertyChangeSource.addPropertyChangeListener(LOADING_PROPERTY, loadingListener);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class ProgressIndicator extends JComponent {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
});;
|
});
|
||||||
|
|
||||||
|
|
||||||
public ProgressIndicator() {
|
public ProgressIndicator() {
|
||||||
|
@ -82,7 +82,7 @@ public class ProgressIndicator extends JComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void paintShapes(Graphics2D g2d) {
|
private void paintShapes(Graphics2D g2d) {
|
||||||
circle.setFrame(frame);
|
circle.setFrame(frame);
|
||||||
|
|
||||||
g2d.setStroke(stroke);
|
g2d.setStroke(stroke);
|
||||||
|
|
Loading…
Reference in New Issue