Ignore:
Timestamp:
2024-03-18T20:37:34+13:00 (2 months ago)
Author:
anupama
Message:
  1. Running webswing-phind as an application instead of as an applet, so we can finally pass in the variable collection and library parameters. This required altering webswing.config.in (to launch JPhind as application instead of applet) and webswing-phind.xsl (to pass in the additional parameters). 2. When run as applet, clicking leaf nodes in the search results list opened the clicked url result in a browser window/tab but this wasn't happening when run as application. The easiest solution was to handle it when JPhind is run as a webswing application: in that case, it just requires registering a new eventhandler called openURL in the webswing-phind.xsl's JavaScript code, then calling this from the Java code. In JPhind.java, we now pass in a webswing command line parameter set to 1 to indicate JPhind is run as by webswing and as an application. (The webswing cmdline arg will default to 0 if not set, such as for applets or if run from the commandline without being set.) If run as an applet, JPhind uses the inherited AppletContext object as before to open a URL in the browser where the applet is being run. But now, if run as a webswing Application, it calls the new webswing custom eventhandler called openURL (for which JPhind needs to be compiled against the webswing-api.jar now) and passes the URL and any target window where the URL is to be opened. Finally, webswing.config.in passes in the new webswing parameter set to 1, since we're running the phind webswing as an application and also needs the webswing-api.jar in its classpath for phind.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/applet/phind/JPhind.java

    r38817 r38848  
    9292package org.greenstone.applet.phind;
    9393
     94import org.webswing.toolkit.api.WebswingUtil;
     95
    9496import javax.swing.JApplet;
    9597import javax.swing.JComponent;
     
    136138    implements ActionListener {
    137139
     140    boolean isWebswingApplication = false; // if run as webswing *and* application (not applet)
     141   
    138142    boolean isRunAsApplet = true;
    139143    // set only if JPhind object is run as an application
     
    215219    // 1. The search button is easy to disable, and is disabled when a
    216220    //    socket connection is in progress.
    217     // 2. ResutCanvas widgets can'r be similarly disabled because the
     221    // 2. ResutCanvas widgets can't be similarly disabled because the
    218222    //    browser hides or wipes them, which looks very bad.
    219223    // 3. I cannot just ignore clicks on canvasses because the browser
     
    280284    }
    281285
     286    isWebswingApplication = appParams.getOrDefault("webswing", "0").equals("1") ? true : false;
     287   
    282288    // manually calling (J)Applet method init()
    283289    init();
     
    716722    try {
    717723        URL url= new URL(address);
    718         if (window.length() > 0) {
    719         getAppletContext().showDocument(url, window);
    720         } else {
    721         getAppletContext().showDocument(url);
     724        if(isRunAsApplet) {
     725        if (window.length() > 0) {
     726            getAppletContext().showDocument(url, window);
     727        } else {
     728            getAppletContext().showDocument(url);
     729        }
     730        } else if(isWebswingApplication) {
     731        if (window.length() > 0) {
     732            WebswingUtil.getWebswingApi().sendActionEvent("openURL",
     733                                  url.toString() + " - " +window,
     734                                  null);
     735        } else {
     736            WebswingUtil.getWebswingApi().sendActionEvent("openURL", url.toString(), null);
     737        }
     738        } else { // else application, but not webswing, TODO: open browser at the URL
     739        System.err.println("Phind.displayWebPage() for non-applet and non-webswing application is not yet implemented.");
    722740        }
    723741    } catch (Exception e) {
     
    11301148    public static void main(String args[]) {
    11311149    if(args.length < 9) {
    1132         System.err.println("Need minimum --params: <baseURL> --collection <collection> --classifier <classifier> --phindcgi <URL> --library <libURL> [--backdrop <ImgURL>] [--xtraParams <key1=value1&key2=value2&...]");
     1150        System.err.println("Need minimum --params: <baseURL> --collection <collection> --classifier <classifier> --phindcgi <URL> --library <libURL> [--webswing <1/0>] [--backdrop <ImgURL>] [--xtraParams <key1=value1&key2=value2&...]");
    11331151    }
    11341152    else { // collection fao.org, classifier 1, phindcgi url, library url, backdrop imgurl
Note: See TracChangeset for help on using the changeset viewer.