com.itsolut.mantis.ui.action.MantisDeleteAttachmentAction.java Source code

Java tutorial

Introduction

Here is the source code for com.itsolut.mantis.ui.action.MantisDeleteAttachmentAction.java

Source

/*******************************************************************************
 * Copyright (C) 2011 Robert Munteanu <robert.munteanu@gmail.com>
 * 
 * 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
 *******************************************************************************/
package com.itsolut.mantis.ui.action;

import java.util.ArrayList;
import java.util.List;

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.mylyn.tasks.core.ITaskAttachment;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.BaseSelectionListenerAction;

/**
 * @author Robert Munteanu
 *
 */
public class MantisDeleteAttachmentAction extends BaseSelectionListenerAction implements IActionDelegate {

    private List<ITaskAttachment> attachments = new ArrayList<ITaskAttachment>();

    public MantisDeleteAttachmentAction() {

        super("DeleteAttachmentAction");
    }

    public void run(IAction action) {

        String message = "";

        for (ITaskAttachment attachment : attachments)
            message += " - " + attachment.getFileName() + " \n";

        boolean confirm = MessageDialog.openConfirm(null, "Attachment deletion",
                "Please confirm that the following attachments will be deleted:\n\n" + message);
        if (!confirm)
            return;

        TaskEditor taskEditor = null;
        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        IWorkbenchPage page = window.getActivePage();
        IEditorPart activeEditor = page.getActiveEditor();
        if (activeEditor instanceof TaskEditor)
            taskEditor = (TaskEditor) activeEditor;

        final DeleteAttachmentJob job = new DeleteAttachmentJob(attachments, taskEditor);
        job.setUser(true);
        job.schedule();
    }

    public void selectionChanged(IAction action, ISelection selection) {

        attachments.clear();
        action.setEnabled(false);

        IStructuredSelection structuredSelection = null;

        if (selection instanceof IStructuredSelection)
            structuredSelection = (IStructuredSelection) selection;

        if (structuredSelection == null || structuredSelection.isEmpty())
            return;

        for (Object selectionItem : structuredSelection.toList()) {
            if (selectionItem instanceof ITaskAttachment) {
                attachments.add((ITaskAttachment) selectionItem);
            }
        }

        action.setEnabled(attachments.size() > 0);
    }
}