package krasa.mavenhelper.gui; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.ui.DocumentAdapter; import krasa.mavenhelper.model.ApplicationSettings; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.DocumentEvent; public class AliasEditor extends DialogWrapper { private JTextField fromField; private JPanel myPanel; private final Validator myValidator; private GoalEditor goalEditor; public interface Validator { boolean isOK(String name, String value); } public AliasEditor(String title, String macroName, String value, Validator validator) { super(true); setTitle(title); myValidator = validator; goalEditor = new GoalEditor(null, value, ApplicationSettings.get(), false, null, null) { @Override protected void updateControls() { if (goalEditor != null) { AliasEditor.this.updateControls(); } } }; goalEditor.commandLineLabel.setText("To:"); //noinspection deprecation fromField.setNextFocusableComponent(goalEditor.getPreferredFocusedComponent()); fromField.getDocument().addDocumentListener(new DocumentAdapter() { @Override public void textChanged(@NotNull DocumentEvent event) { updateControls(); } }); fromField.setText(macroName); init(); updateControls(); } private void updateControls() { getOKAction().setEnabled(myValidator.isOK(getFrom(), getTo())); } @Override public JComponent getPreferredFocusedComponent() { return fromField; } @Override protected String getHelpId() { return null; } @Override protected void doOKAction() { if (!myValidator.isOK(getFrom(), getTo())) return; super.doOKAction(); } public String getFrom() { return fromField.getText().trim(); } public String getTo() { return goalEditor.getCmd(); } @Override protected JComponent createNorthPanel() { return myPanel; } @Override protected JComponent createCenterPanel() { return goalEditor.createCenterPanel(); } @Nullable protected String getDimensionServiceKey() { // return null; return GoalEditor.DIMENSION; } }