| /* |
| * 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.devices.services.lang; |
| |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.wizard.WizardDialog; |
| import org.eclipse.sequoyah.device.framework.model.IInstance; |
| import org.eclipse.sequoyah.device.framework.model.handler.IServiceHandler; |
| import org.eclipse.sequoyah.device.framework.model.handler.ServiceHandler; |
| import org.eclipse.ui.PlatformUI; |
| |
| import com.motorola.studio.android.adt.DDMSUtils; |
| import com.motorola.studio.android.adt.ISerialNumbered; |
| import com.motorola.studio.android.common.log.StudioLogger; |
| import com.motorola.studio.android.devices.services.DeviceServicesPlugin; |
| import com.motorola.studio.android.devices.services.lang.model.LangWizard; |
| |
| /** |
| * This class plugs the change language procedure to a TmL service |
| */ |
| public class LangServiceHandler extends ServiceHandler |
| { |
| private String languageID; |
| |
| private String countryID; |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @seeorg.eclipse.sequoyah.device.framework.model.handler.ServiceHandler# |
| * newInstance() |
| */ |
| @Override |
| public IServiceHandler newInstance() |
| { |
| return new LangServiceHandler(); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see |
| * org.eclipse.sequoyah.device.framework.model.handler.ServiceHandler#runService |
| * (org.eclipse.sequoyah.device.framework.model.IInstance, java.util.Map, |
| * org.eclipse.core.runtime.IProgressMonitor) |
| */ |
| @Override |
| public IStatus runService(IInstance instance, Map<Object, Object> arguments, |
| IProgressMonitor monitor) |
| { |
| IStatus status = Status.OK_STATUS; |
| |
| final String serialNumber = ((ISerialNumbered) instance).getSerialNumber(); |
| |
| DDMSUtils.changeLanguage(serialNumber, languageID, countryID); |
| |
| // Collecting usage data for statistical purpose |
| try |
| { |
| StudioLogger.collectUsageData(StudioLogger.WHAT_EMULATOR_LANGUAGE, |
| StudioLogger.KIND_EMULATOR, languageID, DeviceServicesPlugin.PLUGIN_ID, |
| DeviceServicesPlugin.getDefault().getBundle().getVersion().toString()); |
| } |
| catch (Throwable e) |
| { |
| //Do nothing, but error on the log should never prevent app from working |
| } |
| |
| return status; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @seeorg.eclipse.sequoyah.device.framework.model.handler.ServiceHandler# |
| * updatingService(org.eclipse.sequoyah.device.framework.model.IInstance, |
| * org.eclipse.core.runtime.IProgressMonitor) |
| */ |
| @Override |
| public IStatus updatingService(IInstance instance, IProgressMonitor monitor) |
| { |
| StudioLogger.info("Updating change language service"); |
| return Status.OK_STATUS; |
| } |
| |
| @Override |
| public IStatus singleInit(final List<IInstance> instances) |
| { |
| PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() |
| { |
| public void run() |
| { |
| try |
| { |
| LangWizard wizard = new LangWizard(); |
| WizardDialog dialog = |
| new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow() |
| .getShell(), wizard); |
| dialog.setPageSize(250, 75); |
| |
| int ret = dialog.open(); |
| |
| if (ret == Dialog.OK) |
| { |
| languageID = wizard.getlanguageId(); |
| countryID = wizard.getcountryId(); |
| } |
| else |
| { |
| languageID = null; |
| countryID = null; |
| } |
| |
| } |
| catch (Exception e) |
| { |
| StudioLogger.error("Change Language TmL Service: could not open UI"); |
| } |
| } |
| }); |
| |
| return super.singleInit(instances); |
| } |
| } |