Tag: jface

Eclipse:OSGI首选项与PreferenceStore

我正在开发一个Eclipse插件(或者实际上是一个基于Eclipse的应用程序的插件),它需要用户输入一些配置。 通过查看文档,似乎有两个首选API – 一个在org.eclipse.core.runtime.preferences ,扩展/实现OSGI优先API ,另一个是特定于JFace的org.eclipse.jface.preference 。 然后我们也有org.eclipse.ui.preferences 。 OSGI API具有分层节点树 – 首选节点( Preferences或IEclipsePreferences )可以有多IEclipsePreferences节点,这些子节点本身可以​​包含单个名称 – 值对以及更多子节点。 这似乎适合我的用例 – 我有一个动态数量的“首选项组”,每个都有大约三个字符串属性(名称,描述,命令),这将很好地映射到这些节点。 JFace API没有这样的层次结构,每个插件只有一个平坦的IPreferenceStore 。 但它提供了首选项编辑器页面,然后可以通过实现IWorkbenchPreferencePage并使用“org.eclipse.ui.preferencePages”扩展点将其包含在常用首选项对话框(窗口/首选项)中。 (我仍然需要自己实现首选项页面的一部分,但似乎这个API为此提供了良好的基础。) 似乎org.eclipse.ui.preferences API通过提供基于IEclipsePreferences的IPreferenceStore实现以某种方式桥接这两个API,但我仍然看不到如何使用它。 所以我的问题是: 如何在首选项对话框中使用分层OSGI Preferences选项? 我只需要一个级别,但我需要用户能够动态添加新节点(每个节点大约有三个首选项)。 (但是,这些节点不必具有新的首选项页面。)

让JFace窗口在任务栏中闪烁或引起用户注意?

我想知道有人知道如何解决这个问题: 在我的Java Eclipse插件中,有一些过程需要一些时间。 因此,用户可以最小化窗口并让进程在后台运行 。 现在,当过程完成时 ,我可以强制窗口再次出现在顶部,但这是可用性的禁忌。 我宁愿让进程在任务栏中 闪烁 。 有没有办法实现这个目标? 我看了一下org.eclipse.jface.window但是找不到那样的东西,SWT文档同样如此…… 我想到的另一件事 – 因为人们在mac os x和linux上也使用这个应用程序,是否有一个独立于平台的解决方案 ,它将通知用户该过程已经完成但没有将窗口置于顶部? 任何想法都非常欢迎! 编辑: 我发现在Windows上,用户可以调整是否要将力设置为前景。 如果禁用该选项,任务将在任务栏中闪烁… 这是一个很好的阅读 …… 如果有人知道某种平台独立的方式来实现这种行为,请与我分享您的知识!

如何动态添加swt小部件到复合?

我正在尝试添加文本框,按钮等小部件,点击按钮。 我试过了,但我只能动态添加这些小部件,最多只能达到复合的大小。 我的jface对话框是这样的,它有一个滚动的复合,其中包含一个复合。 在主要复合材料中我有3个其他复合材料,我必须实现这个function,所以如果我将动态窗口小部件添加到复合材料中它可能会扩展,但它不应该重叠现有复合材料,而应该相应地调整其他复合材料。我应该能够按下按钮处理这些小部件。 有没有人试过这个动态添加和删除小部件之前,我是swt,jface的新手。 那么,任何人都可以在这里分享他们的经验,我发布了我尝试过的代码。 import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; public class DynamicDialog extends Dialog { private Text text; […]

设置JFace向导的大小

我正在构建一个Eclipse RCP应用程序,并且在设置JFace向导的大小时遇到​​问题。

正确使用Eclipse 4中的ProgressMonitorDialog

我有一组API来执行文件操作,例如saveToFile(CustomObject objectToSave); 由于文件操作可能很长,我决定应该向用户显示某些指示,例如进度条。 我读了一个关于ProgressMonitorDialog ,所以我试了一下,但它并没有完全按照我的需要工作(或者更好,我不知道如何正确使用它)。 目前我这样做: ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(theShell); try { progressDialog.run(false, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(“Saving your data”, 100); try { Utils.saveToFile(objectToSave); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } monitor.done(); } }); 这段代码非常快速地显示了一个进度对话框,但问题是在较慢的PC上,这将堆叠直到Utils.saveToFile返回,而我不知道如何在保存完成之前指示中间进程。 我找到了一个关于IProgressMonitor.UNKNOWN的线程,但它没有说明在performRead(_fileName, monitor);期间monitor中发生了什么performRead(_fileName, monitor); 我该如何解决这个问题?

