diff options
Diffstat (limited to 'dsf')
3 files changed, 23 insertions, 7 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/SyncVariableDataAccess.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/SyncVariableDataAccess.java index bfbf41e93b1..049af3a6756 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/SyncVariableDataAccess.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/SyncVariableDataAccess.java @@ -374,11 +374,13 @@ public class SyncVariableDataAccess { private IFormattedDataDMContext fDmc; private String fFormatId; + private boolean fEditable; - public GetFormattedValueValueQuery(IFormattedDataDMContext dmc, String formatId) { + public GetFormattedValueValueQuery(IFormattedDataDMContext dmc, String formatId, boolean editable) { super(); fDmc = dmc; fFormatId = formatId; + fEditable = editable; } @Override @@ -413,10 +415,7 @@ public class SyncVariableDataAccess { service.getFormattedExpressionValue(formDmc, new DataRequestMonitor<FormattedValueDMData>(session.getExecutor(), rm) { @Override protected void handleSuccess() { - /* - * All good set return value. - */ - rm.setData(getData().getFormattedValue()); + rm.setData(fEditable ? getData().getEditableValue() : getData().getFormattedValue()); rm.done(); } }); @@ -424,6 +423,14 @@ public class SyncVariableDataAccess { } public String getFormattedValue(Object element, String formatId) { + return getValue(element, formatId, false); + } + + public String getEditableValue(Object element, String formatId) { + return getValue(element, formatId, true); + } + + public String getValue(Object element, String formatId, boolean editable) { /* * Get the DMC and the session. If element is not an register DMC, or @@ -439,7 +446,7 @@ public class SyncVariableDataAccess { * guard against RejectedExecutionException, because * DsfSession.getSession() above would only return an active session. */ - GetFormattedValueValueQuery query = new GetFormattedValueValueQuery(dmc, formatId); + GetFormattedValueValueQuery query = new GetFormattedValueValueQuery(dmc, formatId, editable); session.getExecutor().execute(query); /* diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableCellModifier.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableCellModifier.java index aea2966637b..b390e2aefd7 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableCellModifier.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableCellModifier.java @@ -90,7 +90,7 @@ public class VariableCellModifier extends WatchExpressionCellModifier { formatId = IFormattedValues.NATURAL_FORMAT; } - String value = fDataAccess.getFormattedValue(element, formatId); + String value = fDataAccess.getEditableValue(element, formatId); if (value == null) { return "..."; //$NON-NLS-1$ diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IFormattedValues.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IFormattedValues.java index adea8d9d25d..30c54c5067f 100644 --- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IFormattedValues.java +++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IFormattedValues.java @@ -114,15 +114,24 @@ public interface IFormattedValues extends IDsfService { public static class FormattedValueDMData implements IDMData { private final String fValue; + private String fEditableValue; public FormattedValueDMData(String value) { fValue = value; + fEditableValue = value; } public String getFormattedValue() { return fValue; } + public void setEditableValue(String editableValue) { + fEditableValue = editableValue; + } + + public String getEditableValue() { + return fEditableValue; + } } }
\ No newline at end of file |