blob: 95904c06fc2b80b067045dfe2b3b861a2b1b38d8 [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.localization.translators.preferences.ui;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.osgi.service.prefs.BackingStoreException;
import com.motorola.studio.android.common.log.StudioLogger;
import com.motorola.studio.android.localization.translators.GoogleTranslatorConstants;
import com.motorola.studio.android.localization.translators.TranslationPlugin;
import com.motorola.studio.android.localization.translators.i18n.TranslateNLS;
public class TranslationPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
{
private final String GOOGLE_APIS_CONSOLE_LINK = "http://code.google.com/apis/console/"; //$NON-NLS-1$
private Text apiKeyText;
private String apiKeyValue;
public void init(IWorkbench workbench)
{
noDefaultAndApplyButton();
}
@Override
public boolean performOk()
{
InstanceScope scope = (InstanceScope) InstanceScope.INSTANCE;
IEclipsePreferences prefs = scope.getNode(TranslationPlugin.PLUGIN_ID);
if (apiKeyValue.trim().length() == 0)
{
prefs.remove(GoogleTranslatorConstants.API_KEY_VALUE_PREFERENCE);
}
else
{
prefs.put(GoogleTranslatorConstants.API_KEY_VALUE_PREFERENCE, apiKeyValue.trim());
}
try
{
prefs.flush();
}
catch (BackingStoreException e)
{
//do nothing
}
return super.performOk();
}
@Override
protected Control createContents(Composite parent)
{
Composite entryTable = new Composite(parent, SWT.NULL);
GridData data = new GridData(SWT.FILL, SWT.TOP, true, false);
entryTable.setLayoutData(data);
GridLayout layout = new GridLayout();
entryTable.setLayout(layout);
layout = new GridLayout(2, false);
layout = new GridLayout(2, false);
Group translatorAPIGroup = new Group(entryTable, SWT.NONE);
translatorAPIGroup.setLayout(layout);
translatorAPIGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
translatorAPIGroup.setText(TranslateNLS.AndroidPreferencePage_googleApiKey_GroupLabel);
Link noteLabel = new Link(translatorAPIGroup, SWT.WRAP);
noteLabel.setText(TranslateNLS.bind(TranslateNLS.AndroidPreferencePage_googleApiKey_Note,
GOOGLE_APIS_CONSOLE_LINK));
data = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
data.widthHint = 450;
noteLabel.setLayoutData(data);
noteLabel.addSelectionListener(new SelectionAdapter()
{
/* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e)
{
IWorkbenchBrowserSupport browserSupport =
PlatformUI.getWorkbench().getBrowserSupport();
/*
* open the browser
*/
IWebBrowser browser;
try
{
browser =
browserSupport.createBrowser(IWorkbenchBrowserSupport.LOCATION_BAR
| IWorkbenchBrowserSupport.NAVIGATION_BAR
| IWorkbenchBrowserSupport.AS_EXTERNAL, "MOTODEV", null, null); //$NON-NLS-1$
browser.openURL(new URL(GOOGLE_APIS_CONSOLE_LINK));
}
catch (PartInitException ex)
{
StudioLogger.error("Error opening the Google APIs Console link: " //$NON-NLS-1$
+ ex.getMessage());
}
catch (MalformedURLException ex)
{
StudioLogger.error("Error opening the Google APIs Console link: " //$NON-NLS-1$
+ ex.getMessage());
}
}
});
Label apiKeyLabel = new Label(translatorAPIGroup, SWT.NONE);
apiKeyLabel.setText(TranslateNLS.AndroidPreferencePage_googleApiKey_Label);
data = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
apiKeyLabel.setLayoutData(data);
apiKeyText = new Text(translatorAPIGroup, SWT.BORDER);
apiKeyValue = getApiKey();
apiKeyText.setText(apiKeyValue);
apiKeyText.setToolTipText(TranslateNLS.AndroidPreferencePage_googleApiKey_Tooltip);
data = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
apiKeyText.setLayoutData(data);
apiKeyText.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
apiKeyValue = apiKeyText.getText();
}
});
return entryTable;
}
/**
* get the apikey
* @return the apikey or an empty string for the default one
*/
private static String getApiKey()
{
String apiKey = ""; //$NON-NLS-1$
IPreferenceStore prefStore = TranslationPlugin.getDefault().getPreferenceStore();
if (!prefStore.isDefault(GoogleTranslatorConstants.API_KEY_VALUE_PREFERENCE))
{
apiKey = prefStore.getString(GoogleTranslatorConstants.API_KEY_VALUE_PREFERENCE);
if (apiKey == null)
{
apiKey = ""; //$NON-NLS-1$
}
}
return apiKey;
}
}