- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Nodeclipse preference Page我希望在更改 expressPath 时更新 expressVersion。
我在下面添加代码,但它不会触发 PropertyChangeEvent,因此不会执行此逻辑。
这里有什么问题?
expressPath = new FileFieldEditor(PreferenceConstants.EXPRESS_PATH, "Express path:", getFieldEditorParent());
//TODO update expressVersion on expressPath selection
IPropertyChangeListener listener = new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getProperty().equals(FieldEditor.IS_VALID)) {
String newValue = (String) event.getNewValue();
expressVersion.setStringValue( ProcessUtils.getCurrentVersionOf(newValue) );
}
}
};
expressPath.setPropertyChangeListener(listener);
addField(expressPath);
expressVersion = new StringFieldEditor(PreferenceConstants.EXPRESS_VERSION, "Selected Express version:", getFieldEditorParent());
expressVersion.setEnabled(false, getFieldEditorParent());
addField(expressVersion);
最佳答案
查看 FieldEditorPreferencePage 的源代码,我发现 initialize()
正在为所有文件重置 PropertyChangeListeners
/**
* Initializes all field editors.
*/
protected void initialize() {
if (fields != null) {
Iterator<FieldEditor> e = fields.iterator();
while (e.hasNext()) {
FieldEditor pe = e.next();
pe.setPage(this);
pe.setPropertyChangeListener(this);
pe.setPreferenceStore(getPreferenceStore());
pe.load();
}
}
}
initialize() 在 createFieldEditors() 之后被调用;
protected Control createContents(Composite parent) {
fieldEditorParent = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.marginHeight = 0;
layout.marginWidth = 0;
fieldEditorParent.setLayout(layout);
fieldEditorParent.setFont(parent.getFont());
createFieldEditors();
if (style == GRID) {
adjustGridLayout();
}
initialize();
checkState();
return fieldEditorParent;
}
所以用下面的代码解决了
@Override
protected void initialize() {
super.initialize();
expressPath.setPropertyChangeListener(new MyPropertyChangeListener(this));
}
private class MyPropertyChangeListener implements IPropertyChangeListener{
private FieldEditorPreferencePage page;
public MyPropertyChangeListener(FieldEditorPreferencePage nodePreferencePage) {
page = nodePreferencePage;
}
@Override
public void propertyChange(PropertyChangeEvent event) {
page.propertyChange(event);
// The IS_VALID property is only fired when the valid state changes.
if (event.getProperty().equals(FieldEditor.IS_VALID)) {
isValidPath = ((Boolean) event.getNewValue()).booleanValue();
if (!isValidPath) {
expressVersion.setStringValue( "Selected path is not valid" );
}
return;
}
if (!isValidPath) { // if it is still not valid file, we don't need to check again
return;
}
if (event.getProperty().equals(FieldEditor.VALUE)) {
String newExecutablePath = (String) event.getNewValue();
expressVersion.setStringValue( ProcessUtils.getCurrentVersionOf(newExecutablePath));
}
}
}
关于java - Eclipse 开发 - 根据 FieldEditorPreferencePage 内其他 FieldEditor 的新值更改 FieldEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033966/
在Nodeclipse preference Page我希望在更改 expressPath 时更新 expressVersion。 我在下面添加代码,但它不会触发 PropertyChangeEven
在 Eclipse RCP 中,我使用字段编辑器构建首选项页面 ( http://www.eclipse.org/articles/Article-Field-Editors/field_editor
我有一个基于outlineView单元格的旧项目,如果在调用“outlinView setObjectValue:”之前其中一个单元格的值不正确,我想发出一个NSAlert。我需要知道它位于哪里,以及
当您设置 Eclipse 插件首选项页面时,是否可以在 FieldEditors 之间添加某种文本或分隔线? @Override protected void createFieldEditors()
我正在使用现有的 IWorkbenchPreferencePage 框架为我的 Eclipse RCP 应用程序构建首选项编辑器(有关好的教程,请参阅 http://www.eclipse.org/a
我正在为 RCP 应用程序创建我自己的 Eclipse PreferencePage。有一个 FileFieldEditor,我想通过 BooleanFieldEditor 启用和禁用它。 现在我不知
是否可以让我的 NSTableView 接受 deleteevnt(退格键甚至 cmd+退格键)?我有一个 NSMenu,其中我的 delete-menu-item 连接到 Nib 中的第一响应者对象
我是一名优秀的程序员,十分优秀!