/*=============================================================================#
# 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.statet.r.internal.ui.editors;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.SearchPattern;
import de.walware.ecommons.ltk.core.model.IModelElement;
import de.walware.ecommons.ltk.core.model.IModelElement.Filter;
import de.walware.ecommons.ltk.ui.sourceediting.QuickOutlineInformationControl;
import de.walware.ecommons.ui.content.ITextElementFilter;
import de.walware.ecommons.ui.content.TextElementFilter;
import de.walware.statet.r.core.model.IRElement;
import de.walware.statet.r.core.model.RModel;
import de.walware.statet.r.ui.RLabelProvider;
import de.walware.statet.r.ui.sourceediting.ROpenDeclaration;
import de.walware.statet.r.ui.util.RNameSearchPattern;
public class RQuickOutlineInformationControl extends QuickOutlineInformationControl {
private class ContentFilter implements IModelElement.Filter {
@Override
public boolean include(final IModelElement element) {
switch (element.getElementType()) {
case IRElement.R_ARGUMENT:
return false;
default:
return true;
}
};
}
private final ContentFilter contentFilter= new ContentFilter();
public RQuickOutlineInformationControl(final Shell parent, final String commandId) {
super(parent, commandId, 1, new ROpenDeclaration());
}
@Override
public String getModelTypeId() {
return RModel.R_TYPE_ID;
}
@Override
protected Filter getContentFilter() {
return this.contentFilter;
}
@Override
protected ITextElementFilter createNameFilter() {
return new TextElementFilter() {
@Override
protected SearchPattern createSearchPattern() {
return new RNameSearchPattern();
}
};
}
@Override
protected void configureViewer(final TreeViewer viewer) {
super.configureViewer(viewer);
viewer.setLabelProvider(new RLabelProvider());
}
}