use of com.intellij.openapi.ui.TextComponentAccessor in project intellij-plugins by JetBrains.
the class DartSdkUtil method initDartSdkAndDartiumControls.
public static void initDartSdkAndDartiumControls(@Nullable final Project project, @NotNull final ComboboxWithBrowseButton dartSdkPathComponent, @NotNull final JBLabel versionLabel, @NotNull final ComboboxWithBrowseButton dartiumPathComponent, @NotNull final Computable<ChromeSettings> currentDartiumSettingsRetriever, @NotNull final JButton dartiumSettingsButton, @NotNull final Computable<Boolean> isResettingControlsComputable) {
dartSdkPathComponent.getComboBox().setEditable(true);
addKnownPathsToCombo(dartSdkPathComponent.getComboBox(), DART_SDK_KNOWN_PATHS, DartSdkUtil::isDartSdkHome);
if (SystemInfo.isMac && getItemFromCombo(dartSdkPathComponent.getComboBox()).isEmpty()) {
// no need to check folder presence here; even if it doesn't exist - that's the best we can suggest
dartSdkPathComponent.getComboBox().getEditor().setItem("/usr/local/opt/dart/libexec");
}
dartiumPathComponent.getComboBox().setEditable(true);
addKnownPathsToCombo(dartiumPathComponent.getComboBox(), DARTIUM_KNOWN_PATHS, path -> !path.isEmpty() && new File(path).exists());
if (SystemInfo.isMac && getItemFromCombo(dartiumPathComponent.getComboBox()).isEmpty()) {
// Dartium path is optional, so set it only if valid
if (new File("/usr/local/opt/dart/Chromium.app").isDirectory()) {
dartiumPathComponent.getComboBox().getEditor().setItem("/usr/local/opt/dart/Chromium.app");
}
}
final String sdkHomePath = getItemFromCombo(dartSdkPathComponent.getComboBox());
versionLabel.setText(sdkHomePath.isEmpty() ? "" : getSdkVersion(sdkHomePath));
final TextComponentAccessor<JComboBox> textComponentAccessor = new TextComponentAccessor<JComboBox>() {
@Override
public String getText(final JComboBox component) {
return getItemFromCombo(component);
}
@Override
public void setText(@NotNull final JComboBox component, @NotNull final String text) {
if (!text.isEmpty() && !isDartSdkHome(text)) {
final String probablySdkPath = text + "/dart-sdk";
if (isDartSdkHome(probablySdkPath)) {
component.getEditor().setItem(FileUtilRt.toSystemDependentName(probablySdkPath));
return;
}
}
component.getEditor().setItem(FileUtilRt.toSystemDependentName(text));
}
};
final ComponentWithBrowseButton.BrowseFolderActionListener<JComboBox> browseFolderListener = new ComponentWithBrowseButton.BrowseFolderActionListener<>("Select Dart SDK path", null, dartSdkPathComponent, project, FileChooserDescriptorFactory.createSingleFolderDescriptor(), textComponentAccessor);
dartSdkPathComponent.addActionListener(browseFolderListener);
dartiumPathComponent.addBrowseFolderListener("Select Dartium browser path", null, project, FileChooserDescriptorFactory.createSingleFileOrExecutableAppDescriptor(), TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT);
final JTextComponent editorComponent = (JTextComponent) dartSdkPathComponent.getComboBox().getEditor().getEditorComponent();
editorComponent.getDocument().addDocumentListener(new DocumentAdapter() {
@Override
protected void textChanged(final DocumentEvent e) {
final String sdkHomePath = getItemFromCombo(dartSdkPathComponent.getComboBox());
versionLabel.setText(sdkHomePath.isEmpty() ? "" : getSdkVersion(sdkHomePath));
if (!isResettingControlsComputable.compute() && isDartSdkHome(sdkHomePath)) {
final String dartiumPath = DartiumUtil.getDartiumPathForSdk(sdkHomePath);
if (dartiumPath != null) {
dartiumPathComponent.getComboBox().getEditor().setItem(FileUtilRt.toSystemDependentName(dartiumPath));
}
}
}
});
dartiumSettingsButton.addActionListener(e -> ShowSettingsUtil.getInstance().editConfigurable(dartiumSettingsButton, currentDartiumSettingsRetriever.compute().createConfigurable()));
// we decided to save one line in settings and always use Dartium in checked mode
//checkedModeCheckBox.addActionListener(new ActionListener() {
// public void actionPerformed(final ActionEvent e) {
// DartiumUtil.setCheckedMode(currentDartiumSettingsRetriever.compute().getEnvironmentVariables(), checkedModeCheckBox.isSelected());
// }
//});
}
Aggregations