Tag: eclipse rcp

如何在不激活shell的情况下打开shell?

我需要知道是否有任何方法可以打开shell而不是激活它,即使我单击其中的控件。 解释我需要的最好的方法是向你展示这个小例子。 我需要保持第一个shell处于活动状态,即使我单击第二个shell或它包含的任何窗口小部件。 public class TestMeOut { public static void main(final String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new GridLayout(1, false)); final Shell shell2 = new Shell(shell); shell2.setLayout(new GridLayout()); final Button btn = new Button(shell, SWT.PUSH); final Button btn2 = new Button(shell2, SWT.PUSH); btn.setText(“Test me”); btn2.setText(“I steal […]

Eclipse RCP应用程序自定义工具栏

我正在为我的RCP应用程序创建一个自定义工具栏。 如图所示,我希望有一个带有其他三个文本框的下拉框。 这些基本上是输入框并且是相互依赖的。 现在,每个盒子都在不同的类中。 我想把它们放在一个类中,这样就可以更容易地为彼此创建监听器。 protected void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle()); coolBar.add(toolbar); Toolbar extraToolBar = new Toolbar(“Toolbar”); toolbar.add(extraToolBar); toolbar.add(new Separator()); toolbar.add(new MyCombo(“Demo Combo box”)); toolbar.add(new Separator()); toolbar.add(new IPaddress(“Ip”)); toolbar.add(new Separator()); toolbar.add(new Mask(“Mask”)); toolbar.add(new Separator()); toolbar.add(new Count(“Count”)); } public class IPaddress extends ControlContribution { Text textBox; public IPaddress(String id) { super(id); // […]

JFace ColumnWeigthData导致父级增长

我有一个Eclipse RCP应用程序,并希望使用ColumnWeigthData作为ColumnLayoutData在TableViewer使用动态列大小。 问题是,无论何时布局表格,父表单(示例代码中的ScrolledForm )都会增长几个像素。 要重现,您可以运行该示例并打开/关闭该部分几次。 每一个关闭部分都会变宽。 为什么会这样做,如何让它停止? package com.test; import org.eclipse.jface.layout.TableColumnLayout; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; public class TestShell extends Shell { private final FormToolkit formToolkit = new FormToolkit(Display.getDefault()); private […]

以编程方式配置p2更新存储库

Eclipse wiki中有一篇文章如何通过向产品中添加静态conf文件来配置用户的p2默认存储库: Equinox / p2 /将自更新添加到RCP应用程序 – 配置用户的默认存储库 当用户更改某些配置详细信息时,我希望在Java类中以编程方式执行相同操作。 我找不到合适的p2 API文档。

Eclipse RCP 4 – 处理程序方法参数

我目前正在研究新的Eclipse RCP框架,并对处理程序有疑问。 在RCP 3.xa处理程序类中需要实现一个接口,所以给出了方法。 在RCP 4中,处理程序类不需要实现接口。 相反,你注释方法。 例如,如果您有Vogellas Tutorial中的ExitHandler ,则会有@Execute注释。 如您所见,传递了IWorkbench参数。 package com.example.e4.rcp.todo.handler; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.workbench.IWorkbench; public class ExitHandler { @Execute public void execute(IWorkbench workbench) { workbench.close(); } } 我现在的问题是:在使用某些注释时,我如何知道传递了哪些参数? 在这种情况下,我如何知道我得到的是IWorkbench对象而不是Window对象? 事实上,我可以在没有参数的情况下注释方法,但它仍然会被执行。 某处有文件吗? Eclipse e4 Tools似乎也不支持我…

如何添加透视侦听器

在我们的应用程序中,我们有4个视图(视图1,2,3和4)和3个视角(透视图1,2和3)。 透视图是通过实现IPerspectivefactory构建的,并且视图是通过扩展viewPart构建的。 我们面临的情况是,如果选择了任何透视图,我们希望将焦点设置为特定视图。 例如,将View 1视为一个常见视图,它将在所有3个视角下显示。 每当我们选择任何透视图时,我们都希望将焦点设置为View1。 如何向透视图添加侦听器? 我们知道我们必须添加IPerspectiveListerner来监听透视变化,但是我们不确定在哪里添加它以便我们在IPerspectiveListener下实现的方法中获得执行控制。

用户点击菜单项后如何保持SWT菜单打开?

我有一个带有Check Box菜单项菜单的Eclipse RCP / SWT应用程序。 我希望能够在点击其他地方关闭菜单之前检查/取消选中多个项目。 但是,默认的SWT行为是单击后关闭菜单。 我已经实现了以下非常黑客的解决方案,但它肯定不优雅,并且可能无法在所有平台上或在所有情况下正常工作。 所以我对一种更简单的技术非常感兴趣。 下面的代码应该在eclipse中编译和运行开箱即用(对于长度道歉,它是我可以创建的最短的自包含示例): import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener2; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; public class MenuTest { public static void main( String[] args ) { // create a SWT Display and Shell final Display […]

如何切换Eclipse插件的菜单按钮图标和工具提示文本?

我正在开发一个Eclipse插件,它有一个工具栏菜单项,可以启用/禁用某个function。 我知道如何使用plugin.xml文件为它设置图标和工具提示文本,但我希望能够根据正在处理的项目的状态更改图标,尤其是工具提示文本。 即,如果未启用此function,我想要一个显示function的图标以及显示“启用function”的工具提示文本,但如果启用该function,我想要一个图标,显示关闭该function以及工具提示显示“禁用function”的文字。 现在,我能看到的唯一选项是一个通用图标和工具提示文本,上面写着“启用/禁用function”,但这对我来说很笨拙。 编辑添加:为了回应indigomonkey的答案,这是一个很好的基于我最初编写的答案,我想澄清一下,工具栏按钮启用的行为是我们真的不鼓励一旦它被禁用的行为启用(并且在启用它时validation他们是否要启用它时会弹出一个对话框,因为它不应该轻易启动,也不要阻止它们在启用后禁用它)。 因此,我希望图标更改为“不要点击我”。

当我的代码中没有实例化Java类时,是否可以使用Groovy覆盖Java类中的方法?

我正在开发Eclipse RCP应用程序,最近我开始使用Groovy。 所以99%的代码仍然是Java。 我读到可以使用Groovy覆盖并向Java类添加方法,我可以通过向java.lang.String添加一个方法来测试它。 但这仅在我在Groovy类中使用字符串时才有效。 重写的方法不被视为在Java类中被重写。 这是一些代码: /* * This is a Java class */ public class CTabItem { … private API … public void setControl(Control control){ private API } } /* * This is also a Java class */ public class Control { … private API … } /* * This is also a […]

在Eclipse RCP中使用导航历史记录

我喜欢在我的RCP应用程序中使用Eclipse提供的导航历史记录。 不幸的是,这个function没有很好的记录 事实上我只找到了这个Wiki条目: http : //wiki.eclipse.org/FAQ_How_do_I_hook_my_editor_to_the_Back_and_Forward_buttons%3F 它提到可以在导航历史记录中标记每个编辑器,而无需指定位置。 这正是我想要的。 无论特定编辑器是否支持导航历史记录,markLocation都可以使用。 如果编辑器未实现INavigationLocationProvider,则将添加历史记录条目,允许用户跳回该编辑器但不返回任何特定位置。 我在应用程序中添加了以下代码行,以便每次打开新的编辑器时添加导航条目。 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorPart editor = page.openEditor( input, MyEditor.ID ); page.getNavigationHistory().markLocation( editor ); 我的问题是代码不起作用。 命令org.eclipse.ui.navigate.backwardHistory和org.eclipse.ui.navigate.forwardHistory的工具栏图标保持灰色。