com.google.gwt.search.client.SearchControlOptions.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.search.client.SearchControlOptions.java

Source

/*
 * Copyright 2008 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.search.client;

import com.google.gwt.search.client.impl.GdrawOptions;
import com.google.gwt.search.client.impl.GsearcherOptions;
import com.google.gwt.core.client.GWT;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Used to configure a SearchControl.
 */
public final class SearchControlOptions {

    final GdrawOptions drawOptions = GWT.create(GdrawOptions.class);

    /**
     * Maintain order in which the Search objects are added.
     */
    final List<Search> searchers = new ArrayList<Search>();

    /**
     * Associate Search objects with options objects.
     */
    final Map<Search, GsearcherOptions> searcherOptions = new HashMap<Search, GsearcherOptions>();

    /**
     * The last value set by a call to
     * {@link SearchControlOptions#setKeepLabel(java.lang.String)}. It is an
     * Object because it can be a String or a {@link KeepLabel}.
     */
    Object keepLabel;

    /**
     * The last value set by a calls to {@link #setLinkTarget}.
     */
    LinkTarget linkTarget;

    /**
     * The last value set by a call to {@link #setTimeoutInterval}.
     */
    TimeoutInterval timeoutInterval;

    /**
     * This constructor will create an empty options object.
     */
    public SearchControlOptions() {
    }

    /**
     * A convenience constructor to add several Searches in a default
     * configuration.
     * 
     * @param searches The Searches to add to the SearchControl
     */
    public SearchControlOptions(Search[] searches) {
        for (int i = 0; i < searches.length; i++) {
            add(searches[i]);
        }
    }

    /**
     * Add a Search to be executed by the SearchControl.
     * 
     * @param s The Search to execute
     */
    public void add(Search s) {
        add(s, ExpandMode.PARTIAL);
    }

    /**
     * Add a Search to be executed by the SearchControl.
     * 
     * @param s The Search to execute
     * @param expandMode The initial appearance of the Search's results in the
     *          SearchControl
     */
    public void add(Search s, ExpandMode expandMode) {
        GsearcherOptions options = GWT.create(GsearcherOptions.class);
        options.setExpandMode(expandMode.getValue());

        searchers.add(s);
        searcherOptions.put(s, options);
    }

    /**
     * Populates the SearchControl with a default set of Search objects. This will
     * add:
     * <ol>
     * <li>WebSearch</li>
     * <li>LocalSearch</li>
     * <li>VideoSearch</li>
     * <li>BlogSearch</li>
     * <li>NewsSearch</li>
     * <li>BookSearch</li>
     * <li>ImageSearch</li>
     * </ol>
     */
    public void addDefaultSearches() {
        add(new WebSearch());
        add(new LocalSearch());
        add(new VideoSearch());
        add(new BlogSearch());
        add(new NewsSearch());
        add(new BookSearch());
        add(new ImageSearch());
    }

    /**
     * Sets the DrawMode for the SearchControl to set its overall appearance.
     * 
     * @param mode The desired DrawMode for the SearchControl
     */
    public void setDrawMode(DrawMode mode) {
        drawOptions.setDrawMode(mode.getValue());
    }

    /**
     * Sets the label that will be used for the "keep" command when displayed.
     * 
     * @param label A predefined, localized label to use for the keep controls
     */
    public void setKeepLabel(KeepLabel label) {
        keepLabel = label;
    }

    /**
     * Sets the label that will be used for the "keep" command when displayed.
     * 
     * @param label The new label to use.
     */
    public void setKeepLabel(String label) {
        keepLabel = label;
    }

    /**
     * Sets the target window to use when the user clicks on a search result.
     * 
     * @param target The new LinkTarget for the SearchControl.
     */
    public void setLinkTarget(LinkTarget target) {
        this.linkTarget = target;
    }

    /**
     * Sets the timeout interval to use after the user stops typing into the
     * SearchControl before executing a query.
     * 
     * @param interval The new TimeoutInterval
     */
    public void setTimeoutInterval(TimeoutInterval interval) {
        this.timeoutInterval = interval;
    }

}