package com.mobilesorcery.sdk.builder.android.ui.preferences;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.util.Policy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.mobilesorcery.sdk.builder.android.Activator;
import com.mobilesorcery.sdk.builder.android.PropertyInitializer;
import com.mobilesorcery.sdk.builder.java.KeystoreCertificateInfo;
import com.mobilesorcery.sdk.builder.java.ui.KeystoreCertificateInfoEditor;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.core.PreferenceStorePropertyOwner;
import com.mobilesorcery.sdk.core.SecurePropertyException;
import com.mobilesorcery.sdk.ui.UpdateListener.IUpdatableControl;
public class AndroidSigningPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, IUpdatableControl {
private KeystoreCertificateInfoEditor editor;
public AndroidSigningPreferencePage() {
super();
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
@Override
public boolean performOk() {
KeystoreCertificateInfo info = editor.getKeystoreCertInfo();
try {
info.store(PropertyInitializer.ANDROID_KEYSTORE_CERT_INFO,
new PreferenceStorePropertyOwner(getPreferenceStore()),
CoreMoSyncPlugin.getDefault().getSecureProperties());
} catch (SecurePropertyException e) {
Policy.getStatusHandler().show(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not encrypt passwords"), "Could not encrypt passwords");
return false;
}
updateUI();
return true;
}
@Override
public void performDefaults() {
editor.setToDefault();
}
@Override
public void init(IWorkbench workbench) {
}
@Override
protected Control createContents(Composite parent) {
editor = new KeystoreCertificateInfoEditor(parent, SWT.NONE);
editor.setUpdatable(this);
KeystoreCertificateInfo info = KeystoreCertificateInfo.loadOne(PropertyInitializer.ANDROID_KEYSTORE_CERT_INFO,
new PreferenceStorePropertyOwner(getPreferenceStore()),
CoreMoSyncPlugin.getDefault().getSecureProperties());
editor.setKeystoreCertInfo(info);
setMessage(info.validate(true).getMessage(), info.validate(true).getMessageType());
updateUI();
return editor;
}
@Override
public void updateUI() {
KeystoreCertificateInfo info = editor.getKeystoreCertInfo();
if (info != null) {
IMessageProvider message = info.validate(true);
setMessage(message.getMessage(), message.getMessageType());
}
}
}