001 /* 002 * Created on Sep 1, 2008 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 005 * in compliance with the License. You may obtain a copy of the License at 006 * 007 * http://www.apache.org/licenses/LICENSE-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, software distributed under the License 010 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 011 * or implied. See the License for the specific language governing permissions and limitations under 012 * the License. 013 * 014 * Copyright @2008-2010 the original author or authors. 015 */ 016 package org.fest.swing.driver; 017 018 import static org.fest.swing.edt.GuiActionRunner.execute; 019 020 import javax.swing.JScrollBar; 021 import javax.swing.JScrollPane; 022 023 import org.fest.swing.annotation.RunsInEDT; 024 import org.fest.swing.core.Robot; 025 import org.fest.swing.edt.GuiQuery; 026 027 /** 028 * Understands functional testing of <code>{@link JScrollPane}</code>s: 029 * <ul> 030 * <li>user input simulation</li> 031 * <li>state verification</li> 032 * <li>property value query</li> 033 * </ul> 034 * This class is intended for internal use only. Please use the classes in the package 035 * <code>{@link org.fest.swing.fixture}</code> in your tests. 036 * 037 * @author Yvonne Wang 038 */ 039 public class JScrollPaneDriver extends JComponentDriver { 040 041 /** 042 * Creates a new </code>{@link JScrollPaneDriver}</code>. 043 * @param robot the robot the robot to use to simulate user input. 044 */ 045 public JScrollPaneDriver(Robot robot) { 046 super(robot); 047 } 048 049 /** 050 * Returns the horizontal <code>{@link JScrollBar}</code> in the given <code>{@link JScrollPane}</code>. 051 * @param scrollPane the given <code>JScrollBar</code>. 052 * @return the horizontal scroll bar in the given <code>JScrollBar</code>. 053 */ 054 @RunsInEDT 055 public JScrollBar horizontalScrollBarIn(JScrollPane scrollPane) { 056 return horizontalScrollBar(scrollPane); 057 } 058 059 @RunsInEDT 060 private static JScrollBar horizontalScrollBar(final JScrollPane scrollPane) { 061 return execute(new GuiQuery<JScrollBar>() { 062 protected JScrollBar executeInEDT() { 063 return scrollPane.getHorizontalScrollBar(); 064 } 065 }); 066 } 067 068 /** 069 * Returns the vertical <code>{@link JScrollBar}</code> in the given <code>{@link JScrollPane}</code>. 070 * @param scrollPane the given <code>JScrollBar</code>. 071 * @return the vertical scroll bar in the given <code>JScrollBar</code>. 072 */ 073 @RunsInEDT 074 public JScrollBar verticalScrollBarIn(JScrollPane scrollPane) { 075 return verticalScrollBar(scrollPane); 076 } 077 078 @RunsInEDT 079 private static JScrollBar verticalScrollBar(final JScrollPane scrollPane) { 080 return execute(new GuiQuery<JScrollBar>() { 081 protected JScrollBar executeInEDT() { 082 return scrollPane.getVerticalScrollBar(); 083 } 084 }); 085 } 086 }