/* * 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 getMenuIdNames() { String commaSeparatedMenus = getXmlAttribute(ATTR_MENU); List menus = new ArrayList(); 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(); } }