package abbot.editor.editors;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.*;
import java.util.Collection;
import abbot.Log;
import abbot.i18n.Strings;
import abbot.script.*;
import abbot.script.Script;
import abbot.editor.EditorConstants;
import abbot.editor.widgets.Mnemonic;
/** Provide convenient editing of a Script step. */
public class ScriptEditor extends SequenceEditor {
private Script script;
private JTextField path;
private JCheckBox fork;
private JTextField vmargs;
public ScriptEditor(Script script) {
super(script);
this.script = script;
path = addTextField(Strings.get("FilePath"),
script.getFilename());
if (!(script instanceof Fixture)) {
fork = addCheckBox("", script.isForked());
String key = EditorConstants.ACTION_PREFIX
+ EditorConstants.ACTION_TOGGLE_FORKED;
Mnemonic mnemonic = Mnemonic.getMnemonic(Strings.get(key));
mnemonic.setMnemonic(fork);
addVMArgs();
}
}
private void addVMArgs() {
if (script.isForked()) {
vmargs = addTextField(Strings.get("VMArgs"),
script.getVMArgs());
}
else if (vmargs != null) {
while (getComponent(getComponentCount()-1) != fork) {
remove(getComponentCount()-1);
}
vmargs = null;
}
revalidate();
repaint();
}
public void actionPerformed(ActionEvent ev) {
Object src = ev.getSource();
if (src == path) {
String filename = path.getText().trim();
File file = new File(script.getRelativeTo(), filename);
script.setFile(file);
try {
script.load();
}
catch(Exception exc) {
Log.warn(exc);
}
fireStepChanged();
}
else if (src == fork) {
script.setForked(!script.isForked());
addVMArgs();
fireStepChanged();
}
else if (src == vmargs) {
String text = vmargs.getText();
if ("".equals(text))
text = null;
script.setVMArgs(text);
fireStepChanged();
}
else {
super.actionPerformed(ev);
}
}
}