[javafx] Use UI DSL for JavaFxSettingsConfigurable

#IDEA-358971 Fixed

GitOrigin-RevId: 0856521e2c18391f37c691672aa29638da00b759
This commit is contained in:
Louis Vignier
2024-09-09 14:42:04 +02:00
committed by intellij-monorepo-bot
parent 5c06f74975
commit 7e0e2a8a37
3 changed files with 42 additions and 69 deletions

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.plugins.javaFX.JavaFxSettingsConfigurable.JavaFxConfigurablePanel">
<grid id="27dc6" binding="myWholePanel" layout-manager="GridBagLayout">
<constraints>
<xy x="20" y="389" width="500" height="36"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="81eb4" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<gridbag weightx="0.0" weighty="0.0"/>
</constraints>
<properties>
<labelFor value="539ac"/>
<text resource-bundle="messages/JavaFXBundle" key="javafx.settings.configurable.path.to.scenebuilder"/>
</properties>
</component>
<vspacer id="439f6">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
<gridbag weightx="0.0" weighty="1.0"/>
</constraints>
</vspacer>
<component id="539ac" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="myPathField">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<gridbag weightx="1.0" weighty="0.0"/>
</constraints>
<properties/>
</component>
</children>
</grid>
</form>

View File

@@ -7,18 +7,14 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public final class JavaFxSettingsConfigurable implements SearchableConfigurable, Configurable.NoScroll {
private final JavaFxSettings mySettings;
private JavaFxConfigurablePanel myPanel;
private JavaFxSettingsConfigurableUi myPanel;
public JavaFxSettingsConfigurable() {
mySettings = JavaFxSettings.getInstance();
@@ -35,9 +31,9 @@ public final class JavaFxSettingsConfigurable implements SearchableConfigurable,
}
@Override
public @Nullable JComponent createComponent() {
myPanel = new JavaFxConfigurablePanel();
return myPanel.myWholePanel;
public JComponent createComponent() {
myPanel = new JavaFxSettingsConfigurableUi();
return myPanel.getPanel();
}
@Override
@@ -71,30 +67,4 @@ public final class JavaFxSettingsConfigurable implements SearchableConfigurable,
descriptor.setDescription(JavaFXBundle.message("javafx.settings.configurable.scene.builder.configuration.description"));
return descriptor;
}
public static final class JavaFxConfigurablePanel {
private TextFieldWithBrowseButton myPathField;
private JPanel myWholePanel;
public JavaFxConfigurablePanel() {
myPathField.addBrowseFolderListener(null, createSceneBuilderDescriptor());
}
private void reset(JavaFxSettings settings) {
final String pathToSceneBuilder = settings.getPathToSceneBuilder();
if (pathToSceneBuilder != null) {
myPathField.setText(FileUtil.toSystemDependentName(pathToSceneBuilder));
}
}
private void apply(JavaFxSettings settings) {
settings.setPathToSceneBuilder(FileUtil.toSystemIndependentName(myPathField.getText().trim()));
}
private boolean isModified(JavaFxSettings settings) {
final String pathToSceneBuilder = settings.getPathToSceneBuilder();
return !Comparing.strEqual(FileUtil.toSystemIndependentName(myPathField.getText().trim()),
pathToSceneBuilder != null ? pathToSceneBuilder.trim() : null);
}
}
}

View File

@@ -0,0 +1,38 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.javaFX
import com.intellij.openapi.ui.TextFieldWithBrowseButton
import com.intellij.openapi.util.Comparing
import com.intellij.openapi.util.io.FileUtil
import com.intellij.ui.dsl.builder.COLUMNS_LARGE
import com.intellij.ui.dsl.builder.columns
import com.intellij.ui.dsl.builder.panel
class JavaFxSettingsConfigurableUi {
lateinit var pathField: TextFieldWithBrowseButton
var panel = panel {
row(JavaFXBundle.message("javafx.settings.configurable.path.to.scenebuilder")) {
pathField = textFieldWithBrowseButton(
JavaFxSettingsConfigurable.createSceneBuilderDescriptor()
)
.columns(COLUMNS_LARGE)
.component
}
}
fun reset(settings: JavaFxSettings) {
val pathToSceneBuilder = settings.pathToSceneBuilder
if (pathToSceneBuilder != null) {
pathField.setText(FileUtil.toSystemDependentName(pathToSceneBuilder))
}
}
fun apply(settings: JavaFxSettings) {
settings.pathToSceneBuilder = FileUtil.toSystemIndependentName(pathField.getText().trim())
}
fun isModified(settings: JavaFxSettings): Boolean {
val pathToSceneBuilder = settings.pathToSceneBuilder
return !Comparing.strEqual(pathToSceneBuilder?.trim(), FileUtil.toSystemIndependentName(pathField.getText().trim()))
}
}