/*
* 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.JTextField;
import fourthline.mabiicco.AppResource;
import fourthline.mabiicco.ui.IMMLManager;
import fourthline.mabiicco.ui.IViewTargetMarker;
import fourthline.mmlTools.Marker;
/**
* Marker Editor
* edit.insert_marker
* edit.edit_marker
* edit.delete_marker
* edit.label_marker
* edit.new.marker
* @see AbstractMarkerEditor
*/
public final class MarkerEditor extends AbstractMarkerEditor<Marker> {
private final Frame parentFrame;
public MarkerEditor(Frame parentFrame, IMMLManager mmlManager, IEditAlign editAlign, IViewTargetMarker viewTargetMarker) {
super("marker", mmlManager, editAlign, viewTargetMarker);
this.parentFrame = parentFrame;
}
private String showTextInputDialog(String title, String text) {
JPanel panel = new JPanel();
panel.add(new JLabel(AppResource.appText("edit.label_"+suffix)));
JTextField textField = new JTextField(text, 10);
setDefaultFocus(textField);
panel.add(textField);
JPanel cPanel = new JPanel(new BorderLayout());
cPanel.add(panel, BorderLayout.CENTER);
int status = JOptionPane.showConfirmDialog(this.parentFrame, cPanel, title, JOptionPane.OK_CANCEL_OPTION);
if (status == JOptionPane.OK_OPTION) {
return textField.getText();
}
return null;
}
@Override
protected List<Marker> getEventList() {
return mmlManager.getMMLScore().getMarkerList();
}
@Override
protected void insertAction() {
String text = showTextInputDialog(AppResource.appText("edit."+insertCommand), AppResource.appText("edit.new.marker"));
if ((text == null) || (text.length() == 0)) {
return;
}
// tempo align
Marker marker = new Marker(text, targetTick);
getEventList().add(marker);
}
@Override
protected void editAction() {
String text = showTextInputDialog(AppResource.appText("edit."+editCommand), targetEvent.getName());
if (text == null) {
return;
}
targetEvent.setName(text);
}
@Override
protected void deleteAction() {
getEventList().remove(targetEvent);
}
}