📄 actions.java
字号:
/*
* Copyright (c) 2002-2008 TeamDev Ltd. All rights reserved.
*
* Use is subject to license terms.
*
* The complete licence text can be found at
* http://www.teamdev.com/winpack/license.jsf
*/
package teamdev.jxcapture.samples.demo;
import teamdev.jxdesktop.PlatformContext;
import teamdev.jxdesktop.macosx.accessibility.AXUIElement;
import javax.swing.*;
import java.util.ResourceBundle;
import java.awt.event.ActionEvent;
import java.io.File;
/**
* @author Ikryanov Vladimir
*/
public class Actions {
private static ResourceBundle resource = ApplicationSettings.getResourceBundle();
private static boolean checkAccessiblityAPI() {
if (PlatformContext.isMacOS() && !AXUIElement.getInstance().isAPIEnabled()) {
JOptionPane.showMessageDialog(null,
"<html><p>JxCapture Demo will not work if the accessibility API is not enabled.</p>" +
"<p>You can enable the accessibility API by checking \"Enable access for assistive devices\" in Universal Access Preferences.</p>",
"Accessibility API is not enabled",
JOptionPane.WARNING_MESSAGE);
return true;
}
return false;
}
static class ActiveWindowCaptureAction extends ApplicationAction {
public ActiveWindowCaptureAction(Class clazz) {
this(clazz, null);
}
public ActiveWindowCaptureAction(Class clazz, ActionType type) {
super("ActiveWindow", clazz, type);
}
public void actionPerformed(ActionEvent event) {
if (checkAccessiblityAPI()) {
return;
}
CaptureOperations.getInstance().activeWindowCapture();
}
}
static class ObjectCaptureAction extends ApplicationAction {
public ObjectCaptureAction(Class clazz) {
this(clazz, null);
}
public ObjectCaptureAction(Class clazz, ActionType type) {
super("Object", clazz, type);
}
public void actionPerformed(ActionEvent e) {
if (checkAccessiblityAPI()) {
return;
}
CaptureOperations.getInstance().objectCapture();
}
}
static class RegionCaptureAction extends ApplicationAction {
public RegionCaptureAction(Class clazz) {
this(clazz, null);
}
public RegionCaptureAction(Class clazz, ActionType type) {
super("Region", clazz, type);
}
public void actionPerformed(ActionEvent e) {
if (checkAccessiblityAPI()) {
return;
}
CaptureOperations.getInstance().regionCapture();
}
}
static class DesktopCaptureAction extends ApplicationAction {
public DesktopCaptureAction(Class clazz) {
this(clazz, null);
}
public DesktopCaptureAction(Class clazz, ActionType type) {
super("Screen", clazz, type);
}
public void actionPerformed(ActionEvent e) {
if (checkAccessiblityAPI()) {
return;
}
CaptureOperations.getInstance().desktopCapture();
}
}
static class ExitAction extends ApplicationAction {
private JxCaptureDemo application;
public ExitAction(Class clazz, JxCaptureDemo application) {
super("Exit", clazz, null);
this.application = application;
}
public void actionPerformed(ActionEvent e) {
application.close();
}
}
static class SettingsAction extends ApplicationAction {
public SettingsAction(Class clazz) {
super("Settings", clazz);
}
public void actionPerformed(ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SettingsDialog settingsDialog = SettingsDialog.getInstance();
settingsDialog.setModal(true);
settingsDialog.setVisible(true);
settingsDialog.toFront();
}
});
}
}
static class OpenImageAction extends ApplicationAction {
public OpenImageAction(Class clazz) {
super("OpenImage", clazz);
}
public void actionPerformed(ActionEvent e) {
ImageFileChooser fileChooser = new ImageFileChooser();
File imageFile = fileChooser.openImageFile();
if (imageFile != null) {
ImageViewer imageViewer = new ImageViewer();
if (imageViewer.setImage(imageFile)) {
imageViewer.setVisible(true);
imageViewer.toFront();
}
}
}
}
static class AboutAction extends ApplicationAction {
public AboutAction(Class clazz) {
super("About", clazz);
}
public void actionPerformed(ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
AboutDialog aboutDialog = AboutDialog.getInstance();
aboutDialog.setModal(true);
aboutDialog.setVisible(true);
aboutDialog.toFront();
}
});
}
}
static class CaptureToViewerAction extends ApplicationAction {
public CaptureToViewerAction(Class clazz) {
super("ToViewer", clazz);
}
public void actionPerformed(ActionEvent e) {
ApplicationSettings.getInstance().setCaptureToViewer();
}
}
static class CaptureToFileAction extends ApplicationAction {
public CaptureToFileAction(Class clazz) {
super("ToFile", clazz);
}
public void actionPerformed(ActionEvent e) {
ApplicationSettings.getInstance().setCaptureToFile();
}
}
static class CaptureToClipboardAction extends ApplicationAction {
public CaptureToClipboardAction(Class clazz) {
super("ToClipboard", clazz);
}
public void actionPerformed(ActionEvent e) {
ApplicationSettings.getInstance().setCaptureToClipboard();
}
}
static abstract class ApplicationAction extends AbstractAction {
protected ApplicationAction(String actionName, Class clazz) {
this(actionName, clazz, null);
}
protected ApplicationAction(String actionName, Class clazz, ActionType type) {
this(actionName, clazz, type, true, true, true);
}
protected ApplicationAction(String actionName, Class clazz, ActionType type, boolean hasText, boolean hasIcon, boolean hasAccelerator) {
if (hasText) {
String typeValue = type != null ? "." + type.getValue() : "";
try {
putValue(Action.NAME, resource.getString(clazz.getName() + ".Action." + actionName + ".Text" + typeValue));
} catch (Exception e) {
// ignore
} }
if (hasIcon) {
try {
String icon = resource.getString(clazz.getName() + ".Action." + actionName + ".Icon");
putValue(Action.SMALL_ICON, new ImageIcon(ImageViewer.class.getResource(icon)));
} catch (Exception e) {
// ignore
}
}
if (hasAccelerator) {
try {
String accelerator = resource.getString(clazz.getName() + ".Action." + actionName + ".Accelerator");
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(accelerator));
} catch (Exception e) {
// ignore
}
}
}
}
static class ActionType {
public static final ActionType MENU = new ActionType("Menu");
private String type;
private ActionType(String type) {
this.type = type;
}
public String getValue() {
return type;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -