package org.jampa.gui.handlers.playlists;
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.InputDialog;
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.model.playlists.Playlist;
import org.jampa.model.validators.PlaylistNameValidator;
public class MenuRenamePlaylistHandler extends AbstractHandler implements
IHandler {
private void closeViewByID(String id) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
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);
}
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
InputDialog dialog = new InputDialog(HandlerUtil.getActiveWorkbenchWindow(event).getShell(),
Messages.getString("MenuRenamePlaylistHandler.Title"), Messages.getString("MenuRenamePlaylistHandler.Question"), Messages.getString("MenuCopyPlaylistHandler.DefaultValue"), new PlaylistNameValidator()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
int result = dialog.open();
if (result == InputDialog.OK) {
ISelection selection = window.getActivePage().getSelection();
Object obj = ((IStructuredSelection) selection).getFirstElement();
if (obj != null) {
closeViewByID(((Playlist ) obj).getName());
Controller.getInstance().getPlaylistController().renamePlaylist(dialog.getValue(), ((Playlist) obj).getName());
}
}
return null;
}
}