我正在努力在我的基于Eclipse的RCP应用程序中最大化EditorPart绝对是全屏,没有修剪,没有菜单等等。实际上,它是GEF的编辑。这有点像黑客,但它有点工作:
GraphicalViewer viewer = (GraphicalViewer)getWorkbenchPart().getAdapter(GraphicalViewer.class);
Control control = viewer.getControl();
Composite oldParent = control.getParent();
Shell shell = new Shell(SWT.APPLICATION_MODAL);
shell.setFullScreen(true);
shell.setMaximized(true);
// Some code here to listen to Esc key to dispose Shell and return...
shell.setLayout(new FillLayout());
control.setParent(shell);
shell.open();
基本上它将GraphicalViewer控件的父级设置为新创建的最大化Shell。按下escape将控件返回到原始父级(为简洁起见,代码未显示)。
唯一不起作用的是接收全局按键( Del , Ctrl + Z , Ctrl + A )为Workbench声明并转发到EditorPart的那些。有什么方法可以挂钩到这些或从EditorPart重定向它们以将它们转发到GraphicalViewer?
提前致谢
答案 0 :(得分:3)
简短的回答是你做不到。一旦从工作台窗口中重新创建该组合,它就完全被破坏了。由于未处理事件(如激活,焦点,setBounds(*)),系统将无法正确处理该部件。
唯一支持的方法是打开一个新的Workbench窗口,其中包含一个仅包含编辑器区域的透视图,并为该窗口+透视图组合扩展org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(Shell)
方法以隐藏所有不用的修剪希望,使用org.eclipse.ui.application.IWorkbenchWindowConfigurer
。
ex,在MyWorkbenchWindowAdvisor中:
public void createWindowContents(Shell shell) {
if (isCreatingSpecialPerspective()) {
final IWorkbenchWindowConfigurer config = getWindowConfigurer();
config.setShowCoolBar(false);
config.setShowFastViewBars(false);
config.setShowMenuBar(false);
config.setShowPerspectiveBar(false);
config.setShowProgressIndicator(false);
config.setShowStatusLine(false);
}
super.createWindowContents(shell);
}
另请查看http://code.google.com/p/eclipse-fullscreen/,其中包含与运行具有全屏支持的RCP程序有关的EPL代码。
答案 1 :(得分:0)
我的建议是尝试从另一个角度来解决这个问题。不要在代码中侦听按键并对其进行操作,而是定义your own key binding scheme,然后创建命令并使它们使用此方案。这意味着您不再需要在代码中监听关键笔划,而是通过这些关键笔划执行的命令执行任何操作。