TableViewer中字段之间的选项卡

我想做的是能够在表格中的元素之间进行选项卡。 我目前正在创建这样的表格。 this.tableViewer = new TableViewer(parent , SWT.FULL_SELECTION); tableViewer.setUseHashlookup(true); table = tableViewer.getTable(); GridData gridData = new GridData(GridData.FILL_BOTH); gridData.grabExcessVerticalSpace = true; table.setLayoutData(gridData); table.setLinesVisible(true); table.setHeaderVisible(true); … /** Create the Cell Editor Array – will hold all columns **/ editors = new CellEditor[table.getColumnCount()]; /** Cell Editor Row 1 **/ /** Set the column properties **/ tableViewer.setColumnProperties(columnNames); /** Assign […]

如何使SWT / JFace对话框在所有窗口分辨率下显示类似的行为(布局)

我创建的JFace对话框显示了不同分辨率下的布局差异。如何在JFace或SWT中创建对话框,在所有分辨率下显示相同的布局,就像Eclipse中使用的对话框一样。 我的意思是,在将屏幕分辨率更改为800×600像素并选择超大字体时,对话框的布局会受到干扰,这与Eclipse IDE对话框不同。请查看我的对话框的屏幕截图。

Eclipse JFace的向导

我需要一个向导,第二页内容取决于第一页的选择。 第一页询问用户他想要创建的filter的“种类”,第二页要求用户创建所选“种类”的一个filter实例。 JFace的向导页面内容(createControl(…)方法)都是在向导打开时创建的,而不是在显示给定页面时创建的(这允许JFace知道向导大小,我猜??)。 因此,我必须在向导打开之前创建我的第二页内容但是我不能,因为第二页的内容取决于第一页的选择。 现在我找到的更清洁的解决方案包括在向导打开之前创建所有(秒)页面(带有它们的内容)并覆盖第一页实现中的getNextPage()方法。 该解决方案的主要缺点是,当要创建许多第二页时,它可能很昂贵。 您如何看待该解决方案? 你如何管理向导的页面? 有没有我错过的清洁解决方案?

如何使用Eclipse JFace中的IDecorationContext api

有没有使用IDecorationContext进行标签装饰的例子? 从它的外观来看, IDecorationContext类似乎提供了某种上下文装饰支持,但对于我的生活,我找不到任何使用此function的示例代码… 有没有人实际使用装饰上下文function,如果有,它解决了什么用例? PS:我正在寻找一种方法将图像装饰应用于对象标签,并根据对象的显示位置,基本图标大小不同(例如,表和树项中的传统“小”图标和内容标题的较大图标)。 应用于原始图标的装饰应相应地选择合适的尺寸装饰。 IDecorationContext似乎符合我所需要的条件,但是文档与开源库的一个小function一样稀疏,并且没有找到示例。 谷歌搜索“IDecorationContext”也没有透露任何有趣的东西,所以我转向StackOverflow 众智 ,希望下一个得到问题的人能够更快地得到答案;)

将删除按钮添加到表中的列

是否可以向表格中的单元格添加“ 删除”按钮? 我有一个包含5列的表,我想添加第6列。 我希望第6列在每行中都有一个删除按钮。 示例行: | 10002 | 部分| 金属| 001 | 是的| 删除 | 这样,用户只需单击按钮即可删除任何不需要的行。 我在表中有一个标记列,它是ComboBox 。 我创建了一个扩展EditingSupport的类。 我是否需要创建另一个类来扩展EditingSupport ,但是创建一个按钮而不是ComboBox ? 编辑 public class AplotDataTableViewer extends TableViewer { public AplotDataTableViewer(Composite parent, int style) { super(parent, style); Table table = getTable(); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); table.setLayoutData(gridData); createColumns(); table.setHeaderVisible(true); table.setLinesVisible(true); setContentProvider(new ArrayContentProvider()); […]