// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.preferences;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
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.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.talend.core.PluginChecker;
import org.talend.core.model.general.Project;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.designer.core.i18n.Messages;
import org.talend.repository.ProjectManager;
import org.talend.repository.ui.login.TalendForgeDialog;
/**
* DOC hcyi class global comment. Detailled comment
*/
public class ExchangePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
private Button logonButton;
Link userAccountLink;
private String userAccount;
IPreferenceStore prefStore = PlatformUI.getPreferenceStore();
public ExchangePreferencePage() {
super(GRID);
initData();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
@Override
protected void createFieldEditors() {
Composite composite = new Composite(getFieldEditorParent(), SWT.NONE);
composite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
composite.setLayout(new GridLayout());
Group eGroup = new Group(composite, SWT.NONE);
eGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
eGroup.setLayout(new GridLayout(3, false));
Label userLabelTitle = new Label(eGroup, SWT.NONE);
userLabelTitle.setText(Messages.getString("ExchangePreferencePage.currentUserTitle")); //$NON-NLS-1$
GridData data = new GridData(GridData.FILL, GridData.CENTER, true, false);
userLabelTitle.setLayoutData(data);
userAccountLink = new Link(eGroup, SWT.NONE);
GridData dataLink = new GridData(GridData.FILL, GridData.CENTER, true, false);
dataLink.widthHint = convertVerticalDLUsToPixels(120);
userAccountLink.setLayoutData(dataLink);
userAccountLink.setText(userAccount != null ? "<a> " + userAccount + " </a>" : "<a> " + "< None >" + " </a>");
logonButton = new Button(eGroup, SWT.PUSH);
logonButton.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false));
logonButton.setText(userAccount != null ? Messages.getString("ExchangePreferencePage.signOutExchangeTitle") : Messages
.getString("ExchangePreferencePage.signInExchangeTitle"));
if (PluginChecker.isSVNProviderPluginLoaded()) {
BooleanFieldEditor checkTisLogonExchangeDialog = new BooleanFieldEditor(
ITalendCorePrefConstants.EXCHANGE_CHECK_TIS_VERSION,
Messages.getString("ExchangePreferencePage.checkTisLogonExchangeTitle"), getFieldEditorParent()); //$NON-NLS-1$
addField(checkTisLogonExchangeDialog);
}
BooleanFieldEditor downloadedCheckUpdates = new BooleanFieldEditor(
ITalendCorePrefConstants.EXCHANGE_DOWNLOADED_CHECK_UPDATES,
Messages.getString("ExchangePreferencePage.exchangeCheckUpdatesTitle"), getFieldEditorParent()); //$NON-NLS-1$
addField(downloadedCheckUpdates);
addListeners();
}
private void addListeners() {
logonButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Project project = ProjectManager.getInstance().getCurrentProject();
if (project != null) {
if (userAccount == null) {
TalendForgeDialog tfDialog = new TalendForgeDialog(logonButton.getShell(), project);
if (tfDialog.open() == Window.OK) {
initData();
userAccountLink.setText(userAccount != null ? "<a> " + userAccount + " </a>" : "<a> " + "< None >"
+ " </a>");
logonButton.setText(userAccount != null ? Messages
.getString("ExchangePreferencePage.signOutExchangeTitle") : Messages
.getString("ExchangePreferencePage.signInExchangeTitle"));
}
} else {
logonButton.setText(Messages.getString("ExchangePreferencePage.signInExchangeTitle"));
userAccountLink.setText("<a> " + "< None >" + " </a>");
userAccount = null;
if (project.getAuthor() != null) {
String connectionEmail = project.getAuthor().getLogin();
prefStore.setValue(connectionEmail, "");
}
}
}
}
});
}
public void initData() {
String checkUpdate = prefStore.getString(ITalendCorePrefConstants.EXCHANGE_DOWNLOADED_CHECK_UPDATES);
if (checkUpdate == null || "".equals(checkUpdate)) {
prefStore.setValue(ITalendCorePrefConstants.EXCHANGE_DOWNLOADED_CHECK_UPDATES, true);
}
Project project = ProjectManager.getInstance().getCurrentProject();
if (project.getAuthor() != null) {
String connectionEmail = project.getAuthor().getLogin();
String string = prefStore.getString(connectionEmail);
if (string != null) {
String[] split = string.split(":");
if (split.length == 3) {
userAccount = split[1];
}
}
}
setPreferenceStore(prefStore);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
*/
@Override
public boolean performOk() {
return super.performOk();
}
}