org.jboss.tools.jbpm.convert.bpmnto.wizard.BpmnPoolsChoicePage.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.jbpm.convert.bpmnto.wizard.BpmnPoolsChoicePage.java

Source

/******************************************************************************* 
 * Copyright (c) 2008 Red Hat, Inc. 
 * Distributed under license by Red Hat, Inc. All rights reserved. 
 * This program is 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: 
 * Red Hat, Inc. - initial API and implementation 
 ******************************************************************************/

package org.jboss.tools.jbpm.convert.bpmnto.wizard;

import java.util.Map;
import java.util.Map.Entry;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Shell;
import org.jboss.tools.jbpm.convert.b2j.messages.B2JMessages;
import org.jboss.tools.jbpm.convert.bpmnto.wizard.BpmnToWizard;

/**
 * @author Grid Qian
 * 
 *         the wizardpage used by user to choose the bpmn pool from a bpmn
 *         diagram
 */
public class BpmnPoolsChoicePage extends AbstractConvertWizardPage {

    CheckboxTableViewer listViewer;
    Button selectButton;
    Button deselectButton;
    private Map<String, String> idMap;

    private IWizard wizard;

    public BpmnPoolsChoicePage(String pageName, String title, String tableTitle, String description) {
        super(pageName, title, tableTitle, description);
    }

    public void createTableViewer(Composite composite) {
        listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
        GridData data = new GridData(GridData.FILL_BOTH);
        data.heightHint = 250;
        data.widthHint = 300;
        listViewer.getTable().setLayoutData(data);

        listViewer.setLabelProvider(new LabelProvider());
        listViewer.setContentProvider(new ArrayContentProvider());
        listViewer.addCheckStateListener(new ICheckStateListener() {
            @SuppressWarnings("unchecked")
            public void checkStateChanged(CheckStateChangedEvent event) {
                if (event.getChecked()) {
                    (((BpmnToWizard) wizard)).getPoolIdList()
                            .add(((Entry<String, String>) event.getElement()).getKey());
                    deselectButton.setEnabled(true);
                    if ((((BpmnToWizard) wizard)).getPoolIdList().size() == idMap.size()) {
                        selectButton.setEnabled(false);
                    }
                } else {
                    (((BpmnToWizard) wizard)).getPoolIdList()
                            .remove(((Entry<String, String>) event.getElement()).getKey());
                    selectButton.setEnabled(true);
                    if ((((BpmnToWizard) wizard)).getPoolIdList().size() == 0) {
                        deselectButton.setEnabled(false);
                    }
                }
                changeComplete();
            }
        });
    }

    public void addOtherAreas(Composite composite) {
        Composite buttonComposite = new Composite(composite, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.numColumns = 0;
        layout.marginWidth = 0;
        layout.horizontalSpacing = 4;
        buttonComposite.setLayout(layout);
        buttonComposite.setLayoutData(new GridData(SWT.END, SWT.TOP, true, false));

        selectButton = createButton(buttonComposite, B2JMessages.Label_Select_All, false);

        SelectionListener listener = new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                listViewer.setAllChecked(true);
                selectButton.setEnabled(false);
                deselectButton.setEnabled(true);
                (((BpmnToWizard) wizard)).getPoolIdList().addAll(idMap.keySet());
                changeComplete();
            }
        };
        selectButton.addSelectionListener(listener);

        deselectButton = createButton(buttonComposite, B2JMessages.Label_Deselect_All, false);

        listener = new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                listViewer.setAllChecked(false);
                selectButton.setEnabled(true);
                deselectButton.setEnabled(false);
                (((BpmnToWizard) wizard)).getPoolIdList().clear();
                changeComplete();
            }
        };
        deselectButton.addSelectionListener(listener);
    }

    private Button createButton(Composite parent, String label, boolean defaultButton) {
        // increment the number of columns in the button bar
        ((GridLayout) parent.getLayout()).numColumns++;
        Button button = new Button(parent, SWT.PUSH);
        button.setText(label);
        if (defaultButton) {
            Shell shell = parent.getShell();
            if (shell != null) {
                shell.setDefaultButton(button);
            }
        }
        setButtonLayoutData(button);
        return button;
    }

    public void initializePage() {
        if (listViewer == null) {
            return;
        }
        if (idMap != null) {
            listViewer.setInput(idMap.entrySet());
        } else {
            listViewer.setInput(null);
            return;
        }
        wizard = this.getWizard();
        (((BpmnToWizard) wizard)).getPoolIdList().addAll(idMap.keySet());
        listViewer.setAllChecked(true);
        selectButton.setEnabled(false);
        deselectButton.setEnabled(true);
        changeComplete();
    }

    public void changeComplete() {
        if (listViewer.getCheckedElements().length != 0) {
            setPageComplete(true);
        } else {
            setPageComplete(false);
        }
    }

    public boolean canFlipToNextPage() {
        return isPageComplete();
    }

    public Map<String, String> getIdMap() {
        return idMap;
    }

    public void setIdMap(Map<String, String> idMap) {
        this.idMap = idMap;
        initializePage();
    }

}