blob: 48b85f6d97fea44634e97ef53bbeecd1698e6f35 [file] [log] [blame]
/*
* 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.core.skin;
import java.util.Collection;
import java.util.Properties;
import org.eclipse.sequoyah.vnc.vncviewer.config.EclipsePropertiesFileHandler;
import org.eclipse.sequoyah.vnc.vncviewer.config.IPropertiesFileHandler;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.RGB;
import com.motorola.studio.android.emulator.core.exception.SkinException;
/**
* This interface must be implemented by anyone who wishes to contribute to the
* skin extension point
*/
public interface IAndroidSkin
{
IPropertiesFileHandler DEFAULT_PROPS_HANDLER = new EclipsePropertiesFileHandler();
String DEFAULT_VNC_CONFIG_FILE = "resources/vnc_viewer.conf";
/**
* Retrieves an image data object containing one pressed image pixels and attributes
*
* @return An image data object containing pixels and image attributes
*
* @throws SkinException If any problem occurs while retrieving the image data.
* If a new exception is being created, it is expected that it provides a message
* to display to the user
*/
ImageData getPressedImageData(String layoutName) throws SkinException;
/**
* Retrieves an image data object containing one released image pixels and attributes
*
* @return An image data object containing pixels and image attributes
*
* @throws SkinException If any problem occurs while retrieving the image data
* If a new exception is being created, it is expected that it provides a message
* to display to the user
*/
ImageData getReleasedImageData(String layoutName) throws SkinException;
/**
* Retrieves an image data object containing one enter image pixels and attributes
*
* @return An image data object containing pixels and image attributes
*
* @throws SkinException If any problem occurs while retrieving the image data
* If a new exception is being created, it is expected that it provides a message
* to display to the user
*/
ImageData getEnterImageData(String layoutName) throws SkinException;
/**
* Retrieves a collection containing all keys that are supported by the
* handset represented by this skin
*
* @return The key collection read from skin
*/
Collection<IAndroidKey> getKeyDataCollection(String layoutName);
/**
* Retrieves a bean containing all skin data that does not refer to the keys
*
* @return The skin bean
*
* @throws SkinException If any problem occurs while retrieving the skin data
* If a new exception is being created, it is expected that it provides a message
* to display to the user
*/
AndroidSkinBean getSkinBean(String layoutName) throws SkinException;
/**
* Tests if flip is supported by the phone represented by this skin
*
* @return true if flip is supported; false otherwise
*/
boolean isFlipSupported();
/**
* Set where the skin files are located based on the emulator root dir
*
* @param emulatorInstallDir Root of emulator installation
*
* @throws SkinException If the path provided does not contain a valid skin
*/
void setSkinFilesPath(String emulatorInstallDir) throws SkinException;
/**
* Retrieves the names of all available layouts of the skin
*
* @return A collection containing the names of all available layouts
*/
public Collection<String> getAvailableLayouts();
/**
* Checks if the current layout is rotated (i.e. demands screen rotation)
*/
boolean isSwapWidthHeightNeededAtLayout(String layoutName);
/**
* Retrieves the command to send to the emulator to switch screen
*
* @return The command to send to the emulator to switch screen
*/
String getLayoutScreenCommand(String layoutName);
/**
* Finds which layout comes next to referenceLayout
*
* @param referenceLayout The layout to be used as reference on next layout calculation
*
* @return The next layout name
*/
public String getNextLayout(String referenceLayout);
/**
* Finds which layout is previous to referenceLayout
*
* @param referenceLayout The layout to be used as reference on previous layout calculation
*
* @return The previous layout name
*/
public String getPreviousLayout(String referenceLayout);
/**
* Retrieves what is the background color to be applied at the provided layout
*
* @param layoutName The layout name in which to apply the background color
*
* @return A RGB object describing the color
*/
public RGB getBackgroundColor(String layoutName);
/**
* @return
*/
Properties getKeyCodes();
/**
* Return the dpad-rotation if present on a given layout or 0 otherwise.
* @param layoutName
* @return
*/
int getDpadRotation(String layoutName);
}