package com.sap.furcas.ide.editor.dialogs; import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.dialogs.ElementListSelectionDialog; import com.sap.furcas.metamodel.FURCAS.TCS.ContextTemplate; public class ChooseConcreteSyntaxDialog extends AbstractHandler { private final List<ContextTemplate> templateEntries; public ChooseConcreteSyntaxDialog(List<ContextTemplate> templates) { this.templateEntries = templates; } @Override public Object execute(ExecutionEvent event) throws ExecutionException { ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider()); dialog.setTitle("Concrete Template Selection"); dialog.setMessage("Select a concrete Template:"); dialog.setElements(this.prepareTemplates()); dialog.open(); return ((ChooseConcreteSyntaxDialogElement) dialog.getFirstResult()).getWrappedObject(); } private Object[] prepareTemplates() { Object[] preparedTemplates = new Object[this.templateEntries.size()]; for(int i = 0; i < this.templateEntries.size(); i++) { EObject o = this.templateEntries.get(i); ChooseConcreteSyntaxDialogElement entry = new ChooseConcreteSyntaxDialogElement(o); preparedTemplates[i] = entry; } return preparedTemplates; } }