Я пишу плагин eclipse, который использует texthover и переопределяет его для моего собственного текста. мне нужно добавить действие к окну парения, так что я использовал следующую функцию:Eclipse Plug-in Development: DefaultInformationControl Does'nt работает должным образом
public IInformationControlCreator getHoverControlCreator()
Это мой код:
@Override
public IInformationControlCreator getHoverControlCreator() {
return new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent) {
Shell s=new Shell(parent,SWT.V_SCROLL | SWT.H_SCROLL);
ToolBarManager tbm = new ToolBarManager(SWT.FLAT);
NoFocusDic dic = new NoFocusDic(parent, tbm);
dic.setBackgroundColor(new Color(null,123,234,12));
ButtonAction ba=new ButtonAction();
tbm.add(ba);
tbm.update(true);
dic.setSize(300,100);
dic.setLocation(new Point(500,500));
// dic.setInformation("abc");
dic.setVisible(true);
return dic;
}
};
}
Когда я запускаю этот код с setInformation линии я получаю это окно:
И когда я запускаю его без setIn формирование линии я получаю это окно:
Так окно Я хочу, чтобы всегда получать является второй один, но с текст внутри. Я прочитал на сайте eclipse, что setVisible не будет работать, если я попытаюсь поймать фокус, но я не думаю, что setInformation улавливает фокус.
Любые идеи, что делать?
package TextHoverPackage;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.text.DefaultInformationControl;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.IInformationControlExtension2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Shell;
public class NoFocusDic extends DefaultInformationControl implements IInformationControlExtension2 {
public NoFocusDic(Shell parent, ToolBarManager toolBarManager) {
super(parent, toolBarManager);
}
public NoFocusDic(Shell parent, ToolBarManager toolBarManager, IInformationPresenter a){
super(parent, toolBarManager,a);
}
@Override
public void setInput(Object arg0) {
super.setInformation(arg0.toString());
}
}
Что такое 'NoFocusDic'? –
@ greg-449 просто класс, который простирается от DefaultInformationControl и реализует IInformationControlExtension2, чтобы сделать окно таким, какое оно есть на рисунке № 2. PS просто добавьте этот код класса в quastion –