/******************************************************************************* * Copyright (c) 2008 Pierre-Antoine Grégoire. * 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: * Pierre-Antoine Grégoire - initial API and implementation *******************************************************************************/ package org.org.eclipse.dws.ui.internal.search; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.search.ui.ISearchResult; import org.eclipse.search.ui.ISearchResultListener; import org.eclipse.search.ui.SearchResultEvent; import org.eclipse.search.ui.text.AbstractTextSearchViewPage; import org.eclipse.search.ui.text.MatchEvent; import org.eclipse.search.ui.text.RemoveAllEvent; import org.eclipse.swt.widgets.Composite; import org.org.eclipse.dws.ui.internal.views.MavenRepositoriesView; import org.org.eclipse.dws.ui.internal.views.MavenRepositoriesViewLabelProvider; import org.org.model.IModelItem; /** * The Class LibrarySearchResultPage. */ public class LibrarySearchResultPage extends AbstractTextSearchViewPage { /** The result listener. */ private ISearchResultListener resultListener; /** The double click listener. */ private IDoubleClickListener doubleClickListener; /** The provider. */ private LibrarySearchContentProvider provider; /** * Instantiates a new library search result page. */ public LibrarySearchResultPage() { super(AbstractTextSearchViewPage.FLAG_LAYOUT_TREE); setID(LibrarySearchResultPage.class.getName()); resultListener = new ISearchResultListener() { public void searchResultChanged(SearchResultEvent e) { handleSearchResultsChanged(e); } }; doubleClickListener = new IDoubleClickListener() { @SuppressWarnings("rawtypes") public void doubleClick(DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); Object obj = selection.getFirstElement(); if (obj instanceof IModelItem) { MavenRepositoriesView.showViewAndFocusOnElement((IModelItem) obj); } } }; } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#configureTableViewer(org.eclipse.jface.viewers.TableViewer) */ @Override protected void configureTableViewer(TableViewer viewer) { throw new UnsupportedOperationException("Why do you want a table viewer?"); } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#configureTreeViewer(org.eclipse.jface.viewers.TreeViewer) */ @Override protected void configureTreeViewer(TreeViewer viewer) { viewer.setUseHashlookup(true); viewer.setLabelProvider(new MavenRepositoriesViewLabelProvider()); LibrarySearchContentProvider provider = new LibrarySearchContentProvider(); viewer.setContentProvider(provider); this.provider = provider; } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#createTableViewer(org.eclipse.swt.widgets.Composite) */ @Override protected TableViewer createTableViewer(Composite parent) { TableViewer viewer = super.createTableViewer(parent); viewer.addDoubleClickListener(doubleClickListener); return viewer; } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#createTreeViewer(org.eclipse.swt.widgets.Composite) */ @Override protected TreeViewer createTreeViewer(Composite parent) { TreeViewer viewer = super.createTreeViewer(parent); viewer.addDoubleClickListener(doubleClickListener); return viewer; } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#getLabel() */ @Override public String getLabel() { return "Library Search Result"; } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#elementsChanged(java.lang.Object[]) */ @Override protected void elementsChanged(Object[] objects) { if (provider != null) { provider.elementsChanged(objects); } } /** * Handle search results changed. * * @param e * the e */ private synchronized void handleSearchResultsChanged(final SearchResultEvent e) { if (e instanceof MatchEvent) { // MatchEvent me = (MatchEvent) e; // postUpdate(me.getMatches()); } else if (e instanceof RemoveAllEvent) { clear(); } // viewer.refresh(); } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#setInput(org.eclipse.search.ui.ISearchResult, java.lang.Object) */ @Override public void setInput(ISearchResult search, Object viewState) { super.setInput(search, viewState); if (search != null) { search.addListener(resultListener); } } /** * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#clear() */ @Override protected void clear() { // provider.elementsChanged(new Object[] {}); } }