public static ITextViewer getViewer(IPage page) { if(page == null){ return null; } if(page instanceof TextConsolePage) { return ((TextConsolePage)page).getViewer(); } if(page.getClass().equals(MessagePage.class)){ // empty page placeholder return null; } try { /* * org.eclipse.cdt.internal.ui.buildconsole.BuildConsolePage does not * extend TextConsolePage, so we get access to the viewer with dirty tricks */ Method method = page.getClass().getDeclaredMethod("getViewer", (Class<?>[])null); method.setAccessible(true); return (ITextViewer) method.invoke(page, (Object[])null); } catch (Exception e) { // AnyEditToolsPlugin.logError("Can't get page viewer from the console page", e); } return null; }