/** * * @author kumarse */ package gadgets; import javafx.application.Platform; import javax.swing.*; import javax.swing.SwingUtilities; import javafx.embed.swing.*; import javafx.event.*; import java.awt.Toolkit; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.net.URL; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.*; import javafx.scene.control.Button; import javafx.scene.control.TextField; import javafx.scene.web.*; import javafx.scene.layout.*; public class Gadget { static final String kuser = "kumarse"; static final String kpass = ""; static class MyAuthenticator extends Authenticator { public PasswordAuthentication getPasswordAuthentication() { System.err.println("Feeding username and password for " + getRequestingScheme()); return (new PasswordAuthentication(kuser, kpass.toCharArray())); } } private JFrame window; private JFXPanel webview; int gadgetId; Gadget() { gadgetId=105; SwingUtilities.invokeLater(new Runnable() { public void run() { createGUI(); } }); } void createGUI() { window=new JFrame(); webview=new JFXPanel(); Platform.runLater(new Runnable() { public void run() { initFX(webview); } }); window.setSize(325,430); new Tray(window); window.setLocationRelativeTo(null); window.setIconImage(Toolkit.getDefaultToolkit().createImage(Gadget.class.getResource("DESCO.png"))); window.setTitle("Gadget Viewer"); window.add(webview); window.setVisible(true); } void initFX(JFXPanel webview) { System.setProperty("sun.security.krb5.debug", "true"); System.setProperty("java.security.auth.login.config", "spnego.conf"); System.setProperty("java.security.krb5.conf", "krb5.conf"); System.setProperty("useSubjectCredsOnly", "false"); final String prefix="http://intranet.deshaw.com/common/ifr?gadgetId=",suffix="&app=gadget"; GridPane grid=GridPaneBuilder.create() .vgap(10) .hgap(10) .prefHeight(window.getHeight()) .prefWidth(window.getWidth()) .build(); final Button prev=new Button("Previous"); final TextField address=new TextField(gadgetId+""); final Button go=new Button("Go"); final Button next=new Button("Next"); HBox row1=new HBox(); row1.getChildren().add(prev); row1.getChildren().add(address); row1.getChildren().add(go); row1.getChildren().add(next); grid.add(row1,0,0); final WebView browser=new WebView(); final WebEngine engine=browser.getEngine(); Authenticator.setDefault(new MyAuthenticator()); engine.load(prefix+gadgetId+suffix); browser.setVisible(true); address.requestFocus(); grid.add(browser,0,2); Scene scene=new Scene(grid); webview.setScene(scene); prev.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { if(gadgetId>1) { --gadgetId; address.setText(gadgetId+""); engine.load(prefix+gadgetId+suffix); } } }); next.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { ++gadgetId; address.setText(gadgetId+""); engine.load(prefix+gadgetId+suffix); } }); go.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { try { gadgetId=Integer.parseInt(address.getText()); engine.load(prefix+gadgetId+suffix); } catch(Exception ex) { JOptionPane.showMessageDialog(null,"Invalid Gadget ID"); } } }); } }