diff options
Diffstat (limited to 'eclipse')
4 files changed, 108 insertions, 4 deletions
| diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ActionBarHandler.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ActionBarHandler.java new file mode 100644 index 0000000..49585a3 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ActionBarHandler.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2014 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; + +import java.util.ArrayList; +import java.util.List; + +import org.w3c.dom.Element; + +import com.android.ide.common.rendering.api.ActionBarCallback; +import com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart; +import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestInfo; +import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestInfo.ActivityAttributes; +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; + +import static com.android.SdkConstants.TOOLS_URI; +import static com.android.SdkConstants.VALUE_SPLIT_ACTION_BAR_WHEN_NARROW; + +public class ActionBarHandler extends ActionBarCallback { + +    private final GraphicalEditorPart mEditor; + +    ActionBarHandler(GraphicalEditorPart editor) { +        mEditor = editor; +    } + +    @Override +    public List<String> getMenuIdNames() { +        String commaSeparatedMenus = getXmlAttribute(ATTR_MENU); +        List<String> menus = new ArrayList<String>(); +        Iterables.addAll(menus, Splitter.on(',').trimResults().omitEmptyStrings() +                .split(commaSeparatedMenus)); +        return menus; +    } + +    @Override +    public boolean getSplitActionBarWhenNarrow() { +        ActivityAttributes attributes = getActivityAttributes(); +        if (attributes != null) { +          return VALUE_SPLIT_ACTION_BAR_WHEN_NARROW.equals(attributes.getUiOptions()); +        } +        return false; +    } + +    @Override +    public int getNavigationMode() { +        String navMode = getXmlAttribute(ATTR_NAV_MODE); +        if (navMode.equalsIgnoreCase(VALUE_NAV_MODE_TABS)) { +          return NAVIGATION_MODE_TABS; +        } +        if (navMode.equalsIgnoreCase(VALUE_NAV_MODE_LIST)) { +          return NAVIGATION_MODE_LIST; +        } +        return NAVIGATION_MODE_STANDARD; +    } + +    @Override +    public HomeButtonStyle getHomeButtonStyle() { +        ActivityAttributes attributes = getActivityAttributes(); +        if (attributes != null && attributes.getParentActivity() != null) { +          return HomeButtonStyle.SHOW_HOME_AS_UP; +        } +        return HomeButtonStyle.NONE; +    } + +    private ActivityAttributes getActivityAttributes() { +        ManifestInfo manifest = ManifestInfo.get(mEditor.getProject()); +        String activity = mEditor.getConfigurationChooser().getConfiguration().getActivity(); +        return manifest.getActivityAttributes(activity); +    } + +    private String getXmlAttribute(String name) { +        Element element = mEditor.getModel().getUiRoot().getXmlDocument().getDocumentElement(); +        String value = element.getAttributeNS(TOOLS_URI, name); +        if (value == null) { +            return ""; +        } +        return value.trim(); +    } +} diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ProjectCallback.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ProjectCallback.java index 28b1689..6b842ed 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ProjectCallback.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/ProjectCallback.java @@ -45,6 +45,7 @@ import com.android.ide.common.resources.ResourceResolver;  import com.android.ide.common.xml.ManifestData;  import com.android.ide.eclipse.adt.AdtConstants;  import com.android.ide.eclipse.adt.AdtPlugin; +import com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart;  import com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutMetadata;  import com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderLogger;  import com.android.ide.eclipse.adt.internal.editors.layout.uimodel.UiViewElementNode; @@ -93,6 +94,7 @@ public final class ProjectCallback extends LegacyCallback {      private String mLayoutName;      private ILayoutPullParser mLayoutEmbeddedParser;      private ResourceResolver mResourceResolver; +    private GraphicalEditorPart mEditor;      /**       * Creates a new {@link ProjectCallback} to be used with the layout lib. @@ -103,12 +105,14 @@ public final class ProjectCallback extends LegacyCallback {       * @param credential the sandbox credential       */      public ProjectCallback(LayoutLibrary layoutLib, -            ProjectResources projectRes, IProject project, Object credential) { +            ProjectResources projectRes, IProject project, Object credential, +            GraphicalEditorPart editor) {          mLayoutLib = layoutLib;          mParentClassLoader = layoutLib.getClassLoader();          mProjectRes = projectRes;          mProject = project;          mCredential = credential; +        mEditor = editor;      }      public Set<String> getMissingClasses() { @@ -678,6 +682,6 @@ public final class ProjectCallback extends LegacyCallback {      @Override      public ActionBarCallback getActionBarCallback() { -        return new ActionBarCallback(); +        return new ActionBarHandler(mEditor);      }  } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java index b54d5bc..0f5762d 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java @@ -1689,7 +1689,7 @@ public class GraphicalEditorPart extends EditorPart              IProject project = getProject();              ProjectResources projectRes = resManager.getProjectResources(project);              mProjectCallback = new ProjectCallback(layoutLibrary, projectRes, project, -                    mCredential); +                    mCredential, this);          } else if (reset) {              // Also clears the set of missing/broken classes prior to rendering              mProjectCallback.getMissingClasses().clear(); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java index fd8125e..54222e3 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java @@ -913,7 +913,12 @@ public class EclipseLintClient extends LintClient {      @Override      @NonNull      public IAndroidTarget[] getTargets() { -        return Sdk.getCurrent().getTargets(); +        Sdk sdk = Sdk.getCurrent(); +        if (sdk != null) { +            return sdk.getTargets(); +        } else { +            return new IAndroidTarget[0]; +        }      }      private boolean mSearchForSuperClasses; | 
