package com.jetbrains.actionscript.profiler.ui;
import com.intellij.lang.javascript.flex.FlexUtils;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.Consumer;
import com.jetbrains.actionscript.profiler.model.ActionScriptProfileSettings;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionScriptProfileSettingsForm {
private JPanel myPanel;
private JTextField myHostField;
private JTextField myPortField;
private TextFieldWithBrowseButton myPathToMmCfgTextField;
private JCheckBox myCustomPathCheckBox;
private String customPathToMmCfg = "";
public ActionScriptProfileSettingsForm() {
myCustomPathCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!myCustomPathCheckBox.isSelected()) {
customPathToMmCfg = myPathToMmCfgTextField.getText();
}
updateMmCfg();
}
});
myPathToMmCfgTextField.getButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileChooser.chooseFile(FlexUtils.createFileChooserDescriptor("cfg"), null, getPanel(), null, file -> {
customPathToMmCfg = file.getPath();
updateMmCfg();
});
}
});
}
public void resetEditorFrom(ActionScriptProfileSettings profileSettings) {
customPathToMmCfg = profileSettings.getPathToMmCfg();
myHostField.setText(profileSettings.getHost());
myPortField.setText(String.valueOf(profileSettings.getPort()));
myCustomPathCheckBox.setSelected(profileSettings.isUseCustomPathToMmCfg());
setUseCustomDirectory();
}
public void applyEditorTo(ActionScriptProfileSettings profileSettings) {
profileSettings.setHostFromString(myHostField.getText());
profileSettings.setPortFromString(myPortField.getText());
profileSettings.setUseCustomPathToMmCfg(myCustomPathCheckBox.isSelected());
if (myCustomPathCheckBox.isSelected()) {
profileSettings.setPathToMmCfg(FileUtil.toSystemIndependentName(myPathToMmCfgTextField.getText()));
}
}
private void setUseCustomDirectory() {
myPathToMmCfgTextField.setEnabled(myCustomPathCheckBox.isSelected());
updateMmCfg();
}
private void updateMmCfg() {
final String defaultMmCfgPath = FileUtil.toSystemDependentName(ActionScriptProfileSettings.getDefaultMmCfgPath());
myPathToMmCfgTextField
.setText(myCustomPathCheckBox.isSelected() ? FileUtil.toSystemDependentName(customPathToMmCfg) : defaultMmCfgPath);
myPathToMmCfgTextField.setEnabled(myCustomPathCheckBox.isSelected());
}
public JPanel getPanel() {
return myPanel;
}
public boolean isModified(ActionScriptProfileSettings settings) {
final boolean result =
!Comparing.equal(settings.getHost(), myHostField.getText()) || !Comparing.equal(Integer.toString(settings.getPort()), myPortField.getText())
|| !Comparing.equal(settings.isUseCustomPathToMmCfg(), myCustomPathCheckBox.isSelected());
final boolean flag = myCustomPathCheckBox.isSelected() &&
Comparing.equal(settings.getPathToMmCfg(), FileUtil.toSystemIndependentName(myPathToMmCfgTextField.getText()));
if (!result && flag) {
return true;
}
return result;
}
}