/*=============================================================================#
# Copyright (c) 2013-2016 Stephan Wahlbrink (WalWare.de) 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:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.ecommons.workbench.search.ui;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.search.ui.text.Match;
public abstract class TextSearchResultContentProvider<E, M extends Match, V extends StructuredViewer>
implements IStructuredContentProvider {
protected static final Object[] NO_ELEMENTS= new Object[0];
private final ExtTextSearchResultPage page;
private ExtTextSearchResult<E, M> input;
private final V viewer;
protected boolean active;
public TextSearchResultContentProvider(final ExtTextSearchResultPage page, final V viewer) {
this.page= page;
this.viewer= viewer;
}
@Override
public void dispose() {
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
assert (this.viewer == viewer);
this.input= (ExtTextSearchResult<E, M>) newInput;
reset();
}
protected void reset() {
this.active= false;
}
protected ExtTextSearchResultPage getPage() {
return this.page;
}
protected V getViewer() {
return this.viewer;
}
protected ExtTextSearchResult<E, M> getInput() {
return this.input;
}
protected int getElementLimit() {
final Integer limit= getPage().getElementLimit();
if (limit == null || limit.intValue() < 0) {
return Integer.MAX_VALUE;
}
return limit;
}
public abstract void elementsChanged(final Object[] elements);
public void clear() {
this.viewer.refresh();
}
}