/* * Copyright (c) 2006, 2007 Borland Software Corp. * * 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: * Dmitry Stadnik - initial API and implementation */ package org.eclipse.gmf.internal.common.ui; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.swt.SWT; 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.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; /** * @author dstadnik */ public abstract class ListElementSelectorExtension extends ElementSelectorExtension { protected List list; public void createControl(Composite parent) { Composite plate = new Composite(parent, SWT.NONE); { GridLayout layout = new GridLayout(); plate.setLayout(layout); GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; data.grabExcessHorizontalSpace = true; data.verticalAlignment = GridData.FILL; data.grabExcessVerticalSpace = true; plate.setLayoutData(data); } Label label = new Label(plate, SWT.NONE); label.setText(getModelElementName()); { GridData data = new GridData(); label.setLayoutData(data); } list = new List(plate, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); list.setEnabled(false); { GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; data.grabExcessHorizontalSpace = true; data.verticalAlignment = GridData.FILL; data.grabExcessVerticalSpace = true; list.setLayoutData(data); } // logic list.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { selectedModelElement = modelElements.get(list.getSelectionIndex()); fireModelElementChanged(); } }); } public void setResource(Resource resource) { selectedModelElement = null; modelElements.clear(); list.removeAll(); if (resource == null) { list.setEnabled(false); } else { list.setEnabled(true); modelElements = getModelElements(resource); for (EObject next : modelElements) { list.add(getModelElementLabel(next)); } if (!modelElements.isEmpty()) { selectedModelElement = modelElements.get(0); list.select(0); } } fireModelElementChanged(); } }