Package chrriis.dj.nativeswing.swtimpl.components

Examples of chrriis.dj.nativeswing.swtimpl.components.JWebBrowser


  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    webBrowser.setStatusBarVisible(true);
    final String url = WebServer.getDefaultWebServer().getDynamicContentURL(Cookies.class.getName(), "index.html");
    webBrowser.navigate(url);
    webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
    contentPane.add(webBrowserPanel, BorderLayout.CENTER);
    JPanel cookiesPanel = new JPanel(new BorderLayout());
    cookiesPanel.setBorder(BorderFactory.createTitledBorder("Get/Set Cookies"));
    JPanel getSetNorthPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 2));
View Full Code Here


    // Constant is placed in code and not in class, because Dimension contains a static initializer that loads AWT, and NativeSwing initialization must happen first.
    final Dimension THUMBNAIL_SIZE = new Dimension(400, 300);
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.navigate("http://www.google.com");
    webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
    contentPane.add(webBrowserPanel, BorderLayout.CENTER);
    // Create an panel with a screen capture button.
    JPanel southPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
    JButton captureButton = new JButton("Full-page capture");
    captureButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String result = (String)webBrowser.executeJavascriptWithResult(
            "var width = 0;" + LS +
            "var height = 0;" + LS +
            "if(document.documentElement) {" + LS +
            "  width = Math.max(width, document.documentElement.scrollWidth);" + LS +
            "  height = Math.max(height, document.documentElement.scrollHeight);" + LS +
            "}" + LS +
            "if(self.innerWidth) {" + LS +
            "  width = Math.max(width, self.innerWidth);" + LS +
            "  height = Math.max(height, self.innerHeight);" + LS +
            "}" + LS +
            "if(document.body.scrollWidth) {" + LS +
            "  width = Math.max(width, document.body.scrollWidth);" + LS +
            "  height = Math.max(height, document.body.scrollHeight);" + LS +
            "}" + LS +
            "return width + '/' + height;");
        // This may happen from time to time so we have to fail gracefully.
        int index = result == null? -1: result.indexOf("/");
        if(index < 0) {
          JOptionPane.showMessageDialog(webBrowser, "An error occurred while capturing the full-page", "Full-page capture failure", JOptionPane.ERROR_MESSAGE);
        } else {
          NativeComponent nativeComponent = webBrowser.getNativeComponent();
          Dimension originalSize = nativeComponent.getSize();
          Dimension imageSize = new Dimension(Integer.parseInt(result.substring(0, index)), Integer.parseInt(result.substring(index + 1)));
          // We add some artificial spacing because with scrollbars logic it is likely to be wrong...
          imageSize.width = Math.max(originalSize.width, imageSize.width + 50);
          imageSize.height = Math.max(originalSize.height, imageSize.height + 50);
View Full Code Here

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    final JTextArea functionCallsTextArea = new JTextArea(7, 0);
    webBrowser.registerFunction(new WebBrowserFunction("invokeJavaNoError") {
      @Override
      public Object invoke(JWebBrowser webBrowser, Object... args) {
        StringBuilder sb = new StringBuilder();
        sb.append("-> " + getName() + "() called from Javascript with args:");
        for (int i=0; i<args.length; i++) {
          Object arg = args[i];
          if (arg == null) {
            sb.append(LS).append("  null");
          } else {
            sb.append(LS).append("  ").append(arg instanceof Object[]? Arrays.deepToString((Object[])arg): arg.toString()).append(" (").append(arg.getClass().getSimpleName()).append(")");
          }
        }
        sb.append(LS).append("-> return Object[] result:").append(LS).append("  (short)3").append(LS).append("  true").append(LS).append("  null").append(LS).append("  new Object[] {\"A String\", false}").append(LS).append("  \"Hello World!\"").append(LS).append("  2.0f / 3.0f");
        functionCallsTextArea.setText(sb.toString());
        functionCallsTextArea.setCaretPosition(0);
        return new Object[] {(short)3, true, null, new Object[] {"A String", false}, "Hello World!", 2.0f / 3.0f};
      }
    });
    webBrowser.registerFunction(new WebBrowserFunction("invokeJavaWithError") {
      @Override
      public Object invoke(JWebBrowser webBrowser, Object... args) {
        functionCallsTextArea.setText("-> " + getName() + "() called from Javascript." + LS + "-> Generating a Java runtime exception.");
        functionCallsTextArea.setCaretPosition(0);
        // This will generate an error
        return  10 / 0;
      }
    });
    webBrowser.setHTMLContent(
        "<html>" + LS +
        "  <head>" + LS +
        "    <script language=\"JavaScript\">" + LS +
        "      function callJavaNoError() {" + LS +
        "        var s = 'Result from invokeJavaNoError():';" + LS +
View Full Code Here

* @author Christopher Deckers
*/
public class ClasspathPages {

  public static JComponent createContent() {
    JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.navigate(WebServer.getDefaultWebServer().getClassPathResourceURL(ClasspathPages.class.getName(), "resource/page1.html"));
    webBrowser.setBarsVisible(false);
    return webBrowser;
  }
View Full Code Here

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
    JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    webBrowser.setStatusBarVisible(true);
    webBrowser.setHTMLContent(
        "<html>" + LS +
        "  <body>" + LS +
        "    <a href=\"http://www.google.com\">http://www.google.com</a>: normal link.<br/>" + LS +
        "    <a href=\"http://www.google.com\" target=\"_blank\">http://www.google.com</a>: link that normally opens in new window.<br/>" + LS +
        "  </body>" + LS +
View Full Code Here

          }
        }
      }
      @Override
      public void windowWillOpen(WebBrowserWindowWillOpenEvent e) {
        JWebBrowser newWebBrowser = new JWebBrowser();
        addWebBrowserListener(tabbedPane, newWebBrowser);
        tabbedPane.addTab("New Tab", newWebBrowser);
        e.setNewWebBrowser(newWebBrowser);
      }
      @Override
View Full Code Here

    final JTextField receivedCommandTextField = new JTextField();
    commandPanel.add(receivedCommandTextField, BorderLayout.CENTER);
    contentPane.add(commandPanel, BorderLayout.SOUTH);
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    webBrowser.setStatusBarVisible(true);
    webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
      @Override
      public void commandReceived(WebBrowserCommandEvent e) {
        String command = e.getCommand();
        Object[] parameters = e.getParameters();
        receivedCommandTextField.setText(command + (parameters.length > 0? " " + Arrays.toString(parameters): ""));
        if("store".equals(command)) {
          String data = (String)parameters[0] + " " + (String)parameters[1];
          if(JOptionPane.showConfirmDialog(webBrowser, "Do you want to store \"" + data + "\" in a database?\n(Not for real of course!)", "Data received from the web browser", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
            // Data should be used here
          }
        }
      }
    });
    webBrowser.setHTMLContent(
        "<html>" + LS +
        "  <body>" + LS +
        "    <a href=\"command://A%20static%20command\">A static link, with a predefined command</a><br/>" + LS +
        "    <form name=\"form\" onsubmit=\"sendNSCommand(form.commandField.value); return false\">" + LS +
        "      A dynamic command, sent through Javascript:<br/>" + LS +
View Full Code Here

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    final JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    webBrowser.setStatusBarVisible(true);
    webBrowser.setHTMLContent(
        "<html>" + LS +
        "  <body>" + LS +
        "    <a href=\"http://java.sun.com\">http://java.sun.com</a>: force link to open in a new tab.<br/>" + LS +
        "    <a href=\"http://www.google.com\">http://www.google.com</a>: force link to open in a new window.<br/>" + LS +
        "    <a href=\"http://www.eclipse.org\">http://www.eclipse.org</a>: block link. Context menu \"Open in new Window\" creates a new tab.<br/>" + LS +
        "    <a href=\"http://www.yahoo.com\" target=\"_blank\">http://www.yahoo.com</a>: link normally opens in a new window but creates a new tab.<br/>" + LS +
        "    <a href=\"http://www.microsoft.com\">http://www.microsoft.com</a>: link and \"Open in new Window\" are blocked.<br/>" + LS +
        "  </body>" + LS +
        "</html>");
    webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
      @Override
      public void locationChanging(WebBrowserNavigationEvent e) {
        final String newResourceLocation = e.getNewResourceLocation();
        if(newResourceLocation.startsWith("http://www.google.com/")) {
          e.consume();
          SwingUtilities.invokeLater(new Runnable() {
            public void run() {
              JWebBrowser webBrowser = new JWebBrowser();
              JWebBrowserWindow webBrowserWindow = WebBrowserWindowFactory.create(webBrowser);
              webBrowser.navigate(newResourceLocation);
              webBrowserWindow.setVisible(true);
            }
          });
        } else if(newResourceLocation.startsWith("http://java.sun.com/")) {
          e.consume();
          SwingUtilities.invokeLater(new Runnable() {
            public void run() {
              JWebBrowser webBrowser = new JWebBrowser();
              webBrowser.navigate(newResourceLocation);
              tabbedPane.addTab("java.sun.com", webBrowser);
            }
          });
        } else if(newResourceLocation.startsWith("http://www.eclipse.org/")) {
          e.consume();
        } else if(newResourceLocation.startsWith("http://www.microsoft.com/")) {
          e.consume();
        }
      }
      @Override
      public void windowWillOpen(WebBrowserWindowWillOpenEvent e) {
        // We let the window to be created, but we will check the first location that is set on it.
        e.getNewWebBrowser().addWebBrowserListener(new WebBrowserAdapter() {
          @Override
          public void locationChanging(WebBrowserNavigationEvent e) {
            final JWebBrowser webBrowser = e.getWebBrowser();
            webBrowser.removeWebBrowserListener(this);
            String newResourceLocation = e.getNewResourceLocation();
            boolean isBlocked = false;
            if(newResourceLocation.startsWith("http://www.microsoft.com/")) {
              isBlocked = true;
            } else if(newResourceLocation.startsWith("http://www.eclipse.org/")) {
              isBlocked = true;
              JWebBrowser newWebBrowser = new JWebBrowser();
              JWebBrowser.copyAppearance(webBrowser, newWebBrowser);
              newWebBrowser.navigate(newResourceLocation);
              tabbedPane.addTab("www.eclipse.org", newWebBrowser);
            } else if(newResourceLocation.startsWith("http://www.yahoo.com/")) {
              isBlocked = true;
              JWebBrowser newWebBrowser = new JWebBrowser();
              JWebBrowser.copyAppearance(webBrowser, newWebBrowser);
              newWebBrowser.navigate(newResourceLocation);
              tabbedPane.addTab("www.yahoo.com", newWebBrowser);
            }
            if(isBlocked) {
              e.consume();
              // The URL Changing event is special: it is synchronous so disposal must be deferred.
View Full Code Here

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    // We create a web browser that replaces its decorator.
    final JWebBrowser webBrowser = new JWebBrowser() {
      @Override
      protected WebBrowserDecorator createWebBrowserDecorator(Component renderingComponent) {
        return createCustomWebBrowserDecorator(this, renderingComponent);
      }
    };
    webBrowser.navigate("http://www.google.com");
    webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
    contentPane.add(webBrowserPanel, BorderLayout.CENTER);
    JPanel southPanel = new JPanel();
    southPanel.setBorder(BorderFactory.createTitledBorder("Global change of decorator to customize a whole application"));
    JButton setCustomButton = new JButton("Set custom decorator for all instances");
View Full Code Here

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.setBarsVisible(false);
    webBrowser.setStatusBarVisible(true);
    final String htmlContent =
      "<html>" + LS +
      "  <body>" + LS +
      "    <h1>Some header</h1>" + LS +
      "    <p>A paragraph with a <a href=\"http://www.google.com\">link</a>.</p>" + LS +
      "  </body>" + LS +
      "</html>";
    webBrowser.setHTMLContent(htmlContent);
    webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
    contentPane.add(webBrowserPanel, BorderLayout.CENTER);
    JPanel configurationPanel = new JPanel(new BorderLayout());
    configurationPanel.setBorder(BorderFactory.createTitledBorder("Configuration"));
    final JTextArea configurationTextArea = new JTextArea(
        "document.bgColor = '#FFFF00';" + LS +
        "//window.open('http://www.google.com');" + LS);
    JScrollPane scrollPane = new JScrollPane(configurationTextArea);
    Dimension preferredSize = scrollPane.getPreferredSize();
    preferredSize.height += 20;
    scrollPane.setPreferredSize(preferredSize);
    configurationPanel.add(scrollPane, BorderLayout.CENTER);
    JPanel configurationButtonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 2));
    JButton executeJavascriptButton = new JButton("Execute Javascript");
    executeJavascriptButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        webBrowser.executeJavascript(configurationTextArea.getText());
      }
    });
    configurationButtonPanel.add(executeJavascriptButton);
    JCheckBox enableJavascriptCheckBox = new JCheckBox("Enable Javascript", true);
    enableJavascriptCheckBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
        webBrowser.setJavascriptEnabled(e.getStateChange() == ItemEvent.SELECTED);
        // Javascript state only affects subsequent pages. Let's reload the content.
        webBrowser.setHTMLContent(htmlContent);
      }
    });
    configurationButtonPanel.add(enableJavascriptCheckBox);
    configurationPanel.add(configurationButtonPanel, BorderLayout.SOUTH);
    contentPane.add(configurationPanel, BorderLayout.NORTH);
View Full Code Here

TOP

Related Classes of chrriis.dj.nativeswing.swtimpl.components.JWebBrowser

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.