我正在研究一個插件,並試圖在點擊我的自定義標記時觸發的quickfix菜單添加一些附加信息。Eclipse插件:在quickfix旁邊打開對話框
我在MarkerResolutionGenerator.getResolutions()中添加一個方法調用來繪製新的對話框窗口,但是我很難讓它與quickfix對話框一致。我可以在同一時間繪製它,但是我無法控制位置,並且它在背景中還繪製了一個額外的空白對話框。
有什麼想法?下面的相關代碼。前兩個方法來自我的MarkerResolutionGenerator,而我的自定義類就在那之下。 (我只是從一個例子複製它,我更擔心得到它的行爲之前,我的工作內容。)
@Override
public IMarkerResolution[] getResolutions(IMarker marker)
{
IMarker problem = marker;
makeStuff();
...
}
private void makeStuff()
{
Display display = Activator.getDefault().getWorkbench().getDisplay();
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()
.getSite().getWorkbenchWindow().getShell();
Shell myShell = new Shell(shell, SWT.NO_TRIM);
MyDialog md = new MyDialog(myShell);
md.open();
}
public class MyDialog extends Dialog
{
public MyDialog(Shell parentShell)
{
super(parentShell);
setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE);
setBlockOnOpen(false);
}
@Override
protected Control createDialogArea(Composite parent)
{
Composite container = (Composite) super.createDialogArea(parent);
Button button = new Button(container, SWT.PUSH);
button.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
button.setText("Press me");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("Pressed");
}
});
return container;
}
...
}
'Dialog'創建自己的殼所以不需要你的'myShell'。 –