• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2012 The Android Open Source Project
3   *
4   * Licensed under the Eclipse Public License, Version 1.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.eclipse.org/org/documents/epl-v10.php
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.android.ide.eclipse.adt.internal.editors.layout.configuration;
17  
18  import com.android.annotations.NonNull;
19  import com.android.annotations.Nullable;
20  import com.android.ide.common.rendering.api.ResourceValue;
21  import com.android.ide.common.resources.ResourceRepository;
22  import com.android.ide.eclipse.adt.internal.editors.layout.gle2.IncludeFinder.Reference;
23  import com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutCanvas;
24  import com.android.resources.ResourceType;
25  import com.android.sdklib.IAndroidTarget;
26  
27  import java.util.Map;
28  
29  /**
30   * Interface implemented by clients who embed a {@link ConfigurationChooser}.
31   */
32  public interface ConfigurationClient {
33      /**
34       * The configuration is about to be changed.
35       *
36       * @param flags details about what changed; consult the {@code CFG_} flags
37       *            in {@link Configuration} such as
38       *            {@link Configuration#CFG_DEVICE},
39       *            {@link Configuration#CFG_LOCALE}, etc.
40       */
aboutToChange(int flags)41      void aboutToChange(int flags);
42  
43      /**
44       * The configuration has changed. If the client returns false, it means that
45       * the change was rejected. This typically means that changing the
46       * configuration in this particular way makes a configuration which has a
47       * better file match than the current client's file, so it will open that
48       * file to edit the new configuration -- and the current configuration
49       * should go back to editing the state prior to this change.
50       *
51       * @param flags details about what changed; consult the {@code CFG_} flags
52       *            such as {@link Configuration#CFG_DEVICE},
53       *            {@link Configuration#CFG_LOCALE}, etc.
54       * @return true if the change was accepted, false if it was rejected.
55       */
changed(int flags)56      boolean changed(int flags);
57  
58      /**
59       * Compute the project resources
60       *
61       * @return the project resources as a {@link ResourceRepository}
62       */
63      @Nullable
getProjectResources()64      ResourceRepository getProjectResources();
65  
66      /**
67       * Compute the framework resources
68       *
69       * @return the project resources as a {@link ResourceRepository}
70       */
71      @Nullable
getFrameworkResources()72      ResourceRepository getFrameworkResources();
73  
74      /**
75       * Compute the framework resources for the given Android API target
76       *
77       * @param target the target to look up framework resources for
78       * @return the project resources as a {@link ResourceRepository}
79       */
80      @Nullable
getFrameworkResources(@ullable IAndroidTarget target)81      ResourceRepository getFrameworkResources(@Nullable IAndroidTarget target);
82  
83      /**
84       * Returns the configured project resources for the current file and
85       * configuration
86       *
87       * @return resource type maps to names to resource values
88       */
89      @NonNull
getConfiguredProjectResources()90      Map<ResourceType, Map<String, ResourceValue>> getConfiguredProjectResources();
91  
92      /**
93       * Returns the configured framework resources for the current file and
94       * configuration
95       *
96       * @return resource type maps to names to resource values
97       */
98      @NonNull
getConfiguredFrameworkResources()99      Map<ResourceType, Map<String, ResourceValue>> getConfiguredFrameworkResources();
100  
101      /**
102       * If the current layout is an included layout rendered within an outer layout,
103       * returns the outer layout.
104       *
105       * @return the outer including layout, or null
106       */
107      @Nullable
getIncludedWithin()108      Reference getIncludedWithin();
109  
110      /**
111       * Called when the "Create" button is clicked.
112       */
createConfigFile()113      void createConfigFile();
114  
115      /**
116       * Called when an associated activity is picked
117       *
118       * @param fqcn the fully qualified class name for the associated activity context
119       */
setActivity(@onNull String fqcn)120      void setActivity(@NonNull String fqcn);
121  
122      /**
123       * Returns the associated layout canvas, if any
124       *
125       * @return the canvas, if any
126       */
127      @Nullable
getCanvas()128      LayoutCanvas getCanvas();
129  }
130