aboutsummaryrefslogtreecommitdiff
path: root/java_tests/tests/detailed/ui/MenuBar.java
diff options
context:
space:
mode:
authorAnton Tarasov <anton.tarasov@jetbrains.com>2021-01-20 17:51:05 +0300
committerAnton Tarasov <anton.tarasov@jetbrains.com>2021-01-20 17:51:05 +0300
commit02d12314fcd8fa81628d50de1e21744f2e6077d8 (patch)
treeb1f155adabbbcbc3177f03e7e225fc486290a44a /java_tests/tests/detailed/ui/MenuBar.java
parentc04edd546efcd86891ed472fa9857aaf1e4d8fc1 (diff)
parent304f3e3de03fb3aab5e8212c0f9c699503a55cb4 (diff)
downloadjcef-02d12314fcd8fa81628d50de1e21744f2e6077d8.tar.gz
Merge branch 'java-cef'
# Conflicts: # java/org/cef/browser/CefBrowser.java # java/org/cef/browser/CefBrowserOsr.java # java/org/cef/browser/CefBrowser_N.java # java/org/cef/browser/CefFrame.java # java/org/cef/browser/CefFrame_N.java # native/CefBrowser_N.cpp # native/CefFrame_N.cpp # native/CefFrame_N.h # native/util_linux.cpp # native/util_mac.mm # third_party/jogamp/jar/gluegen-rt-natives-linux-amd64.jar # third_party/jogamp/jar/gluegen-rt-natives-macosx-universal.jar # third_party/jogamp/jar/gluegen-rt-natives-windows-amd64.jar # third_party/jogamp/jar/gluegen-rt.jar # third_party/jogamp/jar/jogl-all-natives-linux-amd64.jar # third_party/jogamp/jar/jogl-all-natives-macosx-universal.jar # third_party/jogamp/jar/jogl-all-natives-windows-amd64.jar # third_party/jogamp/jar/jogl-all.jar # tools/compile.sh # tools/make_distrib.sh # tools/make_docs.sh # tools/run.sh # tools/run_tests.sh
Diffstat (limited to 'java_tests/tests/detailed/ui/MenuBar.java')
-rw-r--r--java_tests/tests/detailed/ui/MenuBar.java82
1 files changed, 80 insertions, 2 deletions
diff --git a/java_tests/tests/detailed/ui/MenuBar.java b/java_tests/tests/detailed/ui/MenuBar.java
index b9d39d9..f92741a 100644
--- a/java_tests/tests/detailed/ui/MenuBar.java
+++ b/java_tests/tests/detailed/ui/MenuBar.java
@@ -19,6 +19,8 @@ import org.cef.network.CefRequest;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -26,15 +28,21 @@ import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Vector;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
+import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
@@ -71,7 +79,7 @@ public class MenuBar extends JMenuBar {
}
}
- private final BrowserFrame owner_;
+ private final MainFrame owner_;
private final CefBrowser browser_;
private String last_selected_file_ = "";
private final JMenu bookmarkMenu_;
@@ -80,7 +88,7 @@ public class MenuBar extends JMenuBar {
private final CefCookieManager cookieManager_;
private boolean reparentPending_ = false;
- public MenuBar(BrowserFrame owner, CefBrowser browser, ControlPanel control_pane,
+ public MenuBar(MainFrame owner, CefBrowser browser, ControlPanel control_pane,
DownloadDialog downloadDialog, CefCookieManager cookieManager) {
owner_ = owner;
browser_ = browser;
@@ -457,6 +465,64 @@ public class MenuBar extends JMenuBar {
});
testMenu.add(newwindow);
+ JMenuItem screenshotSync = new JMenuItem("Screenshot (on AWT thread, native res)");
+ screenshotSync.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ long start = System.nanoTime();
+ CompletableFuture<BufferedImage> shot = browser.createScreenshot(true);
+ System.out.println("Took screenshot from the AWT event thread in "
+ + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) + " msecs");
+ try {
+ displayScreenshot(shot.get());
+ } catch (InterruptedException | ExecutionException exc) {
+ // cannot happen, future is already resolved in this case
+ }
+ }
+ });
+ screenshotSync.setEnabled(owner.isOsrEnabled());
+ testMenu.add(screenshotSync);
+
+ JMenuItem screenshotSyncScaled = new JMenuItem("Screenshot (on AWT thread, scaled)");
+ screenshotSyncScaled.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ long start = System.nanoTime();
+ CompletableFuture<BufferedImage> shot = browser.createScreenshot(false);
+ System.out.println("Took screenshot from the AWT event thread in "
+ + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) + " msecs");
+ try {
+ displayScreenshot(shot.get());
+ } catch (InterruptedException | ExecutionException exc) {
+ // cannot happen, future is already resolved in this case
+ }
+ }
+ });
+ screenshotSyncScaled.setEnabled(owner.isOsrEnabled());
+ testMenu.add(screenshotSyncScaled);
+
+ JMenuItem screenshotAsync = new JMenuItem("Screenshot (from other thread, scaled)");
+ screenshotAsync.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ long start = System.nanoTime();
+ CompletableFuture<BufferedImage> shot = browser.createScreenshot(false);
+ shot.thenAccept((image) -> {
+ System.out.println("Took screenshot asynchronously in "
+ + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start)
+ + " msecs");
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ displayScreenshot(image);
+ }
+ });
+ });
+ }
+ });
+ screenshotAsync.setEnabled(owner.isOsrEnabled());
+ testMenu.add(screenshotAsync);
+
add(fileMenu);
add(bookmarkMenu_);
add(testMenu);
@@ -489,6 +555,18 @@ public class MenuBar extends JMenuBar {
validate();
}
+ private void displayScreenshot(BufferedImage aScreenshot) {
+ JFrame frame = new JFrame("Screenshot");
+ ImageIcon image = new ImageIcon();
+ image.setImage(aScreenshot);
+ frame.setLayout(new FlowLayout());
+ JLabel label = new JLabel(image);
+ label.setPreferredSize(new Dimension(aScreenshot.getWidth(), aScreenshot.getHeight()));
+ frame.add(label);
+ frame.setVisible(true);
+ frame.pack();
+ }
+
public void addBookmarkSeparator() {
bookmarkMenu_.addSeparator();
}