package net.sf.openrocket.gui.configdialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.startup.Application;
public class RocketConfig extends RocketComponentConfig {
private static final Translator trans = Application.getTranslator();
private TextFieldListener textFieldListener;
private JTextArea designerTextArea;
private JTextArea revisionTextArea;
private final Rocket rocket;
public RocketConfig(OpenRocketDocument d, RocketComponent c) {
super(d, c);
rocket = (Rocket) c;
this.removeAll();
setLayout(new MigLayout("fill"));
//// Design name:
this.add(new JLabel(trans.get("RocketCfg.lbl.Designname")), "top, pad 4lp, gapright 10lp");
this.add(componentNameField, "growx, wrap para");
//// Designer:
this.add(new JLabel(trans.get("RocketCfg.lbl.Designer")), "top, pad 4lp, gapright 10lp");
textFieldListener = new TextFieldListener();
designerTextArea = new JTextArea(rocket.getDesigner());
designerTextArea.setLineWrap(true);
designerTextArea.setWrapStyleWord(true);
designerTextArea.setEditable(true);
GUIUtil.setTabToFocusing(designerTextArea);
designerTextArea.addFocusListener(textFieldListener);
this.add(new JScrollPane(designerTextArea), "wmin 400lp, height 60lp:60lp:, grow 30, wrap para");
//// Comments:
this.add(new JLabel(trans.get("RocketCfg.lbl.Comments")), "top, pad 4lp, gapright 10lp");
this.add(new JScrollPane(commentTextArea), "wmin 400lp, height 155lp:155lp:, grow 100, wrap para");
//// Revision history:
this.add(new JLabel(trans.get("RocketCfg.lbl.Revisionhistory")), "top, pad 4lp, gapright 10lp");
revisionTextArea = new JTextArea(rocket.getRevision());
revisionTextArea.setLineWrap(true);
revisionTextArea.setWrapStyleWord(true);
revisionTextArea.setEditable(true);
GUIUtil.setTabToFocusing(revisionTextArea);
revisionTextArea.addFocusListener(textFieldListener);
this.add(new JScrollPane(revisionTextArea), "wmin 400lp, height 60lp:60lp:, grow 30, wrap para");
addButtons();
}
private class TextFieldListener implements ActionListener, FocusListener {
@Override
public void actionPerformed(ActionEvent e) {
setName();
}
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
setName();
}
private void setName() {
if (!rocket.getDesigner().equals(designerTextArea.getText())) {
rocket.setDesigner(designerTextArea.getText());
}
if (!rocket.getRevision().equals(revisionTextArea.getText())) {
rocket.setRevision(revisionTextArea.getText());
}
}
}
}