/*
* Jampa
* Copyright (C) 2008-2009 J. Devauchelle and contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.jampa.gui.handlers.playlists;
import java.util.Iterator;
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.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
import org.jampa.controllers.Controller;
import org.jampa.gui.translations.Messages;
import org.jampa.logging.Log;
import org.jampa.model.playlists.Playlist;
public class MenuDeletePlaylistHandler extends AbstractHandler implements IHandler {
private IWorkbenchPage _page;
private void closeViewByID(String id) {
IViewReference view = null;
IViewReference[] tabView = _page.getViewReferences();
for (int i = 0; i < tabView.length; i++) {
if ((tabView[i].getSecondaryId() != null) &&
(tabView[i].getSecondaryId().equals(id))) {
view = tabView[i];
break;
}
}
if (view != null) {
_page.hideView(view);
}
}
@SuppressWarnings("unchecked")
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
_page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
boolean confirm = MessageDialog.openConfirm(window.getShell(),
Messages.getString("MenuDeletePlaylistHandler.Title"), //$NON-NLS-1$
Messages.getString("MenuDeletePlaylistHandler.Question")); //$NON-NLS-1$
if (confirm) {
ISelection selection = window.getActivePage().getSelection();
Iterator iter = ((IStructuredSelection)selection).iterator();
while (iter.hasNext()) {
Object obj = iter.next();
Log.getInstance(MenuDeletePlaylistHandler.class).debug("Removing playlist : " + ((Playlist ) obj).getName()); //$NON-NLS-1$
Controller.getInstance().getPlaylistController().removePlaylist(((Playlist ) obj).getName());
closeViewByID(((Playlist ) obj).getName());
}
}
return null;
}
}