/******************************************************************************* * Copyright (c) 2013 EclipseSource 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: * EclipseSource - initial API and implementation ******************************************************************************/ package com.eclipsesource.tabris.demos.ui; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.eclipse.swt.widgets.Composite; import com.eclipsesource.tabris.ui.PageData; public class SearchResultsPage extends BooksListPage { public static final String SEARCH_QUERY = "searchQuery"; private static class ContainsBookFilter implements BookFilter { private final String query; public ContainsBookFilter( String query ) { this.query = query; } public List<Book> filter( List<Book> books ) { final List<Book> result = new ArrayList<Book>(); for( Book book : books ) { if( contains( book.getTitle(), query ) ) { result.add( book ); } } return result; } private boolean contains( String title, String query ) { return Pattern.compile( Pattern.quote( query ), Pattern.CASE_INSENSITIVE ).matcher( title ).find(); } } @Override public void createContent( Composite parent, PageData data ) { String query = getData().get( SEARCH_QUERY, String.class ); setTitle( query ); setBookFilter( new ContainsBookFilter( query ) ); super.createContent( parent, data ); } }