根据here我已经实现了一个IIntroAction,它将在介绍页面中打开Eclipse中的透视图(我的操作几乎完全相同)。
Mine与那里显示的有点不同但基本上它被调用(作为url)如下:
http://org.eclipse.ui.intro/runAction?class=my.plugin.actions.OpenPerspectiveAction&pluginId=my.plugin&pId=my.other.plugin.MyPerspective
其中pId是我想要打开的透视图的id。 (这很有效!......大部分时间。)
如上面的链接所述,此操作的问题在于,如果MyPerspective在欢迎页面下打开,则不会打开它(或者不会关闭欢迎页面......)。 / p>
如何在动作调用中显示所需的视角,即使它在欢迎页面下面打开了?
我探索的可能解决方案的一些途径(不完全是因为我可能错过了一些东西):
这些只是概念解决方案---我不知道它们是否真的可以实施!如果有人能够解决我如何解决这个问题,我将不胜感激。
答案 0 :(得分:3)
以下代码在我的RCP项目中正常运行。
简介页面链接:
<a id="a-ism" href="http://org.eclipse.ui.intro/runAction?pluginId=sernet.gs.ui.rcp.main&class=sernet.gs.ui.rcp.main.actions.ShowISMPerspectiveIntroAction">
动作类:
public class ShowISMPerspectiveIntroAction extends ShowPerspectiveIntroAction {
@Override
public String getCheatSheetId() {
return "sernet.gs.ui.rcp.main.cheatsheet1";
}
@Override
public String getPerspectiveId() {
return Iso27kPerspective.ID;
}
}
动作基类:
import org.eclipse.ui.intro.config.IIntroAction;
public abstract class ShowPerspectiveIntroAction implements IIntroAction {
private static final Logger LOG = Logger.getLogger(ShowPerspectiveIntroAction.class);
@Override
public void run(IIntroSite arg0, Properties arg1) {
// Switch to perspective
final IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IPerspectiveDescriptor activePerspective = workbenchWindow.getActivePage().getPerspective();
if(activePerspective==null || !activePerspective.getId().equals(getPerspectiveId())) {
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
// switch perspective
try {
workbenchWindow.getWorkbench().showPerspective(getPerspectiveId(),workbenchWindow);
} catch (WorkbenchException e) {
LOG.error("Can not switch to perspective: " + getPerspectiveId(), e);
}
}
});
}
// close intro/welcome page
final IIntroPart introPart = PlatformUI.getWorkbench().getIntroManager().getIntro();
PlatformUI.getWorkbench().getIntroManager().closeIntro(introPart);
// Show CheatSheet
ShowCheatSheetAction action = new ShowCheatSheetAction("Show security assessment cheat sheet", getCheatSheetId());
action.run();
}
public abstract String getCheatSheetId();
public abstract String getPerspectiveId();
}