blob: 0274e8d1100ca409841ef9a9619442ee015b92b1 [file] [log] [blame]
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();
}
}