diff --git a/java_console/.idea/runConfigurations/Launcher_Auto.xml b/java_console/.idea/runConfigurations/Launcher_Auto.xml
index c46a03e234..6473762842 100644
--- a/java_console/.idea/runConfigurations/Launcher_Auto.xml
+++ b/java_console/.idea/runConfigurations/Launcher_Auto.xml
@@ -3,6 +3,7 @@
+
diff --git a/java_console/ui/src/com/rusefi/ui/config/IniFileModel.java b/java_console/ui/src/com/rusefi/ui/config/IniFileModel.java
index b1c6650f14..9dc73db5a1 100644
--- a/java_console/ui/src/com/rusefi/ui/config/IniFileModel.java
+++ b/java_console/ui/src/com/rusefi/ui/config/IniFileModel.java
@@ -2,6 +2,7 @@ package com.rusefi.ui.config;
import com.opensr5.io.IniFileReader;
import com.opensr5.io.RawIniFile;
+import org.jetbrains.annotations.Nullable;
import java.io.*;
import java.util.*;
@@ -20,8 +21,10 @@ public class IniFileModel {
private final static IniFileModel INSTANCE = new IniFileModel();
private String dialogId;
private String dialogUiName;
- private List fields = new ArrayList<>();
private Map dialogs = new TreeMap<>();
+ private Map allFields = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ // this is only used while reading model - TODO extract reader
+ private List fieldsOfCurrentDialog = new ArrayList<>();
public static void main(String[] args) {
System.out.println(IniFileModel.INSTANCE.dialogs);
@@ -49,14 +52,14 @@ public class IniFileModel {
}
private void finishDialog() {
- if (fields.isEmpty())
+ if (fieldsOfCurrentDialog.isEmpty())
return;
if (dialogUiName == null)
dialogUiName = dialogId;
- dialogs.put(dialogUiName, new DialogModel(dialogId, dialogUiName, fields));
+ dialogs.put(dialogUiName, new DialogModel(dialogId, dialogUiName, fieldsOfCurrentDialog));
dialogId = null;
- fields.clear();
+ fieldsOfCurrentDialog.clear();
}
private void handleLine(RawIniFile.Line line) {
@@ -83,12 +86,23 @@ public class IniFileModel {
private void handleField(LinkedList list) {
list.removeFirst(); // "field"
- String uiLabel = list.isEmpty() ? "" : list.removeFirst();
+ String uiFieldName = list.isEmpty() ? "" : list.removeFirst();
String key = list.isEmpty() ? null : list.removeFirst();
- fields.add(new DialogModel.Field(key, uiLabel));
- System.out.println("IniFileModel: Field label=[" + uiLabel + "] : key=[" + key + "]");
+ DialogModel.Field field = new DialogModel.Field(key, uiFieldName);
+ if (key != null) {
+ // UI labels do not have 'key'
+ allFields.put(key, field);
+ }
+ fieldsOfCurrentDialog.add(field);
+ System.out.println("IniFileModel: Field label=[" + uiFieldName + "] : key=[" + key + "]");
+ }
+
+ @Nullable
+ public DialogModel.Field getField(String key) {
+ DialogModel.Field field = allFields.get(key);
+ return field;
}
private void handleDialog(LinkedList list) {
diff --git a/java_console/ui/src/com/rusefi/ui/livedocs/LiveDocPanel.java b/java_console/ui/src/com/rusefi/ui/livedocs/LiveDocPanel.java
index 69ef714f5c..d17fe439f0 100644
--- a/java_console/ui/src/com/rusefi/ui/livedocs/LiveDocPanel.java
+++ b/java_console/ui/src/com/rusefi/ui/livedocs/LiveDocPanel.java
@@ -1,7 +1,6 @@
package com.rusefi.ui.livedocs;
import com.opensr5.ConfigurationImage;
-import com.rusefi.FileLog;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.config.Field;
import com.rusefi.config.generated.EngineState;
@@ -12,6 +11,8 @@ import com.rusefi.core.Sensor;
import com.rusefi.core.SensorCentral;
import com.rusefi.ldmp.*;
import com.rusefi.ldmp.generated.*;
+import com.rusefi.ui.config.DialogModel;
+import com.rusefi.ui.config.IniFileModel;
import com.rusefi.ui.livedocs.controls.Toolbox;
import com.rusefi.ui.util.UiUtils;
import com.rusefi.ui.widgets.DetachedSensor;
@@ -90,7 +91,7 @@ public class LiveDocPanel {
JLabel label = new JLabel("*");
label.setIcon(UiUtils.loadIcon("livedocs/setting.png"));
- label.setToolTipText("Configuration " + field.getName());
+ label.setToolTipText(getTooltipText(field.getName()));
result.actionsList.add(new RefreshActions() {
@Override
public void refresh(BinaryProtocol bp, byte[] response) {
@@ -137,6 +138,14 @@ public class LiveDocPanel {
return result;
}
+ private static String getTooltipText(String configurationFieldName) {
+ DialogModel.Field dialogField = IniFileModel.getInstance().getField(configurationFieldName);
+ if (dialogField == null) {
+ return "Configuration " + configurationFieldName;
+ }
+ return "Configuration " + dialogField.getUiName() + " (" + configurationFieldName + ")";
+ }
+
private static ActionPanel createIfRequestPanel(IfRequest request, Field[] values) {
Field conditionField = Field.findField(values, "", request.getVariable());