/* * Copyright (C) 2011 The Android Open Source Project * * 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.android.sdkuilib.repository; import com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1; import com.android.sdkuilib.internal.widgets.AvdSelector; import com.android.utils.ILogger; import org.eclipse.swt.widgets.Shell; /** * Opens an AVD Manager Window. * * This is the public entry point for using the window. */ public class AvdManagerWindow { /** The actual window implementation to which this class delegates. */ private AvdManagerWindowImpl1 mWindow; /** * Enum giving some indication of what is invoking this window. * The behavior and UI will change slightly depending on the context. * <p/> * Note: if you add Android support to your specific IDE, you might want * to specialize this context enum. */ public enum AvdInvocationContext { /** * The AVD Manager is invoked from the stand-alone 'android' tool. * In this mode, we present an about box, a settings page. * For SdkMan2, we also have a menu bar and link to the SDK Manager 2. */ STANDALONE, /** * The AVD Manager is embedded as a dialog in the SDK Manager * or in the {@link AvdSelector}. * This is similar to the {@link #STANDALONE} mode except we don't need * to display a menu bar at all since we don't want a menu item linking * back to the SDK Manager and we don't need to redisplay the options * and about which are already on the root window. */ DIALOG, /** * The AVD Manager is invoked from an IDE. * In this mode, we do not modify the menu bar. * There is no about box and no settings. */ IDE, } /** * Creates a new window. Caller must call open(), which will block. * * @param parentShell Parent shell. * @param sdkLog Logger. Cannot be null. * @param osSdkRoot The OS path to the SDK root. * @param context The {@link AvdInvocationContext} to change the behavior depending on who's * opening the SDK Manager. */ public AvdManagerWindow( Shell parentShell, ILogger sdkLog, String osSdkRoot, AvdInvocationContext context) { mWindow = new AvdManagerWindowImpl1( parentShell, sdkLog, osSdkRoot, context); } /** * Opens the window. */ public void open() { mWindow.open(); } }