/* * Copyright (C) 2015 たんらる */ package fourthline.mabiicco.fx; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import fourthline.mabiicco.AppResource; import fourthline.mabiicco.ui.IMMLManager; import fourthline.mmlTools.MMLScore; import fourthline.mmlTools.MMLTrack; import fourthline.mmlTools.parser.IMMLFileParser; import fourthline.mmlTools.parser.MMLParseException; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Parent; import javafx.scene.canvas.Canvas; import javafx.scene.control.MenuItem; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.stage.FileChooser; import javafx.stage.Stage; /** * */ public final class MainController implements Initializable { @FXML private Canvas canvas; @FXML private Canvas keyboardCanvas; @FXML private Canvas columnCanvas; @FXML private MenuItem newFileMenu; @FXML private TabPane tabPane; private Stage stage; private PianoRollView pianoRollView; private final IMMLManager mmlContents = new MMLContents(); @Override public void initialize(URL url, ResourceBundle resouceBundle) { System.out.println(this.getClass().getName()+"["+resouceBundle.getLocale()+"]: "+url); this.pianoRollView = new PianoRollView(canvas, mmlContents); new KeyboardView(keyboardCanvas, pianoRollView); new ColumnView(columnCanvas, pianoRollView, mmlContents); createTrackView(resouceBundle); } private void createTrackView(ResourceBundle resouceBundle) { try { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TrackView.fxml"), resouceBundle); Parent root = fxmlLoader.load(); tabPane.getTabs().clear(); Tab tab = new Tab("Track1", root); tabPane.getTabs().add(tab); TrackViewController trackViewController = fxmlLoader.getController(); trackViewController.setMMLTrack(new MMLTrack().setMML("MML@a,b,c,d;"), 0); } catch (IOException e) { e.printStackTrace(); } } public MainController() { MMLScore mmlScore = mmlContents.getMMLScore(); mmlScore.addTrack(new MMLTrack().setMML("MML@o0t150v7ccct112cr1o4rc64rc32rc16rc8rc4rc2rc1,o0eeee,o0gggg,o0bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o1cccc,o1eeee,o1gggg,o1bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o2cccc,o2eeee,o2gggg,o2bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o3cccc,o3eeee,o3gggg,o3bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o4cccc,o4eeee,o4gggg,o4bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o5cccc,o5eeee,o5gggg,o5bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o6cccc,o6eeee,o6gggg,o6bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o7cccc,o7eeee,o7gggg,o7bbbb;")); mmlScore.addTrack(new MMLTrack().setMML("MML@o8cccc,o8eeee,o8gggg,o8bbbb;")); } public void setStage(Stage stage) { this.stage = stage; } @FXML private void newFileAction(ActionEvent e) { System.out.println("newFileAction"); } @FXML private void openFileAction(ActionEvent e) { System.out.println("openFileAction"); FileChooser fileChooser = new FileChooser(); fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter(AppResource.appText("file.mmi"), "*.mmi")); fileChooser.setInitialDirectory(null); File file = fileChooser.showOpenDialog(stage); System.out.println(file); if (file != null) { mmlContents.setMMLScore( fileParse(file) ); pianoRollView.paint(); } } private MMLScore fileParse(File file) { MMLScore score = null; try { IMMLFileParser fileParser = IMMLFileParser.getParser(file); score = fileParser.parse(new FileInputStream(file)); } catch (FileNotFoundException e) { } catch (MMLParseException e) { } // mabiicco由来のファイルであれば, generateされたものにする. if (score != null) { score = score.toGeneratedScore(); } return score; } @FXML private void reloadFileAction(ActionEvent e) { System.out.println("reloadFileAction"); } }