/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.tests.dialogs;

/**
 * FOR USE BY TESTS ONLY!
 * <p>
 * Stub class that provides access to classes visible to the package
 * <code>org.eclipse.ui.texteditor</code>.  For the purpose of
 * testing.
 * </p>
 * @private
 */

public class TextEditorTestStub {
    //Prevent instantiation
    private TextEditorTestStub() {
    }

    /**
     * Gives access to an instance of FindReplaceDialog.
     * @return FindReplaceDialog an instance of FindReplaceDialog.
     */
    /**
     * 1GJWD2E: ITPUI:ALL - Test classes should not be released in public packages.
     * 
     public static FindReplaceDialog newFindReplaceDialog(Shell parentShell) {
     return new FindReplaceDialog(parentShell);
     }
     */
}

