// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.editors.actions; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import com.amalto.workbench.editors.RoutingEngineV2BrowserMainPage; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.image.ImageCache; import com.amalto.workbench.utils.Util; import com.amalto.workbench.webservices.TMDMService; import com.amalto.workbench.webservices.WSDeleteRoutingOrderV2; import com.amalto.workbench.webservices.WSRoutingOrderV2; import com.amalto.workbench.webservices.WSRoutingOrderV2PK; /*************************************************************** * Delete Items Action * * @author bgrieder * ***************************************************************/ public class DeleteItemsAction extends Action { private static Log log = LogFactory.getLog(DeleteItemsAction.class); protected Shell shell = null; protected Viewer viewer; private RoutingEngineV2BrowserMainPage routingEngineV2BrowserMainPage; public DeleteItemsAction(Shell shell, RoutingEngineV2BrowserMainPage routingEngineV2BrowserMainPage, Viewer viewer) { this.shell = shell; this.routingEngineV2BrowserMainPage = routingEngineV2BrowserMainPage; this.viewer = viewer; setImageDescriptor(ImageCache.getImage("icons/delete_obj.gif"));//$NON-NLS-1$ IStructuredSelection selection = ((IStructuredSelection) viewer.getSelection()); if (selection.size() == 1) { setText(Messages.RoutingEngineV2BrowserMainPage_DelSelectedItem); } else { setText(Messages.bind(Messages.RoutingEngineV2BrowserMainPage_DeleteThese, selection.size())); } setToolTipText("Delete the selected Routing Order" + (selection.size() > 1 ? "s" : TEXT));//$NON-NLS-1$//$NON-NLS-2$ } @Override public void run() { try { super.run(); // retrieve the list of items IStructuredSelection selection = ((IStructuredSelection) viewer.getSelection()); List<WSRoutingOrderV2> lineItems = selection.toList(); if (lineItems.size() == 0) { return; } if (!MessageDialog.openConfirm(this.shell, Messages.RoutingEngineV2BrowserMainPage_ConfirmDeletion, Messages.bind(Messages.RoutingEngineV2BrowserMainPage_ErrorMsg2, lineItems.size()))) { return; } // Instantiate the Monitor with actual deletes DeleteItemsWithProgress diwp = new DeleteItemsWithProgress( (TMDMService) routingEngineV2BrowserMainPage.getAdapter(TMDMService.class), lineItems, this.shell); // run new ProgressMonitorDialog(this.shell).run(false, // fork true, // cancelable diwp); // refresh the search routingEngineV2BrowserMainPage.doSearch(); } catch (Exception e) { log.error(e.getMessage(), e); MessageDialog.openError(shell, Messages._Error, Messages.bind(Messages.RoutingEngineV2BrowserMainPage_ErrorMsg3, e.getLocalizedMessage())); } } @Override public void runWithEvent(Event event) { super.runWithEvent(event); } class DeleteItemsWithProgress implements IRunnableWithProgress { Collection<WSRoutingOrderV2> lineItems; Shell parentShell; private TMDMService service; public DeleteItemsWithProgress(TMDMService mdmService, Collection<WSRoutingOrderV2> lineItems, Shell shell) { super(); this.service = mdmService; this.lineItems = lineItems; this.parentShell = shell; } public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { monitor.beginTask(Messages.RoutingEngineV2BrowserMainPage_DeletingItems, lineItems.size()); if (service != null) { int i = 0; for (WSRoutingOrderV2 lineItem : lineItems) { monitor.subTask(Messages.RoutingEngineV2BrowserMainPage_ProcessingItem + (i++)); if (monitor.isCanceled()) { MessageDialog.openWarning(this.parentShell, Messages.RoutingEngineV2BrowserMainPage_UserCancelDel, Messages.RoutingEngineV2BrowserMainPage_WarningMsg + i + Messages.RoutingEngineV2BrowserMainPage_WarningMsgA + Messages.RoutingEngineV2BrowserMainPage_WarningMsgB); return; } service.deleteRoutingOrderV2(new WSDeleteRoutingOrderV2(new WSRoutingOrderV2PK(lineItem.getName(), lineItem.getStatus()))); monitor.worked(1); }// for } monitor.done(); } catch (Exception e) { log.error(e.getMessage(), e); if (!Util.handleConnectionException(shell, e, Messages.RoutingEngineV2BrowserMainPage_ErrorDel)) { MessageDialog.openError(shell, Messages.RoutingEngineV2BrowserMainPage_ErrorDel, Messages.RoutingEngineV2BrowserMainPage_WarningMsg1 + e.getLocalizedMessage()); } }// try }// run }// class DeleteItemsWithProgress }