Java tutorial
/***************************************************************************** * Copyright (c) 2008 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the * g-Eclipse project founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributors: * Moritz Post - initial API and implementation *****************************************************************************/ package eu.geclipse.aws.ec2.ui.actions; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; 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.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import eu.geclipse.aws.ec2.EC2Keypair; import eu.geclipse.aws.ec2.EC2Registry; import eu.geclipse.aws.ec2.IEC2; import eu.geclipse.aws.ec2.op.EC2OpDeleteKeypair; import eu.geclipse.aws.ec2.op.OperationExecuter; import eu.geclipse.aws.ec2.ui.Messages; import eu.geclipse.core.reporting.ProblemException; /** * Deletes the currently selected security group from EC2. * * @author Moritz Post */ public class DeleteKeypairAction extends AbstractAWSProjectAction { /** The list of keypairs to delete. */ private List<EC2Keypair> keypairList; /** * Creates a new Action and initializes the internal data structures. */ public DeleteKeypairAction() { this.keypairList = new ArrayList<EC2Keypair>(); } @Override public void run(final IAction action) { if (action.isEnabled()) { StringBuffer strBuf = new StringBuffer(); String dash = "- "; //$NON-NLS-1$ String newLine = "\n"; //$NON-NLS-1$ for (EC2Keypair keypair : this.keypairList) { strBuf.append(dash + keypair.getName() + newLine); } Shell shell = getWorkbenchPart().getSite().getShell(); boolean confirmation = MessageDialog.openConfirm(shell, Messages.getString("DeleteKeypairAction.dialog_delete_keypair_title"), //$NON-NLS-1$ Messages.getString("DeleteKeypairAction.dialog_delete_keypair_description") //$NON-NLS-1$ + newLine + newLine + strBuf.toString()); if (confirmation) { deleteKeypairs(); } } } /** * Deletes the user selected keypair in the {@link #keypairList}. */ private void deleteKeypairs() { Job job = new Job(Messages.getString("DeleteKeypairAction.job_title")) { //$NON-NLS-1$ @Override protected IStatus run(final IProgressMonitor monitor) { try { monitor.beginTask(Messages.getString("DeleteKeypairAction.monitor_title"), 2); //$NON-NLS-1$ // extract aws access id from first security group (at least one is // present) EC2Keypair ec2Keypair = DeleteKeypairAction.this.keypairList.get(0); extractAWSVoFromGridElement(ec2Keypair); // create operation IEC2 ec2 = EC2Registry.getRegistry().getEC2(getAwsVo()); monitor.worked(1); EC2OpDeleteKeypair opDeleteKeypair = new EC2OpDeleteKeypair(ec2, ec2Keypair.getKeyPairInfo().getKeyName()); // execute operations new OperationExecuter().execOp(opDeleteKeypair); if (opDeleteKeypair.getException() != null) { processException(opDeleteKeypair.getException(), MessageFormat.format( Messages.getString( "DeleteKeypairAction.problem_could_not_delete_keypair_description"), //$NON-NLS-1$ ec2Keypair.getName())); } } catch (ProblemException problemEx) { processException(problemEx, Messages.getString("DeleteKeypairAction.problem_no_ec2_description")); //$NON-NLS-1$ } finally { monitor.done(); } return Status.OK_STATUS; } }; job.setPriority(Job.SHORT); job.setUser(true); job.schedule(); } public void selectionChanged(final IAction action, final ISelection selection) { boolean enable = false; this.keypairList.clear(); if (selection instanceof IStructuredSelection) { IStructuredSelection structuredSelection = (IStructuredSelection) selection; for (Object element : structuredSelection.toList()) { if (element instanceof EC2Keypair) { EC2Keypair ec2Keypair = (EC2Keypair) element; this.keypairList.add(ec2Keypair); } } } if (this.keypairList.size() == 1) { enable = true; } action.setEnabled(enable); } }