package org.eclipse.platform.discovery.compatibility.internal.contributors.impl.searchparams; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import org.eclipse.core.runtime.Platform; | |
import org.eclipse.jface.layout.GridDataFactory; | |
import org.eclipse.platform.discovery.compatibility.internal.container.SearchPageContainer; | |
import org.eclipse.platform.discovery.compatibility.internal.contributors.impl.IdCalculator; | |
import org.eclipse.platform.discovery.compatibility.internal.readers.ISearchPageDescription; | |
import org.eclipse.platform.discovery.compatibility.internal.readers.impl.SearchPageParser; | |
import org.eclipse.platform.discovery.runtime.api.GroupingHierarchy; | |
import org.eclipse.platform.discovery.runtime.internal.model.descriptions.ISearchProviderDescription; | |
import org.eclipse.platform.discovery.ui.api.ISearchParametersUI; | |
import org.eclipse.platform.discovery.ui.api.ISearchParametersUI.IConsoleContext; | |
import org.eclipse.search.ui.ISearchPage; | |
import org.eclipse.search.ui.ISearchPageContainer; | |
import org.eclipse.swt.layout.GridLayout; | |
import org.eclipse.swt.widgets.Composite; | |
import org.eclipse.swt.widgets.Control; | |
import org.eclipse.ui.IViewPart; | |
import org.eclipse.ui.forms.widgets.FormToolkit; | |
import org.eclipse.ui.part.IPageSite; | |
public class SearchPageToSearchParamsUIAdapter implements ISearchParametersUI { | |
public static final String SEARCH_PAGE_INSTANCE = "searchPageInstance"; | |
public static final String SEARCH_PAGE_CONTAINER = "searchPageContainer"; | |
public static final String WORKBENCH_CONTEXT = "wbContext"; | |
private ISearchPage searchPage; | |
private ISearchPageContainer container; | |
private IConsoleContext consoleContext; | |
@Override | |
public void createUI(Composite parent, FormToolkit toolkit, IConsoleContext consoleContext) { | |
this.consoleContext = consoleContext; | |
parent.setLayout(new GridLayout(1, false)); | |
ISearchPageDescription pageDescription = getActivePage(consoleContext); | |
searchPage = pageDescription.getSearchPage(); | |
container = new SearchPageContainer(consoleContext ); | |
searchPage.setContainer(container); | |
searchPage.createControl(parent); | |
searchPage.setVisible(true); | |
Control control = searchPage.getControl(); | |
// if(control instanceof Composite) { | |
// toolkit.adapt((Composite)control); | |
// }else{ | |
// toolkit.adapt(control, false, false); | |
// } | |
GridDataFactory.defaultsFor(control).applyTo(control); | |
} | |
private ISearchPageDescription getActivePage(IConsoleContext consoleContext) { | |
String searchPageId = new IdCalculator().calculateSearchPageId(consoleContext.searchProvider().getId()); | |
ISearchPageDescription pageDescription = null; | |
for(ISearchPageDescription description: new SearchPageParser(Platform.getExtensionRegistry()).readContributions()) { | |
if(description.getId().equals(searchPageId)) { | |
pageDescription = description; | |
break; | |
} | |
} | |
if(pageDescription==null) { | |
throw new IllegalStateException("not found"); | |
} | |
return pageDescription; | |
} | |
@Override | |
public void searchProviderSelected(ISearchProviderDescription selectedProvider) { | |
} | |
@Override | |
public Map<Object, Object> getParameters() { | |
Map<Object, Object> params = new HashMap<Object, Object>(); | |
params.put(SEARCH_PAGE_INSTANCE, searchPage); | |
params.put(SEARCH_PAGE_CONTAINER, container); | |
WokbenchContext ctx = new WokbenchContext(); | |
ctx.pageSite = consoleContext.site(); | |
ctx.viewPart = consoleContext.consolePart(); | |
params.put(WORKBENCH_CONTEXT, ctx); | |
return params; | |
} | |
@Override | |
public String getKeyword() { | |
return null; | |
} | |
@Override | |
public GroupingHierarchy getGroupingHierarchy() { | |
return null; | |
} | |
@Override | |
public void showGroupingHierarchies(List<GroupingHierarchy> groupingHierarchies) { | |
} | |
public static class WokbenchContext { | |
public IViewPart viewPart; | |
public IPageSite pageSite; | |
} | |
@Override | |
public void dispose() { | |
searchPage.dispose(); | |
} | |
} |