blob: b9c12267b2bf20411435674c4ce2b3c849a4ac74 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2007 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.ui.synchronize;
import org.eclipse.compare.CompareUI;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.team.internal.ui.TeamUIMessages;
import org.eclipse.team.ui.SaveablePartAdapter;
import org.eclipse.team.ui.SaveablePartDialog;
import org.eclipse.team.ui.TeamUI;
/**
* A dialog that displays the option of adding the participant to the {@link org.eclipse.team.ui.synchronize.ISynchronizeManager}
* when the dialog is closed. This can be useful for showing changes for a participant modally and allowing the
* user to decide if the participant shown should be made available non-modally.
*
* @see SaveablePartAdapter
* @see ISynchronizeParticipant
* @since 3.0
* @deprecated Clients should use {@link ParticipantPageCompareEditorInput}
* and {@link CompareUI#openCompareDialog(org.eclipse.compare.CompareEditorInput)}
*/
@Deprecated
public class ParticipantPageDialog extends SaveablePartDialog {
private ISynchronizeParticipant participant;
private Button rememberParticipantButton;
/**
* Creates a dialog with the given participant and input. The input is not created until the dialog
* is opened.
*
* @param shell the parent shell or <code>null</code> to create a top level shell.
* @param input the compare input to show in the dialog
* @param participant the given participant
*/
public ParticipantPageDialog(Shell shell, SaveablePartAdapter input, ISynchronizeParticipant participant) {
super(shell, input);
this.participant = participant;
}
/* (non-Javadoc)
* Method declared on Dialog.
*/
@Override
protected Control createDialogArea(Composite parent2) {
Composite parent = (Composite) super.createDialogArea(parent2);
if (isOfferToRememberParticipant() && participant != null && ! particantRegisteredWithSynchronizeManager(participant)) {
rememberParticipantButton = new Button(parent, SWT.CHECK);
rememberParticipantButton.setText(TeamUIMessages.ParticipantCompareDialog_1);
}
Dialog.applyDialogFont(parent2);
return parent;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
*/
@Override
protected void buttonPressed(int buttonId) {
if(buttonId == IDialogConstants.OK_ID && isRememberParticipant()) {
rememberParticipant();
}
super.buttonPressed(buttonId);
}
private boolean isRememberParticipant() {
return getParticipant() != null && rememberParticipantButton != null && rememberParticipantButton.getSelection();
}
private boolean particantRegisteredWithSynchronizeManager(ISynchronizeParticipant participant) {
return TeamUI.getSynchronizeManager().get(participant.getId(), participant.getSecondaryId()) != null;
}
private void rememberParticipant() {
if(getParticipant() != null) {
ISynchronizeManager mgr = TeamUI.getSynchronizeManager();
ISynchronizeView view = mgr.showSynchronizeViewInActivePage();
mgr.addSynchronizeParticipants(new ISynchronizeParticipant[] {getParticipant()});
view.display(participant);
}
}
/**
* Returns the participant showing in this dialog.
*
* @return the participant showing in this dialog.
*/
protected ISynchronizeParticipant getParticipant() {
return participant;
}
/**
* Return whether the ability to remember the participant in the synchronize
* view should be presented to the user. By default, <code>true</code> is
* returned. Subclasses may override.
* @return whether the ability to remember the participant in the synchronize
* view should be presented to the user
* @since 3.2
*/
protected boolean isOfferToRememberParticipant() {
return true;
}
}