// ============================================================================
//
// Copyright (C) 2006-2016 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.mdm.repository.ui.preferences;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
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.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.talend.mdm.repository.core.service.ConsistencyService;
import org.talend.mdm.repository.i18n.Messages;
import org.talend.mdm.repository.plugin.RepositoryPlugin;
/**
* created by HHB on 2013-7-25 Detailled comment
*
*/
public class ConsistencyConflictPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private Button warnUserBun;
private Button defaultBun;
private Button overrideBun;
private Button skipBun;
private ConsistencyService service;
private IPreferenceStore store;
/**
* Create the preference page.
*/
public ConsistencyConflictPreferencePage() {
}
/**
* Create contents of the preference page.
*
* @param parent
*/
@Override
public Control createContents(Composite parent) {
Composite container = new Composite(parent, SWT.NULL);
container.setLayout(new GridLayout(1, false));
warnUserBun = new Button(container, SWT.CHECK);
warnUserBun.setText(Messages.ConsistencyConflictPreferencePage_warnUserWhenHasConflict);
Group grpConflictStr = new Group(container, SWT.NONE);
grpConflictStr.setText(Messages.ConsistencyConflict_conflictStrategy);
grpConflictStr.setLayout(new GridLayout(1, false));
grpConflictStr.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
defaultBun = new Button(grpConflictStr, SWT.RADIO);
defaultBun.setSelection(true);
defaultBun.setText(Messages.ConsistencyConflict_defaultStrategyLabel);
overrideBun = new Button(grpConflictStr, SWT.RADIO);
overrideBun.setText(Messages.ConsistencyConflict_overrideStrategyLabel);
skipBun = new Button(grpConflictStr, SWT.RADIO);
skipBun.setText(Messages.ConsistencyConflict_skipStrategyLabel);
initUI();
return container;
}
/**
* DOC HHB Comment method "initUI".
*/
private void initUI() {
warnUserBun.setSelection(service.isWarnUserWhenConflict());
int strategy = service.getConflictStrategy();
defaultBun.setSelection(ConsistencyService.CONFLICT_STRATEGY_DEFAULT == strategy);
overrideBun.setSelection(ConsistencyService.CONFLICT_STRATEGY_OVERWRITE == strategy);
skipBun.setSelection(ConsistencyService.CONFLICT_STRATEGY_SKIP_DIFFERENCE == strategy);
}
@Override
public boolean performOk() {
service.setWarnUserWhenConflict(warnUserBun.getSelection());
int stragegy = 0;
if (defaultBun.getSelection()) {
stragegy = ConsistencyService.CONFLICT_STRATEGY_DEFAULT;
} else if (overrideBun.getSelection()) {
stragegy = ConsistencyService.CONFLICT_STRATEGY_OVERWRITE;
} else if (skipBun.getSelection()) {
stragegy = ConsistencyService.CONFLICT_STRATEGY_SKIP_DIFFERENCE;
}
service.setConflictStrategy(stragegy);
return super.performOk();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
store.setValue(PreferenceConstants.P_WARN_USER_HAS_CONFLICT, true);
store.setValue(PreferenceConstants.P_CONFLICT_STRATEGY, ConsistencyService.CONFLICT_STRATEGY_DEFAULT);
initUI();
super.performDefaults();
}
/**
* Initialize the preference page.
*/
public void init(IWorkbench workbench) {
store = RepositoryPlugin.getDefault().getPreferenceStore();
setPreferenceStore(store);
this.service = ConsistencyService.getInstance();
}
}