com.vectrace.MercurialEclipse.wizards.mq.QDeletePage.java Source code

Java tutorial

Introduction

Here is the source code for com.vectrace.MercurialEclipse.wizards.mq.QDeletePage.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2008 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:
 * bastian   implementation
 *******************************************************************************/
package com.vectrace.MercurialEclipse.wizards.mq;

import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;

import com.aragost.javahg.ext.mq.Patch;
import com.vectrace.MercurialEclipse.MercurialEclipsePlugin;
import com.vectrace.MercurialEclipse.commands.extensions.mq.HgQAppliedClient;
import com.vectrace.MercurialEclipse.exception.HgException;
import com.vectrace.MercurialEclipse.model.ChangeSet;
import com.vectrace.MercurialEclipse.model.HgRoot;
import com.vectrace.MercurialEclipse.ui.ChangesetTable;
import com.vectrace.MercurialEclipse.ui.SWTWidgetHelper;
import com.vectrace.MercurialEclipse.wizards.HgWizardPage;

/**
 * @author bastian
 *
 */
public class QDeletePage extends HgWizardPage {

    private final boolean showRevSelector;
    private final HgRoot root;
    private ListViewer patchViewer;
    private ChangesetTable changesetTable;
    private Button revCheckBox;
    private Button keepCheckBox;

    public QDeletePage(String pageName, String title, ImageDescriptor titleImage, String description, HgRoot root,
            boolean showRevSelector) {
        super(pageName, title, titleImage, description);
        this.root = root;
        this.showRevSelector = showRevSelector;
    }

    /**
     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
     */
    public void createControl(Composite parent) {
        Composite composite = SWTWidgetHelper.createComposite(parent, 2);
        Group g = SWTWidgetHelper.createGroup(composite, Messages.getString("QDeletePage.patchGroup.title")); //$NON-NLS-1$

        IBaseLabelProvider labelProvider = new LabelProvider() {
            @Override
            public String getText(Object element) {
                return element.toString();
            }
        };

        this.patchViewer = SWTWidgetHelper.createListViewer(g, Messages.getString("QDeletePage.patchViewer.title"), //$NON-NLS-1$
                100, labelProvider);
        populatePatchViewer();

        g = SWTWidgetHelper.createGroup(composite, Messages.getString("QDeletePage.optionGroup.title")); //$NON-NLS-1$
        this.keepCheckBox = SWTWidgetHelper.createCheckBox(g, Messages.getString("QDeletePage.keepCheckBox.title")); //$NON-NLS-1$

        if (showRevSelector) {
            this.revCheckBox = SWTWidgetHelper.createCheckBox(g,
                    Messages.getString("QDeletePage.revCheckBox.title")); //$NON-NLS-1$

            SelectionListener revListener = new SelectionListener() {

                public void widgetDefaultSelected(SelectionEvent e) {
                    widgetSelected(e);
                }

                public void widgetSelected(SelectionEvent e) {
                    changesetTable.setEnabled(revCheckBox.getSelection());
                    patchViewer.getControl().setEnabled(!revCheckBox.getSelection());
                }

            };

            revCheckBox.addSelectionListener(revListener);

            GridData gridData = new GridData(GridData.FILL_BOTH);
            gridData.heightHint = 150;
            gridData.minimumHeight = 50;
            this.changesetTable = new ChangesetTable(g, root);
            this.changesetTable.setLayoutData(gridData);
            this.changesetTable.setEnabled(false);
        }

        setControl(composite);
    }

    /**
     *
     */
    private void populatePatchViewer() {
        try {
            List<Patch> patches = HgQAppliedClient.getUnappliedPatches(root);
            for (Patch patch : patches) {
                patchViewer.add(patch);
            }
        } catch (HgException e) {
            MercurialEclipsePlugin.logError(e);
            setErrorMessage(e.getLocalizedMessage());
        }
    }

    /**
     * @return the patchViewer
     */
    public ListViewer getPatchViewer() {
        return patchViewer;
    }

    /**
     * @return the revCheckBox
     */
    public Button getRevCheckBox() {
        return revCheckBox;
    }

    /**
     * @return the keepCheckBox
     */
    public Button getKeepCheckBox() {
        return keepCheckBox;
    }

    public ChangeSet getSelectedChangeset() {
        if (changesetTable == null) {
            return null;
        }

        return changesetTable.getSelection();
    }

}