JavaFXとGoogleMapテスト

 JavaFXの「JavaFX Script―JavaScript Bridge」をみて、JavaFXJavaScriptを連携させることができることを知った。
 とりあえず、試しに、JavaFXでGoogleMapにコントロールOn/Off用のボタンを付けてみた。
 →サンプルを実行
 



 一応、ソースコード

■GoogleTest.fx

package googlemaptest;

import javafx.scene.layout.HBox;
import javafx.scene.Scene;
import javafx.stage.Stage;

var action=new ActionData();
action.initialize();

Stage {
    scene: Scene {
        content:HBox{
            content: [
                action.navi,
                action.mimMap,
                action.streetview,
            ]
        }
    }
}

■ActionData.fx

package googlemaptest;

import javafx.ext.swing.SwingButton;
import javafx.ext.swing.SwingIcon;
import javafx.scene.image.Image;
import javafx.stage.AppletStageExtension;

public class ActionData {

    public var mimMap=SwingButton{
        width:24
        height:24
        var state=false;
        icon:SwingIcon{
            image : makeImage("minimap");
        }
        action :function(){
          if(state){
            state=false;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                "map.removeControl(miniMap);\}"
            );
          }else{
            state=true;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                "map.addControl(miniMap);\}"
            );
          }
        }
    }
    
    public var navi=SwingButton{
        width:24
        height:24
        var state=false;
        icon:SwingIcon{
            image : makeImage("navi");
        }
        action :function(){
          if(state){
            state=false;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                "map.removeControl(largeControl);\}"
            );
          }else{
            state=true;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                "map.addControl(largeControl);\}"
            );
          }
        }
    }

    public var streetview=SwingButton{
        width:24
        height:24
        var state=false;
        
        icon:SwingIcon{
            image : makeImage("street");
        }
                action :function(){
          if(state){
            state=false;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                "map.removeOverlay(sover);\}"
            );
          }else{
            state=true;
            AppletStageExtension.eval(
                "if(GBrowserIsCompatible()) \{"
                 "map.addOverlay(sover);\}"
            );
          }
        }
    }

    public function initialize():Void{
        AppletStageExtension.eval(
            "if(GBrowserIsCompatible()) \{"
                "var largeControl=new GLargeMapControl();"
                "var sover=new GStreetviewOverlay();"
                "var miniMap=new GOverviewMapControl();"
                "\}"
        );
    }
}

public function makeImage(name: String) {
    Image{url:"{__DIR__}resources/{name}.png"};
}