플러그인에서 작업 중입니다. 사용자 정의 마커를 클릭하여 트리거되는 quickfix 메뉴에 몇 가지 추가 정보를 추가하려고합니다.이클립스 플러그인 : 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'가 필요하지 않은 자신의 쉘 만듭니다. –