added a stacktrace line to the warning

This commit is contained in:
Dmitry Avdeev
2018-07-06 16:09:23 +03:00
parent 1d747426ba
commit 45b5e4a032
@@ -38,6 +38,8 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Optional;
import java.util.Set;
public class AbstractProgressIndicatorBase extends UserDataHolderBase implements ProgressIndicatorStacked {
@@ -181,7 +183,15 @@ public class AbstractProgressIndicatorBase extends UserDataHolderBase implements
@Override
public void setFraction(final double fraction) {
if (isIndeterminate()) {
LOG.warn("This progress indicator is indeterminate, this may lead to visual inconsistency. Please call setIndeterminate(false) before you start progress.");
StackTraceElement[] trace = new Throwable().getStackTrace();
Optional<StackTraceElement> first =
Arrays.stream(trace).filter(element -> !element.getClassName().startsWith("com.intellij.openapi.progress.util")).findFirst();
String message = "This progress indicator is indeterminate, this may lead to visual inconsistency. " +
"Please call setIndeterminate(false) before you start progress.";
if (first.isPresent()) {
message += "\n" + first.get();
}
LOG.warn(message);
setIndeterminate(false);
}
myFraction = fraction;