55 */
66package io .flutter .jxbrowser ;
77
8+ import com .intellij .ide .ui .UISettingsUtils ;
89import com .intellij .openapi .application .PathManager ;
910import com .intellij .openapi .diagnostic .Logger ;
1011import com .intellij .openapi .project .Project ;
1314import com .teamdev .jxbrowser .browser .UnsupportedRenderingModeException ;
1415import com .teamdev .jxbrowser .browser .callback .AlertCallback ;
1516import com .teamdev .jxbrowser .browser .callback .ConfirmCallback ;
17+ import com .teamdev .jxbrowser .browser .callback .ShowContextMenuCallback ;
1618import com .teamdev .jxbrowser .browser .callback .input .PressKeyCallback ;
1719import com .teamdev .jxbrowser .browser .event .ConsoleMessageReceived ;
1820import com .teamdev .jxbrowser .engine .Engine ;
21+ import com .teamdev .jxbrowser .frame .EditorCommand ;
1922import com .teamdev .jxbrowser .js .ConsoleMessage ;
23+ import com .teamdev .jxbrowser .menu .internal .rpc .ContextMenuContentType ;
24+ import com .teamdev .jxbrowser .permission .PermissionType ;
25+ import com .teamdev .jxbrowser .permission .callback .RequestPermissionCallback ;
2026import com .teamdev .jxbrowser .ui .KeyCode ;
2127import com .teamdev .jxbrowser .ui .event .KeyPressed ;
2228import com .teamdev .jxbrowser .view .swing .BrowserView ;
2329import com .teamdev .jxbrowser .view .swing .callback .DefaultAlertCallback ;
2430import com .teamdev .jxbrowser .view .swing .callback .DefaultConfirmCallback ;
31+ import com .teamdev .jxbrowser .zoom .Zoom ;
32+ import com .teamdev .jxbrowser .zoom .ZoomLevel ;
2533import io .flutter .logging .PluginLogger ;
2634import io .flutter .settings .FlutterSettings ;
27- import io .flutter .utils .AsyncUtils ;
28- import io .flutter .utils .JxBrowserUtils ;
29- import io .flutter .utils .ZoomLevelSelector ;
35+ import io .flutter .utils .*;
3036import io .flutter .view .EmbeddedBrowser ;
3137import io .flutter .view .EmbeddedTab ;
32- import io .flutter .utils .LabelInput ;
3338import org .jetbrains .annotations .NotNull ;
3439import org .jetbrains .annotations .Nullable ;
35- import com .teamdev .jxbrowser .zoom .Zoom ;
36- import com .teamdev .jxbrowser .zoom .ZoomLevel ;
37- import com .intellij .ide .ui .UISettingsUtils ;
3840
3941import javax .swing .*;
4042import java .awt .*;
@@ -55,6 +57,16 @@ class EmbeddedJxBrowserTab implements EmbeddedTab {
5557 public EmbeddedJxBrowserTab (Engine engine ) {
5658 this .engine = engine ;
5759
60+ this .engine .permissions ().set (RequestPermissionCallback .class , (params , tell ) -> {
61+ var type = params .permissionType ();
62+ if (type == PermissionType .CLIPBOARD_READ_WRITE
63+ || type == PermissionType .CLIPBOARD_SANITIZED_WRITE ) {
64+ tell .grant ();
65+ } else {
66+ tell .deny ();
67+ }
68+ });
69+
5870 try {
5971 this .browser = engine .newBrowser ();
6072 this .zoom = this .browser .zoom ();
@@ -63,6 +75,30 @@ public EmbeddedJxBrowserTab(Engine engine) {
6375 final ConsoleMessage consoleMessage = event .consoleMessage ();
6476 LOG .info ("Browser message(" + consoleMessage .level ().name () + "): " + consoleMessage .message ());
6577 });
78+
79+ browser .set (ShowContextMenuCallback .class , (params , tell ) -> {
80+ var contentType = params .contentType ();
81+ if (contentType .contains (ContextMenuContentType .CONTEXT_MENU_CONTENT_TYPE_COPY )) {
82+ // Some text is selected, so you can add the "Copy" item to the context menu.
83+ }
84+ if (contentType .contains (ContextMenuContentType .CONTEXT_MENU_CONTENT_TYPE_EDITABLE )) {
85+ // User right-clicked on the editable content, so you can add
86+ // the "Paste" item to the context menu.
87+ }
88+ tell .close ();
89+ });
90+
91+
92+
93+ // browser.settings().allowJavaScriptAccessClipboard();
94+ // browser.mainFrame().ifPresent(frame ->
95+ // frame.executeJavaScript("document.execCommand('copy')")
96+ // );
97+
98+ //browser.mainFrame().ifPresent(frame ->
99+ // frame.execute(EditorCommand.copy())
100+ //);
101+
66102 }
67103 catch (UnsupportedRenderingModeException ex ) {
68104 // Skip using a transparent background if an exception is thrown.
0 commit comments