/* * Copyright (C) 2014 たんらる */ package fourthline.mabiicco.ui.editor; import java.awt.BorderLayout; import java.awt.Frame; import java.util.List; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSpinner; import fourthline.mabiicco.AppResource; import fourthline.mabiicco.ui.IMMLManager; import fourthline.mabiicco.ui.IViewTargetMarker; import fourthline.mmlTools.MMLTempoEvent; /** * MMLTempo Editor * edit.insert_tempo * edit.edit_tempo * edit.delete_tempo * edit.label_tempo * @see AbstractMarkerEditor */ public final class MMLTempoEditor extends AbstractMarkerEditor<MMLTempoEvent> { private final Frame parentFrame; public MMLTempoEditor(Frame parentFrame, IMMLManager mmlManager, IEditAlign editAlign, IViewTargetMarker viewTargetMarker) { super("tempo", mmlManager, editAlign, viewTargetMarker); this.parentFrame = parentFrame; } private int showTempoInputDialog(String title, int tempo) { JPanel panel = new JPanel(); panel.add(new JLabel(AppResource.appText("edit.label_"+suffix))); JSpinner spinner = NumberSpinner.createSpinner(tempo, 32, 255, 1); spinner.setFocusable(false); panel.add(spinner); JPanel cPanel = new JPanel(new BorderLayout()); cPanel.add(panel, BorderLayout.CENTER); setDefaultFocus(((JSpinner.NumberEditor)spinner.getEditor()).getTextField()); int status = JOptionPane.showConfirmDialog(this.parentFrame, cPanel, title, JOptionPane.OK_CANCEL_OPTION); if (status == JOptionPane.OK_OPTION) { return ((Integer) spinner.getValue()).intValue(); } return -1; } @Override protected List<MMLTempoEvent> getEventList() { return mmlManager.getMMLScore().getTempoEventList(); } @Override protected void insertAction() { int tempo = mmlManager.getMMLScore().getTempoOnTick(targetTick); tempo = showTempoInputDialog(AppResource.appText("edit."+insertCommand), tempo); if (tempo < 0) { return; } // tempo align MMLTempoEvent insertTempo = new MMLTempoEvent(tempo, targetTick); insertTempo.appendToListElement(getEventList()); System.out.println("insert tempo." + tempo); } @Override protected void editAction() { int tempo = showTempoInputDialog(AppResource.appText("edit."+editCommand), targetEvent.getTempo()); if (tempo < 0) { return; } targetEvent.setTempo(tempo); } @Override protected void deleteAction() { getEventList().remove(targetEvent); System.out.println("delete tempo."); } }