/*******************************************************************************
 * 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.views.navigator</code>.  For the purpose of
 * testing.
 * </p>
 * @private
 */

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

    /**
     * Gives access to an instance of GotoResourceDialog.
     * @return GotoResourceDialog an instance of GotoResourceDialog.
     */
    /**
     * 1GJWD2E: ITPUI:ALL - Test classes should not be released in public packages.
     * 
     public static GotoResourceDialog newGotoResourceDialog(Shell parentShell,IResource[] resources) {
     return new GotoResourceDialog(parentShell, resources);
     }
     */
}

