/*
* This software is Copyright 2005,2006,2007,2008 Langdale Consultants.
* Langdale Consultants can be contacted at: http://www.langdale.com.au
*/
package au.com.langdale.cimtoole.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWizard;
import org.eclipse.ui.part.PageBookView;
import au.com.langdale.cimtoole.wizards.SearchWizard;
import au.com.langdale.cimtoole.wizards.SearchWizard.Searchable;
import au.com.langdale.ui.util.WizardLauncher;
public class SearchAction extends WizardLauncher implements Runnable {
@Override
public void init(IWorkbenchWindow window) {
IViewPart view = window.getActivePage().findView("au.com.langdale.cimtoole.views.ProjectModelView");
if( view != null)
init(view);
}
@Override
protected IWorkbenchWizard createWizard() {
return new SearchWizard(getSearchArea());
}
private Searchable getSearchArea() {
Object part = getPart();
if( part instanceof PageBookView) {
part = ((PageBookView)part).getCurrentPage();
}
if (part instanceof Searchable) {
Searchable result = (Searchable) part;
if(result.getOntModel() != null)
return result;
}
return SearchWizard.EMPTY_AREA;
}
private void refresh() {
IAction action = getAction();
if(action != null)
action.setEnabled((getSearchArea() != SearchWizard.EMPTY_AREA));
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
getWindow().getWorkbench().getDisplay().asyncExec(this);
}
public void run() {
refresh();
}
}