| /* |
| * 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); |
| } |