/* * Copyright 2011-2012 Amazon Technologies, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://aws.amazon.com/apache2.0 * * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and * limitations under the License. */ package com.amazonaws.eclipse.explorer.s3.actions; import java.util.Collection; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Display; import com.amazonaws.eclipse.core.AwsToolkitCore; import com.amazonaws.eclipse.explorer.s3.S3ContentProvider; import com.amazonaws.eclipse.explorer.s3.util.ObjectUtils; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.model.Bucket; public class DeleteBucketAction extends Action { private Collection<Bucket> buckets; public DeleteBucketAction(Collection<Bucket> buckets) { super(); this.buckets = buckets; } @Override public ImageDescriptor getImageDescriptor() { return AwsToolkitCore.getDefault().getImageRegistry().getDescriptor("remove"); } @Override public String getText() { if ( buckets.size() > 1 ) return "Delete Buckets"; else return "Delete Bucket"; } private Dialog newConfirmationDialog(String title, String message) { return new MessageDialog(Display.getDefault().getActiveShell(), title, null, message, MessageDialog.QUESTION, new String[] {"No", "Yes"}, 1); } @Override public void run() { Dialog dialog = newConfirmationDialog(getText() + "?", "Are you sure you want to delete the selected buckets?"); if (dialog.open() <= 0) return; new Job("Deleting Buckets") { @Override protected IStatus run(IProgressMonitor monitor) { try { ObjectUtils objectUtils = new ObjectUtils(); for ( Bucket bucket : buckets ) { objectUtils.deleteBucketAndAllVersions(bucket.getName()); } Display.getDefault().asyncExec(new Runnable() { public void run() { S3ContentProvider.getInstance().refresh(); } }); return Status.OK_STATUS; } catch (Exception e) { return new Status(IStatus.ERROR, AwsToolkitCore.getDefault().getPluginId(), "Unable to delete buckets: " + e.getMessage(), e); } } }.schedule(); } }