blob: d2d9167b34aca4162d889daec82620a0010e0fe6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2008 Wind River Systems, IBM Corporation 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:
* Markus Schorn - initial API and implementation
*******************************************************************************/
package org.eclipse.search.ui.actions;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.search2.internal.ui.SearchMessages;
import org.eclipse.search2.internal.ui.text2.FindInFileActionDelegate;
import org.eclipse.search2.internal.ui.text2.FindInProjectActionDelegate;
import org.eclipse.search2.internal.ui.text2.FindInRecentScopeActionDelegate;
import org.eclipse.search2.internal.ui.text2.FindInWorkingSetActionDelegate;
import org.eclipse.search2.internal.ui.text2.FindInWorkspaceActionDelegate;
/**
* Action group that adds a sub-menu with text search actions to a context menu.
*
* @since 3.2
*/
public class TextSearchGroup extends ActionGroup {
private static final String CTX_MENU_ID= "org.eclipse.search.text.ctxmenu"; //$NON-NLS-1$
private String fAppendToGroup= ITextEditorActionConstants.GROUP_FIND;
private String fMenuText= SearchMessages.TextSearchGroup_submenu_text;
private FindInRecentScopeActionDelegate[] fActions;
/**
* Constructs a TextSearchGroup for adding actions to the context menu
* of the editor provided. The editor will be accessed for the purpose of
* determining the search string.
*
* @param editor the editor
*/
public TextSearchGroup(IEditorPart editor) {
createActions(editor);
}
/**
* Changes the text that is used for the submenu label. The default is
* "Search Text".
*
* @param text the text for the menu label.
*/
public void setMenuText(String text) {
fMenuText= text;
}
/**
* Changes the group where the submenu is appended to. The default is
* ITextEditorActionConstants.GROUP_FIND.
*
* @param groupID the group id to append to
*/
public void setAppendToGroup(String groupID) {
fAppendToGroup= groupID;
}
private void createActions(IEditorPart editor) {
fActions= new FindInRecentScopeActionDelegate[] {
new FindInWorkspaceActionDelegate(), new FindInProjectActionDelegate(), new FindInFileActionDelegate(), new FindInWorkingSetActionDelegate()};
for (FindInRecentScopeActionDelegate action : fActions) {
action.setActiveEditor(action, editor);
}
}
@Override
public void fillContextMenu(IMenuManager menu) {
MenuManager textSearchMM= new MenuManager(fMenuText, CTX_MENU_ID);
int i=0;
for (i= 0; i < fActions.length-1; i++) {
textSearchMM.add(fActions[i]);
}
textSearchMM.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
textSearchMM.add(new Separator());
textSearchMM.add(fActions[i]);
menu.appendToGroup(fAppendToGroup, textSearchMM);
}
}