/*******************************************************************************
* Copyright (c) 2010, 2011 CEA LIST.
*
* 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:
* Nicolas Guyomar (Mia-Software) - Bug 335020 - Nattable widget should use the Eclipse framework
*******************************************************************************/
package org.eclipse.papyrus.infra.table.common.handlers;
import org.eclipse.emf.facet.widgets.nattable.INatTableWidget;
import org.eclipse.emf.facet.widgets.nattable.INatTableWidgetProvider;
import org.eclipse.emf.facet.widgets.nattable.tableconfiguration.InstantiationMethod;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
/**
* Comes from org.eclipse.emf.facet.widget.nattable.workbench.
*
*/
public class CreateNewElementContributionItem extends ContributionItem {
private static final int NUMBER_OF_METHOD = 5;
@Override
public void fill(final Menu menu, final int index) {
IWorkbenchPart activePart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if(activePart != null) {
if(activePart instanceof INatTableWidgetProvider) {
INatTableWidgetProvider nattINatableWidgetProvider = (INatTableWidgetProvider)activePart;
final INatTableWidget natTableWidget = nattINatableWidgetProvider.getNatTableWidget();
if(natTableWidget.getInstantionMethodHistory() != null && !natTableWidget.getInstantionMethodHistory().isEmpty()) {
for(int i = 0; i < natTableWidget.getInstantionMethodHistory().size(); i++) {
if(i >= CreateNewElementContributionItem.NUMBER_OF_METHOD) {
break;
}
final InstantiationMethod meth = natTableWidget.getInstantionMethodHistory().get(i);
MenuItem menuItem = new MenuItem(menu, SWT.CHECK);
menuItem.setText(i + " " + meth.getName()); //$NON-NLS-1$
menuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
for(MenuItem menuItem2 : menu.getItems()) {
menuItem2.setSelection(false);
}
MenuItem localMenuItem = (MenuItem)e.widget;
localMenuItem.setSelection(true);
natTableWidget.createNewElement(meth);
}
});
}
}
}
}
}
}