| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php |
| * |
| * 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.ide.eclipse.adt.internal.editors.layout.configuration; |
| |
| import com.android.annotations.NonNull; |
| import com.android.annotations.Nullable; |
| import com.android.ide.common.rendering.api.ResourceValue; |
| import com.android.ide.common.resources.ResourceRepository; |
| import com.android.ide.eclipse.adt.internal.editors.layout.gle2.IncludeFinder.Reference; |
| import com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutCanvas; |
| import com.android.resources.ResourceType; |
| import com.android.sdklib.IAndroidTarget; |
| |
| import java.util.Map; |
| |
| /** |
| * Interface implemented by clients who embed a {@link ConfigurationChooser}. |
| */ |
| public interface ConfigurationClient { |
| /** |
| * The configuration is about to be changed. |
| * |
| * @param flags details about what changed; consult the {@code CFG_} flags |
| * in {@link Configuration} such as |
| * {@link Configuration#CFG_DEVICE}, |
| * {@link Configuration#CFG_LOCALE}, etc. |
| */ |
| void aboutToChange(int flags); |
| |
| /** |
| * The configuration has changed. If the client returns false, it means that |
| * the change was rejected. This typically means that changing the |
| * configuration in this particular way makes a configuration which has a |
| * better file match than the current client's file, so it will open that |
| * file to edit the new configuration -- and the current configuration |
| * should go back to editing the state prior to this change. |
| * |
| * @param flags details about what changed; consult the {@code CFG_} flags |
| * such as {@link Configuration#CFG_DEVICE}, |
| * {@link Configuration#CFG_LOCALE}, etc. |
| * @return true if the change was accepted, false if it was rejected. |
| */ |
| boolean changed(int flags); |
| |
| /** |
| * Compute the project resources |
| * |
| * @return the project resources as a {@link ResourceRepository} |
| */ |
| @Nullable |
| ResourceRepository getProjectResources(); |
| |
| /** |
| * Compute the framework resources |
| * |
| * @return the project resources as a {@link ResourceRepository} |
| */ |
| @Nullable |
| ResourceRepository getFrameworkResources(); |
| |
| /** |
| * Compute the framework resources for the given Android API target |
| * |
| * @param target the target to look up framework resources for |
| * @return the project resources as a {@link ResourceRepository} |
| */ |
| @Nullable |
| ResourceRepository getFrameworkResources(@Nullable IAndroidTarget target); |
| |
| /** |
| * Returns the configured project resources for the current file and |
| * configuration |
| * |
| * @return resource type maps to names to resource values |
| */ |
| @NonNull |
| Map<ResourceType, Map<String, ResourceValue>> getConfiguredProjectResources(); |
| |
| /** |
| * Returns the configured framework resources for the current file and |
| * configuration |
| * |
| * @return resource type maps to names to resource values |
| */ |
| @NonNull |
| Map<ResourceType, Map<String, ResourceValue>> getConfiguredFrameworkResources(); |
| |
| /** |
| * If the current layout is an included layout rendered within an outer layout, |
| * returns the outer layout. |
| * |
| * @return the outer including layout, or null |
| */ |
| @Nullable |
| Reference getIncludedWithin(); |
| |
| /** |
| * Called when the "Create" button is clicked. |
| */ |
| void createConfigFile(); |
| |
| /** |
| * Called when an associated activity is picked |
| * |
| * @param fqcn the fully qualified class name for the associated activity context |
| */ |
| void setActivity(@NonNull String fqcn); |
| |
| /** |
| * Returns the associated layout canvas, if any |
| * |
| * @return the canvas, if any |
| */ |
| @Nullable |
| LayoutCanvas getCanvas(); |
| } |