/******************************************************************************* * Copyright (c) 2008, 2012 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.bpel.ui.dialogs; import org.eclipse.bpel.model.partnerlinktype.PartnerLinkType; import org.eclipse.bpel.model.partnerlinktype.Role; import org.eclipse.bpel.ui.details.providers.ModelTreeLabelProvider; import org.eclipse.bpel.ui.details.providers.PartnerLinkTypeTreeContentProvider; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.dialogs.StatusDialog; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; public class PartnerLinkRoleSelectorDialog extends StatusDialog { private int fSelectedRole; private EList<Role> fRoles; private Tree fTree; private TreeViewer fTreeViewer; private PartnerLinkTypeTreeContentProvider treeContentProvider; private PartnerLinkType fPartnerLinkType; public PartnerLinkRoleSelectorDialog(Shell shell, EList<Role> list, PartnerLinkType plinkType) { super(shell); fRoles = list; fPartnerLinkType = plinkType; } @Override public Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); Group group = new Group(composite, SWT.NONE); group.setLayout(new GridLayout()); group.setText("Roles"); createRadioButton(group, fRoles.get(0).getName(), 0, true); createRadioButton(group, fRoles.get(1).getName(), 1, false); GridData gridData = new GridData(GridData.FILL_BOTH); gridData.widthHint = 400; group.setLayoutData(gridData); createLowerView(composite); fTreeViewer.setInput(fPartnerLinkType); return composite; } protected Button createRadioButton(Composite parent, String label, int id, boolean checked) { Button button = new Button(parent, SWT.RADIO); button.setText(label); button.setFont(JFaceResources.getDialogFont()); button.setData( Integer.valueOf( id )); button.setSelection(checked); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { Button b = (Button) event.widget; fSelectedRole = ((Integer) b.getData()).intValue(); } }); return button; } private Object createLowerView(Composite parent) { treeContentProvider = new PartnerLinkTypeTreeContentProvider(true); fTree = new Tree(parent, SWT.BORDER); fTreeViewer = new TreeViewer(fTree); fTreeViewer.setContentProvider(treeContentProvider); fTreeViewer.setLabelProvider(new ModelTreeLabelProvider()); fTreeViewer.setInput(null); fTreeViewer.setAutoExpandLevel(5); GridData data = new GridData(); data.grabExcessVerticalSpace = true; data.grabExcessHorizontalSpace = true; data.horizontalAlignment = GridData.FILL; data.verticalAlignment = GridData.FILL; data.minimumHeight = 200; fTree.setLayoutData(data); return fTree; } public int getSelectedRole() { return fSelectedRole; } }