blob: d6984b3a05a8df27fc5badf12cac5a5fbadc656e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2006 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:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.wst.xsd.ui.internal.search.actions;
import java.util.List;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.Assert;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.wst.xsd.ui.internal.search.SearchMessages;
public class ReferencesSearchGroup extends SearchGroup {
protected static final String MENU_TEXT= SearchMessages.group_references;
protected IEditorPart fEditor;
private IWorkbenchSite fSite;
private IActionBars fActionBars;
// private String fGroupId;
protected FindAction fFindReferencesAction;
protected FindAction fFindReferencesInProjectAction;
protected FindAction fFindReferencesInWorkingSetAction;
/**
* Note: This constructor is for internal use only. Clients should not call this constructor.
* @param editor
*/
public ReferencesSearchGroup(IEditorPart editor) {
Assert.isNotNull(editor);
fEditor= editor;
fSite= fEditor.getSite();
initialize();
}
protected void initialize() {
// fGroupId= ITextEditorActionConstants.GROUP_FIND;
fFindReferencesAction= new FindReferencesAction(fEditor);
fFindReferencesAction.setText(SearchMessages.Search_FindDeclarationAction_label);
fFindReferencesAction.setActionDefinitionId("SEARCH_REFERENCES_IN_WORKSPACE");
//fEditor.setAction("SearchReferencesInWorkspace", fFindReferencesAction); //$NON-NLS-1$
fFindReferencesInProjectAction= new FindReferencesInProjectAction(fEditor);
fFindReferencesInProjectAction.setText(SearchMessages.Search_FindDeclarationsInProjectAction_label);
fFindReferencesInProjectAction.setActionDefinitionId("SEARCH_REFERENCES_IN_PROJECT");
//fEditor.setAction("SearchReferencesInProject", fFindReferencesInProjectAction); //$NON-NLS-1$
fFindReferencesInWorkingSetAction= new FindReferencesInWorkingSetAction(fEditor);
fFindReferencesInWorkingSetAction.setText(SearchMessages.Search_FindDeclarationsInWorkingSetAction_label);
fFindReferencesInWorkingSetAction.setActionDefinitionId(".SEARCH_REFERENCES_IN_WORKING_SET");
//fEditor.setAction("SearchReferencesInWorkingSet", fFindReferencesInWorkingSetAction); //$NON-NLS-1$
}
/*
private void registerAction(SelectionDispatchAction action, ISelectionProvider provider, ISelection selection) {
action.update(selection);
provider.addSelectionChangedListener(action);
}*/
/**
* Note: this method is for internal use only. Clients should not call this method.
*
* @return the menu label
*/
protected String getName() {
return MENU_TEXT;
}
public void fillActions(List list)
{
list.add(fFindReferencesAction);
//list.add(fFindReferencesInHierarchyAction);
list.add(fFindReferencesInProjectAction);
list.add(new Separator());
list.add(fFindReferencesInWorkingSetAction);
}
/* (non-Javadoc)
* Method declared in ActionGroup
*/
public void fillActionBars(IActionBars actionBars) {
Assert.isNotNull(actionBars);
super.fillActionBars(actionBars);
fActionBars= actionBars;
updateGlobalActionHandlers();
}
// private void addAction(IAction action, IMenuManager manager) {
// if (action.isEnabled()) {
// manager.add(action);
// }
// }
/*
private void addWorkingSetAction(IWorkingSet[] workingSets, IMenuManager manager) {
FindAction action;
if (fEditor != null)
action= new WorkingSetFindAction(fEditor, new FindReferencesInWorkingSetAction(fEditor, workingSets), SearchUtil.toString(workingSets));
else
action= new WorkingSetFindAction(fSite, new FindReferencesInWorkingSetAction(fSite, workingSets), SearchUtil.toString(workingSets));
action.update(getContext().getSelection());
addAction(action, manager);
}
*/
/* (non-Javadoc)
* Method declared on ActionGroup.
*/
public void fillContextMenu(IMenuManager manager) {
/*
MenuManager javaSearchMM= new MenuManager(getName(), IContextMenuConstants.GROUP_SEARCH);
addAction(fFindReferencesAction, javaSearchMM);
addAction(fFindReferencesInProjectAction, javaSearchMM);
addAction(fFindReferencesInHierarchyAction, javaSearchMM);
javaSearchMM.add(new Separator());
Iterator iter= SearchUtil.getLRUWorkingSets().sortedIterator();
while (iter.hasNext()) {
addWorkingSetAction((IWorkingSet[]) iter.next(), javaSearchMM);
}
addAction(fFindReferencesInWorkingSetAction, javaSearchMM);
if (!javaSearchMM.isEmpty())
manager.appendToGroup(fGroupId, javaSearchMM);
*/
}
/*
* Overrides method declared in ActionGroup
*/
public void dispose() {
ISelectionProvider provider= fSite.getSelectionProvider();
if (provider != null) {
disposeAction(fFindReferencesAction, provider);
disposeAction(fFindReferencesInProjectAction, provider);
// disposeAction(fFindReferencesInHierarchyAction, provider);
disposeAction(fFindReferencesInWorkingSetAction, provider);
}
fFindReferencesAction= null;
fFindReferencesInProjectAction= null;
//fFindReferencesInHierarchyAction= null;
fFindReferencesInWorkingSetAction= null;
updateGlobalActionHandlers();
super.dispose();
}
private void updateGlobalActionHandlers() {
if (fActionBars != null) {
// fActionBars.setGlobalActionHandler(JdtActionConstants.FIND_REFERENCES_IN_WORKSPACE, fFindReferencesAction);
// fActionBars.setGlobalActionHandler(JdtActionConstants.FIND_REFERENCES_IN_PROJECT, fFindReferencesInProjectAction);
// fActionBars.setGlobalActionHandler(JdtActionConstants.FIND_REFERENCES_IN_HIERARCHY, fFindReferencesInHierarchyAction);
// fActionBars.setGlobalActionHandler(JdtActionConstants.FIND_REFERENCES_IN_WORKING_SET, fFindReferencesInWorkingSetAction);
}
}
private void disposeAction(ISelectionChangedListener action, ISelectionProvider provider) {
if (action != null)
provider.removeSelectionChangedListener(action);
}
}