com.vectrace.MercurialEclipse.dialogs.TransplantRejectsDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.vectrace.MercurialEclipse.dialogs.TransplantRejectsDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2010 VecTrace (Zingo Andersen) and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *       Ilya Ivanov (Intland) - implementation
 *     Andrei Loskutov        - bug fixes
 *******************************************************************************/
package com.vectrace.MercurialEclipse.dialogs;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import com.vectrace.MercurialEclipse.commands.HgRevertClient;
import com.vectrace.MercurialEclipse.exception.HgException;
import com.vectrace.MercurialEclipse.model.HgRoot;
import com.vectrace.MercurialEclipse.team.cache.RefreshRootJob;
import com.vectrace.MercurialEclipse.wizards.TransplantWizard;

/**
 * Dialog shows list of rejected patches. Allows user to revert changes and reopen Transplant wizard
 */
public class TransplantRejectsDialog extends RejectsDialog {

    public TransplantRejectsDialog(Shell parentShell, HgRoot hgRoot, String message) throws HgException {
        super(parentShell, hgRoot, message, "TransplantRejectsDialog.title",
                "TransplantRejectsDialog.transplantFailed");

        setBlockOnOpen(false);
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.CANCEL_ID,
                Messages.getString("TransplantRejectsDialog.tryAnotherTransplant"), false);
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
    }

    @Override
    protected void cancelPressed() {
        final Display display = getShell().getDisplay();

        new Job("Reverting transplant") {
            @Override
            protected IStatus run(IProgressMonitor monitor) {
                monitor.beginTask("Reverting transplant", 1);

                try {
                    HgRevertClient.performRevertAll(new NullProgressMonitor(), hgRoot);
                } finally {
                    new RefreshRootJob(hgRoot, RefreshRootJob.LOCAL_AND_OUTGOING).schedule();
                }

                display.syncExec(new Runnable() {
                    public void run() {
                        TransplantWizard transplantWizard = new TransplantWizard(hgRoot);
                        WizardDialog transplantWizardDialog = new WizardDialog(getParentShell(), transplantWizard);
                        transplantWizardDialog.setBlockOnOpen(false);
                        transplantWizardDialog.open();
                    }
                });

                monitor.done();
                return Status.OK_STATUS;
            }
        }.schedule();

        close();
    }
}