/*
* Copyright (C) 2012 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.motorola.studio.android.emulator.ui.perspective.extension;
import static com.motorola.studio.android.common.log.StudioLogger.warn;
import java.util.Collection;
import java.util.LinkedHashSet;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import com.motorola.studio.android.common.utilities.EclipseUtils;
/**
* DESCRIPTION:
* <br>
* This class is the reader for the androidPerspectiveExtension extension point declarations.
* <br>
* RESPONSIBILITY:
* <br>
* Retrieve information from plugins declaring the androidPerspectiveExtension.
* <br>
* COLABORATORS:
* <br>
* IAndroidPerspectiveExtensionConstants: implements this interface for using the constants directly
* <br>
* USAGE:
* <br>
* This class methods should be called statically from within the implementation of the Android
* Emulator Perspective.
*/
public class AndroidPerspectiveExtensionReader implements IAndroidPerspectiveExtensionConstants
{
/**
* Reads the information from plug-ins declaring extensions to androidPerspectiveExtension
* and stores it into beans.
*
* @return a collection of beans containing androidPerspectiveExtension information
*/
public static Collection<AndroidPerspectiveExtensionBean> readAndroidPerspectiveExtensions()
{
Collection<AndroidPerspectiveExtensionBean> beans =
new LinkedHashSet<AndroidPerspectiveExtensionBean>();
IExtension[] extensions = EclipseUtils.getInstalledPlugins(EXTENSION_POINT_ID);
for (IExtension extension : extensions)
{
IConfigurationElement[] viewElements = extension.getConfigurationElements();
for (IConfigurationElement viewElement : viewElements)
{
if (ELEMENT_VIEW.equals(viewElement.getName()))
{
String viewId = viewElement.getAttribute(ATT_ID);
String area = viewElement.getAttribute(ATT_AREA);
// create the bean only if information could be read
if ((viewId != null) && (!viewId.equals("")) && (area != null)
&& (!area.equals("")))
{
beans.add(new AndroidPerspectiveExtensionBean(viewId, area));
}
else
{
warn("View not added to Android Emulator Perspective area for extension "
+ extension.getExtensionPointUniqueIdentifier());
}
}
}
}
return beans;
}
}