// ============================================================================ // // 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.dialogs.consistency; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IconAndMessageDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; 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.swt.widgets.Shell; import org.talend.mdm.repository.core.service.ConsistencyService; import org.talend.mdm.repository.i18n.Messages; /** * created by HHB on 2013-7-25 Detailled comment * */ public class ConfirmConflictMessageDialog extends IconAndMessageDialog { private Button defaultBun; private Button overrideBun; private Button skipBun; private Button rememberBun; public ConfirmConflictMessageDialog(Shell parentShell, int conflictCount) { super(parentShell); this.message = Messages.bind(Messages.ConfirmConflictMessageDialog_dialogMessage, conflictCount); } @Override protected Image getImage() { return getWarningImage(); } @Override protected Control createDialogArea(Composite parent) { Composite dialogAreaComposite = (Composite) super.createDialogArea(parent); ((GridData) dialogAreaComposite.getLayoutData()).horizontalSpan = 2; createMessageArea(dialogAreaComposite); createStrategyGroup(dialogAreaComposite); return dialogAreaComposite; } @Override protected Control createMessageArea(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).applyTo(composite); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(composite); Control control = super.createMessageArea(composite); return control; } private void createStrategyGroup(Composite dialogAreaComposite) { Group grpConflictStr = new Group(dialogAreaComposite, 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); rememberBun = new Button(dialogAreaComposite, SWT.CHECK); rememberBun.setText(Messages.ConfirmConflictMessageDialog_rememberChoice); } private int getSelectedStrategy() { if (defaultBun.getSelection()) { return ConsistencyService.CONFLICT_STRATEGY_DEFAULT; } if (overrideBun.getSelection()) { return ConsistencyService.CONFLICT_STRATEGY_OVERWRITE; } if (skipBun.getSelection()) { return ConsistencyService.CONFLICT_STRATEGY_SKIP_DIFFERENCE; } return ConsistencyService.CONFLICT_STRATEGY_DEFAULT; } /* * (non-Javadoc) * * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.DETAILS_ID, Messages.ConfirmConflictMessageDialog_showConflicts, false); super.createButtonsForButtonBar(parent); } /* * (non-Javadoc) * * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int) */ @Override protected void buttonPressed(int buttonId) { ConsistencyService service = ConsistencyService.getInstance(); if (buttonId == IDialogConstants.OK_ID) { selectedStrategy = getSelectedStrategy(); } else if (buttonId == IDialogConstants.DETAILS_ID) { setReturnCode(IDialogConstants.DETAILS_ID); close(); return; } if (!rememberBun.getSelection()) { service.setWarnUserWhenConflict(true); } else { service.setWarnUserWhenConflict(false); service.setConflictStrategy(selectedStrategy); } super.buttonPressed(buttonId); } int selectedStrategy = ConsistencyService.CONFLICT_STRATEGY_DEFAULT; public int getStrategy() { return selectedStrategy; } }