проблема проста: чтобы добавить контекстно-зависимую справку, я выполнил стандартные шаги, но однажды я попытался связать БЛОКИ с идентификаторами КОНТЕКСТА с помощью SetHelp() из IWorkbenchHelpSystem. Первый аргумент должен быть либо Control(swt), либо IAction.
void setHelp(Control control, String helpContextId);. Как я могу ссылаться на Control из типа объекта damos.dml.Block? org.eclipselabs.damos.dml.blockTypes
К вашему сведению, я пробовал и посещал все содержимое этих сайтов.
- http://rajakannappan.blogspot.com/2009/05/context-sensitive-help-in-eclipse.html
- https://help.eclipse.org/2019-03/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fua_help_context.htm&cp=2_0_19
2private Block getBlock() { EObject semanticElement = resolveSemanticElement(); if (semanticElement instanceof Block) { Block block = (Block) semanticElement; PlatformUI.getWorkbench().getHelpSystem().search(block.getType().getName()); //PlatformUI.getWorkbench().getHelpSystem().setHelp(?, Activator.HELP_VIEW); Cannot cast block directly to Control PlatformUI.getWorkbench().getHelpSystem().displayHelp(Activator.HELP_VIEW); return block; } else { return null; } } @Override protected NodeFigure createMainFigure() { blockFigure = new BlockFigure(); // OB: java.awt.event.KeyEvent.VK_F1 is wrong, use SWT.F1 blockFigure.setFocusTraversable(true); blockFigure.setRequestFocusEnabled(true); blockFigure.addMouseListener(new MouseListener.Stub() { @Override public void mousePressed(final MouseEvent me) { blockFigure.requestFocus(); } }); blockFigure.addKeyListener(new KeyListener.Stub() { @Override public void keyReleased(KeyEvent ke) { } @Override public void keyPressed(KeyEvent ke) { if (ke.keycode == SWT.F1) { PlatformUI.getWorkbench().getHelpSystem().search(getBlock().getType().getName()); PlatformUI.getWorkbench().getHelpSystem().displayHelp(Activator.HELP_VIEW); } } }); return blockFigure; }
- https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fextension-points%2Forg_eclipse_ui_commands.html
Методы отображения и поиска работают правильно, но мне просто нужно настроить справку, а не отображать ее, чтобы только при вызове справки (F1 или ctrl+F1) показывалась контекстная справка.
Спасибо. После попытки я подумал, что, возможно, этот обходной путь даст мне тот же результат, но NADA.
private Block getBlock() {
EObject semanticElement = resolveSemanticElement();
if (semanticElement instanceof Block) {
Block block = (Block) semanticElement;
PlatformUI.getWorkbench().getHelpSystem().search(block.getType().getName());
//PlatformUI.getWorkbench().getHelpSystem().setHelp(?, Activator.HELP_VIEW); Cannot cast block directly to Control
PlatformUI.getWorkbench().getHelpSystem().displayHelp(Activator.HELP_VIEW);
return block;
} else {
return null;
}
}
@Override
protected NodeFigure createMainFigure() {
blockFigure = new BlockFigure();
// OB: java.awt.event.KeyEvent.VK_F1 is wrong, use SWT.F1
blockFigure.setFocusTraversable(true);
blockFigure.setRequestFocusEnabled(true);
blockFigure.addMouseListener(new MouseListener.Stub() {
@Override
public void mousePressed(final MouseEvent me) {
blockFigure.requestFocus();
}
});
blockFigure.addKeyListener(new KeyListener.Stub() {
@Override
public void keyReleased(KeyEvent ke) {
}
@Override
public void keyPressed(KeyEvent ke) {
if (ke.keycode == SWT.F1) {
PlatformUI.getWorkbench().getHelpSystem().search(getBlock().getType().getName());
PlatformUI.getWorkbench().getHelpSystem().displayHelp(Activator.HELP_VIEW);
}
}
});
return blockFigure;
}
Любая помощь приветствуется!
damos.dml.Block
? Справка рабочей среды работает только с объектами пользовательского интерфейса, это объект пользовательского интерфейса? - person greg-449   schedule 10.04.2019