/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.kjtw.main; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.Hashtable; import java.util.ResourceBundle; import javax.swing.JFileChooser; import javax.swing.filechooser.FileNameExtensionFilter; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.layout.Pane; import org.kjtw.process.JGLoad; import org.kjtw.resources.YDKJPalettes; /** * FXML Controller class * * @author James */ public class SegueFXML implements Initializable { @FXML // fx:id="Palettecode" private ChoiceBox<String> Palettecode; // Value injected by FXMLLoader @FXML // fx:id="Segbank" private ChoiceBox<Integer> Segbank; // Value injected by FXMLLoader @FXML // fx:id="Segnum" private ChoiceBox<Integer> Segnum; // Value injected by FXMLLoader @FXML // fx:id="Playbut" private Button Playbut; // Value injected by FXMLLoader @FXML // fx:id="gfx" private Pane gfx; // Value injected by FXMLLoader private String palette; private int bank; private int number; Hashtable<String,String> palettelist; JGLoad jg; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { // create layers gfx.setStyle("-fx-background-color: #000000;"); try { File file = null; String indir = null; do { JFileChooser chooser = new JFileChooser("C:\\ydkj"); chooser.setDialogTitle("Open a QNUMBERS.SRF"); chooser.setFileFilter(new FileNameExtensionFilter("QNUMBERS.SRF", "srf")); chooser.showOpenDialog(null); file = chooser.getSelectedFile(); indir = file.getPath(); } while (!file.getName().toLowerCase().equals("qnumbers.srf")); jg = new JGLoad(indir); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } new YDKJPalettes(); palettelist = YDKJPalettes.getPalettes(); assert Palettecode != null : "fx:id=\"Palettecode\" was not injected: check your FXML file."; Palettecode.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue != null) { palette = palettelist.get(newValue); } } }); assert Segbank != null : "fx:id=\"Segbank\" was not injected: check your FXML file."; Segbank.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Integer>() { @Override public void changed(ObservableValue<? extends Integer> observable, Integer oldValue, Integer newValue) { if (newValue != null) { bank = newValue; } } }); assert Segnum != null : "fx:id=\"Segnum\" was not injected: check your FXML file."; Segnum.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Integer>() { @Override public void changed(ObservableValue<? extends Integer> observable, Integer oldValue, Integer newValue) { if (newValue != null) { number = newValue; } } }); Playbut.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("processing gfx"); int gfxval = (-1000 * bank) - (number*10); int sndval = (number * 1000) + (bank + 1); System.out.println("setting gfx"); jg.setRes((short) gfxval,(short)sndval,palette); gfx.getChildren().clear(); System.out.println("starting anim"); Segue animation = new Segue( gfx, jg.getGfx(), 400/6,jg.getSnd().toWav()); System.out.println("playing anim"); animation.play(); } }); } }