package rocks.inspectit.ui.rcp.handlers; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; 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.core.commands.IHandler; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.shared.all.serializer.SerializationException; import rocks.inspectit.shared.cs.storage.LocalStorageData; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.provider.ILocalStorageDataProvider; /** * Handler for deleting the local storage. * * @author Ivan Senic * */ public class DeleteLocalStorageHandler extends AbstractHandler implements IHandler { /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { StructuredSelection structuredSelection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); List<LocalStorageData> localStoragesToDelete = new ArrayList<>(); for (Iterator<?> it = structuredSelection.iterator(); it.hasNext();) { LocalStorageData localStorageData = ((ILocalStorageDataProvider) it.next()).getLocalStorageData(); if (localStorageData.isFullyDownloaded()) { localStoragesToDelete.add(localStorageData); } } if (!localStoragesToDelete.isEmpty()) { StringBuffer confirmText = new StringBuffer(100); boolean plural = localStoragesToDelete.size() > 1; if (!plural) { confirmText.append("Are you sure you want to delete the locally downloaded data for the selected storage? "); } else { confirmText.append("Are you sure you want to delete the locally downloaded data for the " + localStoragesToDelete.size() + " selected storages? "); } MessageBox confirmDelete = new MessageBox(HandlerUtil.getActiveShell(event), SWT.OK | SWT.CANCEL | SWT.ICON_QUESTION); confirmDelete.setText("Confirm Delete"); confirmDelete.setMessage(confirmText.toString()); if (SWT.OK == confirmDelete.open()) { for (LocalStorageData localStorageData : localStoragesToDelete) { try { InspectIT.getDefault().getInspectITStorageManager().deleteLocalStorageData(localStorageData); } catch (SerializationException | IOException e) { throw new ExecutionException("There was an exception trying to delete local storage data.", e); } } } } return null; } }