[ui] improves message selection in the error dialog (IDEA-200298)

It looks for a new cluster first, then for an unread message in an existing cluster, then for an unreported cluster.
This commit is contained in:
Roman Shevchenko
2018-10-11 15:07:44 +02:00
parent aadd3cd596
commit ab85576eb1
@@ -113,7 +113,7 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene
myAcceptedNotices = ContainerUtil.newLinkedHashSet(StringUtil.split(rawValue, ACCEPTED_NOTICES_SEPARATOR));
updateMessages();
selectMessage(defaultMessage);
myIndex = selectMessage(defaultMessage);
updateControls();
messagePool.addListener(this);
@@ -145,15 +145,26 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene
}
}
private void selectMessage(@Nullable LogMessage defaultMessage) {
for (int i = 0; i < myMessageClusters.size(); i++) {
for (AbstractMessage message : myMessageClusters.get(i).messages) {
if (defaultMessage != null && message == defaultMessage || defaultMessage == null && !message.isRead()) {
myIndex = i;
return;
}
private int selectMessage(@Nullable LogMessage defaultMessage) {
if (defaultMessage != null) {
for (int i = 0; i < myMessageClusters.size(); i++) {
if (myMessageClusters.get(i).messages.contains(defaultMessage)) return i;
}
}
else {
for (int i = 0; i < myMessageClusters.size(); i++) {
if (!myMessageClusters.get(i).messages.get(0).isRead()) return i;
}
for (int i = 0; i < myMessageClusters.size(); i++) {
for (AbstractMessage message : myMessageClusters.get(i).messages) {
if (!message.isRead()) return i;
}
}
for (int i = 0; i < myMessageClusters.size(); i++) {
if (!myMessageClusters.get(i).messages.get(0).isSubmitted()) return i;
}
}
return 0;
}
@Nullable