/******************************************************************************* * 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(); } }