package com.google.jstestdriver.idea.execution.settings.ui;
import com.google.jstestdriver.idea.execution.settings.JstdRunSettings;
import com.intellij.ide.browsers.BrowserSelector;
import com.intellij.ide.browsers.WebBrowser;
import com.intellij.javascript.debugger.execution.JavaScriptDebugSettingsEditor;
import com.intellij.util.ui.SwingHelper;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
/**
* @author Sergey Simonchik
*/
public class JstdDebugSection extends AbstractRunSettingsSection {
private final BrowserSelector myBrowserSelector;
public JstdDebugSection() {
myBrowserSelector = new BrowserSelector(JavaScriptDebugSettingsEditor.BROWSER_CONDITION);
}
@NotNull
@Override
protected JComponent createComponent(@NotNull CreationContext creationContext) {
JPanel linePanel = SwingHelper.newHorizontalPanel(
Component.CENTER_ALIGNMENT,
new JLabel("Debug in"),
myBrowserSelector.getMainComponent(),
new JLabel(" if both browsers are captured.")
);
JPanel result = SwingHelper.newLeftAlignedVerticalPanel(
Box.createVerticalStrut(5),
new JLabel("Debugging is available in a local browser (Chrome or Firefox)"),
Box.createVerticalStrut(4),
new JLabel("captured by a local JsTestDriver server running in IDE."),
Box.createVerticalStrut(15),
SwingHelper.wrapWithoutStretch(linePanel)
);
return SwingHelper.wrapWithoutStretch(result);
}
@Override
public void resetFrom(@NotNull JstdRunSettings runSettings) {
myBrowserSelector.setSelected(runSettings.getPreferredDebugBrowser());
}
@Override
public void applyTo(@NotNull JstdRunSettings.Builder runSettingsBuilder) {
WebBrowser selectedBrowser = myBrowserSelector.getSelected();
if (selectedBrowser != null) {
runSettingsBuilder.setPreferredDebugBrowser(selectedBrowser);
}
}
}