1
0
mirror of https://github.com/mitb-archive/filebot synced 2025-03-09 13:59:49 -04:00

Support license activation via clipboard

This commit is contained in:
Reinhard Pointner 2018-12-01 04:13:01 +07:00
parent 9d38998b84
commit 32abb2263c

View File

@ -1,5 +1,6 @@
package net.filebot.ui.rename; package net.filebot.ui.rename;
import static java.nio.charset.StandardCharsets.*;
import static java.util.Arrays.*; import static java.util.Arrays.*;
import static java.util.Collections.*; import static java.util.Collections.*;
import static java.util.stream.Collectors.*; import static java.util.stream.Collectors.*;
@ -11,7 +12,9 @@ import static net.filebot.util.ExceptionUtilities.*;
import static net.filebot.util.FileUtilities.*; import static net.filebot.util.FileUtilities.*;
import static net.filebot.util.ui.SwingUI.*; import static net.filebot.util.ui.SwingUI.*;
import java.awt.Toolkit;
import java.awt.Window; import java.awt.Window;
import java.awt.datatransfer.DataFlavor;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.io.File; import java.io.File;
import java.util.AbstractList; import java.util.AbstractList;
@ -27,6 +30,8 @@ import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
@ -243,6 +248,31 @@ class RenameAction extends AbstractAction {
private ActionPopup createLicensePopup(String message, ActionEvent evt) { private ActionPopup createLicensePopup(String message, ActionEvent evt) {
ActionPopup actionPopup = new ActionPopup("License Required", ResourceManager.getIcon("file.lock")); ActionPopup actionPopup = new ActionPopup("License Required", ResourceManager.getIcon("file.lock"));
// check copy & paste
String clip = null;
try {
clip = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
} catch (Exception e) {
debug.warning(e::toString);
}
if (clip != null) {
Matcher matcher = Pattern.compile("-----BEGIN PGP SIGNED MESSAGE-----(.*?)-----END PGP SIGNATURE-----", Pattern.MULTILINE | Pattern.DOTALL).matcher(clip);
if (matcher.find()) {
actionPopup.add(newAction("Paste License", ResourceManager.getIcon("license.import"), e -> {
withWaitCursor(evt.getSource(), () -> {
File psm = File.createTempFile("clip", ".psm");
writeFile(matcher.group().getBytes(UTF_8), psm);
configureLicense(psm);
SwingEventBus.getInstance().post(LICENSE);
psm.delete();
});
}));
}
}
actionPopup.add(newAction("Select License", ResourceManager.getIcon("license.import"), e -> { actionPopup.add(newAction("Select License", ResourceManager.getIcon("license.import"), e -> {
withWaitCursor(evt.getSource(), () -> { withWaitCursor(evt.getSource(), () -> {
List<File> files = UserFiles.FileChooser.AWT.showLoadDialogSelectFiles(false, false, null, MediaTypes.LICENSE_FILES, "Select License", evt); List<File> files = UserFiles.FileChooser.AWT.showLoadDialogSelectFiles(false, false, null, MediaTypes.LICENSE_FILES, "Select License", evt);