/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.impl.rest.actions.oauth; import com.eviware.soapui.SoapUI; import com.eviware.soapui.support.components.WebViewBasedBrowserComponent; import com.eviware.soapui.support.components.WebViewBasedBrowserComponentFactory; import javax.swing.JFrame; import javax.swing.SwingUtilities; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.URL; /** * Implementation based on the JavaFX WebView component. */ public class WebViewUserBrowserFacade implements UserBrowserFacade { private WebViewBasedBrowserComponent browserComponent; private JFrame popupWindow; public WebViewUserBrowserFacade() { this(false); } public WebViewUserBrowserFacade(boolean addNavigationBar) { browserComponent = WebViewBasedBrowserComponentFactory.createBrowserComponent(addNavigationBar); } @Override public void open(URL url) { popupWindow = new JFrame("Browser"); popupWindow.setIconImages(SoapUI.getFrameIcons()); popupWindow.getContentPane().add(browserComponent.getComponent()); popupWindow.setBounds(100, 100, 800, 600); popupWindow.setVisible(true); popupWindow.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { browserComponent.close(true); } }); browserComponent.navigate(url.toString()); } @Override public void addBrowserListener(BrowserListener listener) { browserComponent.addBrowserStateListener(listener); } @Override public void removeBrowserStateListener(BrowserListener listener) { browserComponent.removeBrowserStateListener(listener); } @Override public void close() { try { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { popupWindow.setVisible(false); popupWindow.dispose(); } }); browserComponent.close(true); } catch (Exception e) { SoapUI.log.debug("Could not close window due to unexpected error: " + e.getMessage() + "!"); } } @Override public void executeJavaScript(String script) { browserComponent.executeJavaScript(script); } }