From cc8bbc1d9a728a707d65f3a3eb28534b97456ecc Mon Sep 17 00:00:00 2001 From: "Liana.Bakradze" Date: Tue, 14 Feb 2017 13:50:43 +0300 Subject: [PATCH] PY-22561 Data View: auto-update doesn't work with slices --- .../python/debugger/PyDebugValue.java | 4 ++++ .../debugger/array/AsyncArrayTableModel.java | 10 +++++++- .../containerview/PyDataViewerPanel.java | 23 +++++++++++++++---- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java b/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java index 95158de36ea4..09444ad6d618 100644 --- a/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java +++ b/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java @@ -355,4 +355,8 @@ public class PyDebugValue extends XNamedValue { public String getTypeQualifier() { return myTypeQualifier; } + + public boolean isTemporary() { + return myTempName != null; + } } diff --git a/python/src/com/jetbrains/python/debugger/array/AsyncArrayTableModel.java b/python/src/com/jetbrains/python/debugger/array/AsyncArrayTableModel.java index cc13cc3cf377..ddfe22aa9733 100644 --- a/python/src/com/jetbrains/python/debugger/array/AsyncArrayTableModel.java +++ b/python/src/com/jetbrains/python/debugger/array/AsyncArrayTableModel.java @@ -49,7 +49,7 @@ public class AsyncArrayTableModel extends AbstractTableModel { private final ExecutorService myExecutorService = ConcurrencyUtil.newSingleThreadExecutor("Python async table"); - private final PyDebugValue myDebugValue; + private PyDebugValue myDebugValue; private final DataViewStrategy myStrategy; private LoadingCache, ListenableFuture> myChunkCache = CacheBuilder.newBuilder().build( new CacheLoader, ListenableFuture>() { @@ -256,4 +256,12 @@ public class AsyncArrayTableModel extends AbstractTableModel { public void invalidateCache() { myChunkCache.invalidateAll(); } + + public PyDebugValue getDebugValue() { + return myDebugValue; + } + + public void setDebugValue(PyDebugValue debugValue) { + myDebugValue = debugValue; + } } \ No newline at end of file diff --git a/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java b/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java index 188df3004300..2d3f8ff1cf89 100644 --- a/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java +++ b/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java @@ -86,11 +86,24 @@ public class PyDataViewerPanel extends JPanel { private void updateModel() { AsyncArrayTableModel model = getModel(); - if (model != null) { - model.invalidateCache(); - if (isShowing()) { - model.fireTableDataChanged(); - } + if (model == null) { + return; + } + model.invalidateCache(); + updateDebugValue(model); + if (isShowing()) { + model.fireTableDataChanged(); + } + } + + private void updateDebugValue(@NotNull AsyncArrayTableModel model) { + PyDebugValue oldValue = model.getDebugValue(); + if (!oldValue.isTemporary()) { + return; + } + PyDebugValue newValue = getDebugValue(mySliceTextField.getText()); + if (newValue != null) { + model.setDebugValue(newValue); } }