public void inputChanged(Viewer v, Object oldInput, Object newInput) { if (oldInput != newInput) { if (newInput instanceof MethodResult) { consume((MethodResult) newInput); } else { root.clear(); final IJavaProject jp = view.getCurrentProject(); CheckFlowMarkerAndImageManager.getInstance().clearAll(jp != null ? jp.getProject() : null); } // System.out.println("Content changed: " + (oldInput == null ? "null" : // oldInput.hashCode()) // + " -> " + (newInput == null ? "null" : newInput.hashCode())); } }
@Override public void consume(final MethodResult res) { final IJavaProject jp = view.getCurrentProject(); final MethodInfoNode cur = new MethodInfoNode(root, res); cur.searchMatchingJavaElement(jp); if (!res.hasErrors()) { for (final FlowStmtResult fl : res.getStmtResults()) { final StmtInfoNode child = new StmtInfoNode(cur, fl); child.searchMatchingJavaElement(jp); for (final FlowStmtResultPart flpart : fl.getParts()) { final TreeNode part = new StmtPartNode(child, flpart); part.searchMatchingJavaElement(jp); } } } else { for (final FlowError ferr : res.getErrors()) { final FlowErrorNode fn = new FlowErrorNode(cur, ferr); fn.searchMatchingJavaElement(jp); } } }