/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.windup.ui.internal.intro; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.intro.IIntroManager; import org.eclipse.ui.intro.IIntroPart; import org.eclipse.ui.progress.UIJob; import org.jboss.tools.windup.ui.WindupPerspective; import org.jboss.tools.windup.ui.WindupUIPlugin; import org.jboss.tools.windup.ui.internal.Messages; import org.jboss.tools.windup.ui.internal.intro.GettingStartedEditor.EditorInput; /** * Action for opening the {@link GettingStartedEditor}. */ public class ShowGettingStartedAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; @Override public void run(IAction action) { ShowGettingStartedAction.doRun(window); } /** * Closes the intro view, opens the Windup perspective, and opens the 'getting started' editor. */ public static void doRun(IWorkbenchWindow window) { UIJob job = new UIJob(Messages.showWindupGettingStarted) { public IStatus runInUIThread(IProgressMonitor monitor) { monitor.beginTask(Messages.showWindupGettingStarted, 1); try { try { IIntroManager introMgr = window.getWorkbench().getIntroManager(); IIntroPart intro = introMgr.getIntro(); if (intro != null) { introMgr.closeIntro(intro); } PlatformUI.getWorkbench().showPerspective(WindupPerspective.ID, window); monitor.worked(1); window.getActivePage().openEditor(EditorInput.INSTANCE, GettingStartedEditor.VIEW_ID); return Status.OK_STATUS; } catch (Throwable e) { WindupUIPlugin.log(e); } } finally { monitor.done(); } return Status.OK_STATUS; } }; job.schedule(); } @Override public void selectionChanged(IAction action, ISelection selection) {} @Override public void dispose() {} @Override public void init(IWorkbenchWindow window) { this.window = window; } }