live data: use human readable settings names fix #909

This commit is contained in:
rusefi 2019-08-26 20:58:40 -04:00
parent de173e9325
commit 726734ef74
3 changed files with 33 additions and 9 deletions

View File

@ -3,6 +3,7 @@
<option name="MAIN_CLASS_NAME" value="com.rusefi.Launcher" />
<module name="ui" />
<option name="PROGRAM_PARAMETERS" value="auto" />
<option name="VM_PARAMETERS" value="-Dinput_files_path=../firmware/tunerstudio" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@ -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<DialogModel.Field> fields = new ArrayList<>();
private Map<String, DialogModel> dialogs = new TreeMap<>();
private Map<String, DialogModel.Field> allFields = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// this is only used while reading model - TODO extract reader
private List<DialogModel.Field> 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<String> 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<String> list) {

View File

@ -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());