/******************************************************************************* * Copyright (c) 2012 Marc-Andre Laperle and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marc-Andre Laperle - initial API and implementation *******************************************************************************/ package org.eclipse.koneki.ldt.ui.internal.editor.navigation; import java.util.ArrayList; import org.eclipse.dltk.core.Flags; import org.eclipse.dltk.core.IMember; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.core.ModelException; import org.eclipse.dltk.internal.ui.editor.IScriptEditor; import org.eclipse.dltk.internal.ui.editor.ScriptOutlinePage; import org.eclipse.dltk.ui.DLTKPluginImages; import org.eclipse.dltk.ui.actions.MemberFilterActionGroup; import org.eclipse.dltk.ui.viewsupport.AbstractModelElementFilter; import org.eclipse.dltk.ui.viewsupport.MemberFilterAction; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.Viewer; import org.eclipse.koneki.ldt.ui.internal.Activator; import org.eclipse.ui.IActionBars; public class LuaOutlinePage extends ScriptOutlinePage { public LuaOutlinePage(IScriptEditor editor, IPreferenceStore store) { super(editor, store); } private static class LocalFunctionFilter extends AbstractModelElementFilter { public String getFilteringType() { return "LocalFunctionFilter"; //$NON-NLS-1$ } public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof IMember) { IMember member = (IMember) element; try { if (member.getElementType() == IModelElement.METHOD && Flags.isPrivate(member.getFlags())) { return false; } } catch (ModelException e) { Activator.logError(Messages.MemberFilterActionGroup_hide_local_functions_error, e); } } return true; } } @Override protected void registerSpecialToolbarActions(IActionBars actionBars) { IToolBarManager toolBarManager = actionBars.getToolBarManager(); MemberFilterActionGroup memberFilterActionGroup = new MemberFilterActionGroup(fOutlineViewer, fStore); ArrayList<MemberFilterAction> actions = new ArrayList<MemberFilterAction>(1); // Hide local functions String title = Messages.MemberFilterActionGroup_hide_local_functions_label; LocalFunctionFilter filter = new LocalFunctionFilter(); MemberFilterAction hideLocalFunctionsAction = new MemberFilterAction(memberFilterActionGroup, title, filter, "", true); //$NON-NLS-1$ hideLocalFunctionsAction.setDescription(Messages.MemberFilterActionGroup_hide_local_functions_description); hideLocalFunctionsAction.setToolTipText(Messages.MemberFilterActionGroup_hide_local_functions_tooltip); DLTKPluginImages.setLocalImageDescriptors(hideLocalFunctionsAction, "filter_methods.gif"); //$NON-NLS-1$ actions.add(hideLocalFunctionsAction); MemberFilterAction[] filterActions = (MemberFilterAction[]) actions.toArray(new MemberFilterAction[actions.size()]); memberFilterActionGroup.setActions(filterActions); memberFilterActionGroup.contributeToToolBar(toolBarManager); } }