package net.sourceforge.pmd.eclipse.ui.views.ast; import net.sourceforge.pmd.eclipse.ui.PMDUiConstants; import net.sourceforge.pmd.eclipse.ui.model.FileRecord; import net.sourceforge.pmd.eclipse.ui.nls.StringKeys; import net.sourceforge.pmd.eclipse.ui.views.AbstractResourceView; import net.sourceforge.pmd.eclipse.ui.views.AbstractStructureInspectorPage; import net.sourceforge.pmd.eclipse.ui.views.actions.CollapseAllAction; import net.sourceforge.pmd.eclipse.ui.views.actions.ExpandAllAction; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.part.IPage; /** * * @author Brian Remedios */ public class ASTView extends AbstractResourceView { private ASTViewPage page; private Action toggleShowImportsAction; private Action toggleShowCommentsAction; private static final String ShowImports = "ASTView.showImports"; private static final String ShowComments = "ASTView.showComments"; public ASTView() { } static boolean showImports() { return getBoolUIPref(ShowImports); } static boolean showComments() { return getBoolUIPref(ShowComments); } protected String pageMessageId() { return StringKeys.VIEW_AST_DEFAULT_TEXT; } @Override protected String mementoFileId() { return PMDUiConstants.MEMENTO_AST_FILE; } @Override protected PageRec doCreatePage(IWorkbenchPart part) { FileRecord resourceRecord = getFileRecordFromWorkbenchPart(part); if (resourceRecord != null) { setupListener(resourceRecord); // creates a new ASTViewPage, when a Resource exists page = new ASTViewPage(part, resourceRecord); initPage(page); page.createControl(getPageBook()); makeActions(); addToolbarControls(); return new PageRec(part, page); } return null; } protected AbstractStructureInspectorPage getCurrentViewPage() { return getCurrentASTViewPage(); } public void showImports(boolean flag) { setUIPref(ShowImports, flag); page.showImports(flag); } public void showComments(boolean flag) { setUIPref(ShowComments, flag); page.showComments(flag); } /** * @return the currently displayed Page */ private ASTViewPage getCurrentASTViewPage() { IPage page = super.getCurrentPage(); if (!(page instanceof ASTViewPage)) return null; return (ASTViewPage) page; } private void makeActions() { toggleShowImportsAction = new Action() { public void run() { boolean show = !showImports(); setChecked(show); showImports(show); } }; toggleShowImportsAction.setText("Show imports"); toggleShowImportsAction.setChecked(showImports()); toggleShowCommentsAction = new Action() { public void run() { boolean show = !showComments(); setChecked(show); showComments(show); } }; toggleShowCommentsAction.setText("Show comments"); toggleShowCommentsAction.setChecked(showComments()); } private void addToolbarControls() { IActionBars aBars = getViewSite().getActionBars(); IToolBarManager manager = aBars.getToolBarManager(); manager.add(new ExpandAllAction(page.astViewer())); manager.add(new CollapseAllAction(page.astViewer())); addViewFilterOptions(aBars); } private void addViewFilterOptions(IActionBars aBars) { IMenuManager mmgr = aBars.getMenuManager(); mmgr.add(toggleShowImportsAction); mmgr.add(toggleShowCommentsAction); } }