public void appendMessages(List<AnalyzedMessage> newMessages) { if (newMessages.size() == 0) return; List<AnalyzedMessage> oldMessages = new ArrayList<>(messages); if (messageFilter != null) newMessages = CUtils.filter(newMessages, messageFilter); messages.addAll(newMessages); List<StyleNode> msgNodes = CUtils.map( newMessages, m -> { StyleNode n = builder.buildMessage(m); n.updateTree(NStyleUtils.getTemplateManager()); return n; }); rootMessageStyleNodes.addAll(msgNodes); List<StyleNode> appendNodes = new ArrayList<>(); List<StyleNode> removeNodes = new ArrayList<>(); if (oldMessages.size() > 0) { appendNodes.add(builder.buildTemplate("message_separator")); if (newMessages.size() > 0) { if (newMessageSeparatorNode != null) removeNodes.add(newMessageSeparatorNode); newMessageSeparatorNode = builder.buildTemplate("new_message_separator"); if (newMessageSeparatorNode != null) appendNodes.add(newMessageSeparatorNode); } } for (int i = 0; i < msgNodes.size(); i++) { StyleNode n = msgNodes.get(i); appendNodes.add(n); if (i < msgNodes.size() - 1) appendNodes.add(builder.buildTemplate("message_separator")); } if (endMarginTemplateId != null) { if (endMarginNode != null) removeNodes.add(endMarginNode); endMarginNode = builder.buildTemplate(endMarginTemplateId); appendNodes.add(endMarginNode); } runWithNoRedraw( () -> { CUtils.forEach(removeNodes, node -> node.getParent().removeChild(node)); getRootStyleNode().addChildAll(appendNodes); try { getRootStyleNode().updateTree(NStyleUtils.getTemplateManager()); } catch (RuntimeException e) { DialogUtils.openError(null, "Script error", e.toString()); } }); }
private <E extends RuntimeException> void assertException( Class<E> type, RuntimeException e, String message) { assertEquals(type, e.getClass()); assertEquals(Exception.class, e.getCause().getClass()); assertEquals(message, e.getCause().getMessage()); }