Cleanup: NotNull/Nullable
[idea/community.git] / java / debugger / impl / src / com / intellij / debugger / memory / action / CalculateRetainedSizeAction.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.debugger.memory.action;
3
4 import com.intellij.debugger.engine.evaluation.EvaluateException;
5 import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
6 import com.intellij.debugger.memory.agent.MemoryAgent;
7 import com.intellij.debugger.memory.agent.MemoryAgentCapabilities;
8 import com.intellij.openapi.application.ApplicationManager;
9 import com.intellij.openapi.ui.messages.MessageDialog;
10 import com.intellij.util.ArrayUtil;
11 import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl;
12 import com.sun.jdi.ObjectReference;
13 import org.jetbrains.annotations.NotNull;
14
15 public class CalculateRetainedSizeAction extends MemoryAgentActionBase {
16   @Override
17   protected void perform(@NotNull EvaluationContextImpl evaluationContext,
18                          @NotNull ObjectReference reference,
19                          @NotNull XValueNodeImpl node) throws EvaluateException {
20     MemoryAgent memoryAgent = MemoryAgent.get(evaluationContext.getDebugProcess());
21     long size = memoryAgent.estimateObjectSize(evaluationContext, reference);
22     ApplicationManager.getApplication().invokeLater(
23       () -> new MessageDialog(node.getTree().getProject(), String.valueOf(size), "Size of the Object",
24                               ArrayUtil.EMPTY_STRING_ARRAY, 0, null, false)
25         .show());
26   }
27
28   @Override
29   protected boolean isEnabled(@NotNull MemoryAgentCapabilities agentCapabilities) {
30     return agentCapabilities.canEstimateObjectSize();
31   }
32 }