Package org.eclipse.swtbot.swt.finder.widgets

Source Code of org.eclipse.swtbot.swt.finder.widgets.SWTBotList

/*******************************************************************************
* Copyright (c) 2008 Ketan Padegaonkar 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:
*     Ketan Padegaonkar - initial API and implementation
*******************************************************************************/
package org.eclipse.swtbot.swt.finder.widgets;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.List;
import org.eclipse.swtbot.swt.finder.ReferenceBy;
import org.eclipse.swtbot.swt.finder.SWTBotWidget;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
import org.eclipse.swtbot.swt.finder.results.ArrayResult;
import org.eclipse.swtbot.swt.finder.results.IntResult;
import org.eclipse.swtbot.swt.finder.results.StringResult;
import org.eclipse.swtbot.swt.finder.results.VoidResult;
import org.eclipse.swtbot.swt.finder.utils.MessageFormat;
import org.eclipse.swtbot.swt.finder.utils.StringUtils;
import org.eclipse.swtbot.swt.finder.utils.internal.Assert;
import org.hamcrest.SelfDescribing;

/**
* @author Ketan Padegaonkar <KetanPadegaonkar [at] gmail [dot] com>
* @author Joshua Gosse <jlgosse [at] ca [dot] ibm [dot] com>
* @version $Id$
*/
@SWTBotWidget(clasz = List.class, preferredName = "list", referenceBy = { ReferenceBy.LABEL })
public class SWTBotList extends AbstractSWTBotControl<List> {

  /**
   * Constructs an isntance of this with the given list widget.
   *
   * @param list the list.
   * @throws WidgetNotFoundException if the widget is <code>null</code> or widget has been disposed.
   */
  public SWTBotList(List list) throws WidgetNotFoundException {
    this(list, null);
  }

  /**
   * Constructs an isntance of this with the given list widget.
   *
   * @param list the list.
   * @param description the description of the widget, this will be reported by {@link #toString()}
   * @throws WidgetNotFoundException if the widget is <code>null</code> or widget has been disposed.
   */
  public SWTBotList(List list, SelfDescribing description) throws WidgetNotFoundException {
    super(list, description);
  }

  /**
   * Selects the item matching the given text.
   *
   * @param item the item to select in the list.
   */
  public void select(final String item) {
    log.debug(MessageFormat.format("Set selection {0} to text {1}", this, item)); //$NON-NLS-1$
    assertEnabled();
    final int indexOf = indexOf(item);
    Assert.isTrue(indexOf != -1, "Item `" + item + "' not found in list."); //$NON-NLS-1$ //$NON-NLS-2$
    asyncExec(new VoidResult() {
      public void run() {
        widget.setSelection(indexOf);
      }
    });
    notifySelect();
  }

  /**
   * Selects the given index.
   *
   * @param index the selection index.
   */
  public void select(final int index) {
    log.debug(MessageFormat.format("Set selection {0} to index {1}", this, index)); //$NON-NLS-1$
    assertEnabled();
    int itemCount = itemCount();
    Assert.isTrue(index <= itemCount, java.text.MessageFormat.format(
        "The index ({0}) is more than the number of items ({1}) in the list.", index, itemCount)); //$NON-NLS-1$
    asyncExec(new VoidResult() {
      public void run() {
        widget.setSelection(index);
      }
    });
    notifySelect();
  }

  /**
   * Gets the item count in the list
   *
   * @return the number of items in the list.
   */
  public int itemCount() {
    return syncExec(new IntResult() {
      public Integer run() {
        return widget.getItemCount();
      }
    });
  }

  /**
   * Gets the selection count.
   *
   * @return the number of selected items in the list.
   */
  public int selectionCount() {
    return syncExec(new IntResult() {
      public Integer run() {
        return widget.getSelectionCount();
      }
    });
  }

  /**
   * Gets the arrray of selected items.
   *
   * @return the selected items in the list.
   */
  public String[] selection() {
    return syncExec(new ArrayResult<String>() {
      public String[] run() {
        return widget.getSelection();
      }
    });
  }

  /**
   * Selects the indexes provided.
   *
   * @param indices the indices to select in the list.
   */
  public void select(final int[] indices) {
    log.debug(MessageFormat.format("Set selection {0} to indices {1}]", this, StringUtils.join(indices, ", "))); //$NON-NLS-1$ //$NON-NLS-2$
    assertEnabled();
    asyncExec(new VoidResult() {
      public void run() {
        widget.setSelection(indices);
      }

    });
    notifySelect();
  }

  /**
   * Sets the selection to the given list of items.
   *
   * @param items the items to select in the list.
   */
  public void select(final String[] items) {
    log.debug(MessageFormat.format("Set selection {0} to items [{1}]", this, StringUtils.join(items, ", "))); //$NON-NLS-1$ //$NON-NLS-2$
    assertEnabled();
    asyncExec(new VoidResult() {
      public void run() {
        widget.deselectAll();
        for (String item : items) {
          int index = widget.indexOf(item);
          if (index != -1)
            widget.select(index);
        }
      }
    });
    notifySelect();
  }

  /**
   * Notifies of a selection.
   */
  protected void notifySelect() {
    notify(SWT.MouseDown);
    notify(SWT.Selection);
    notify(SWT.MouseUp);
  }

  /**
   * Unselects everything.
   */
  public void unselect() {
    asyncExec(new VoidResult() {
      public void run() {
        widget.deselectAll();
      }
    });
    notifySelect();
  }

  /**
   * Gets the index of the given item.
   *
   * @param item the search item.
   * @return the index of the item, or -1 if the item does not exist.
   */
  public int indexOf(final String item) {
    return syncExec(new IntResult() {
      public Integer run() {
        return widget.indexOf(item);
      }
    });
  }

  /**
   * Gets the item at the given index.
   *
   * @param index the zero based index.
   * @return the item at the specified index.
   */
  public String itemAt(final int index) {
    return syncExec(new StringResult() {
      public String run() {
        return widget.getItem(index);
      }
    });
  }

  /**
   * Gets the array of Strings from the List
   *
   * @return an array of Strings
   */
  public String[] getItems() {
    return syncExec(new ArrayResult<String>() {
      public String[] run() {
        return widget.getItems();
      }
    });
  }
}
TOP

Related Classes of org.eclipse.swtbot.swt.finder.widgets.SWTBotList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.