/* * Copyright (c) 2004-2011 Marco Maccaferri 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: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.ui.internal.trading; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.jface.wizard.IWizardNode; import org.eclipse.jface.wizard.WizardSelectionPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbench; public class AlertSelectionPage extends WizardSelectionPage { private IWorkbench workbench; private IStructuredSelection selection; private TableViewer viewer; public AlertSelectionPage(IWorkbench workbench, IStructuredSelection selection) { super("selection"); //$NON-NLS-1$ this.workbench = workbench; this.selection = selection; setTitle(Messages.AlertSelectionPage_Title); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ @Override public void createControl(Composite parent) { viewer = new TableViewer(parent, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL); viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); viewer.setLabelProvider(new LabelProvider()); viewer.setContentProvider(new ArrayContentProvider()); viewer.setSorter(new ViewerSorter()); viewer.setInput(getContributionItems()); viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); setSelectedNode((IWizardNode) (selection.isEmpty() ? null : selection.getFirstElement())); } }); setControl(viewer.getControl()); } AlertWizardNode[] getContributionItems() { List<AlertWizardNode> list = new ArrayList<AlertWizardNode>(); IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.ui.newWizards"); //$NON-NLS-1$ IConfigurationElement[] element = extensionPoint.getConfigurationElements(); for (int i = 0; i < element.length; i++) { String category = element[i].getAttribute("category"); //$NON-NLS-1$ if ("org.eclipsetrader.ui.trading.alerts".equals(category)) { list.add(new AlertWizardNode(element[i], workbench, selection)); } } return list.toArray(new AlertWizardNode[list.size()]); } }