Ich arbeite an einem Plugin und versuche, einige zusätzliche Informationen rund um das Quickfix-Menü hinzuzufügen, das durch Klicken auf meine benutzerdefinierten Markierungen ausgelöst wird.Eclipse Plugin: Eröffnungsdialoge neben Quickfix
Ich füge einen Methodenaufruf in MarkerResolutionGenerator.getResolutions(), um das neue Dialogfenster zu zeichnen, aber ich habe Schwierigkeiten, es mit dem Quickfix-Dialog zu vereinbaren. Ich kann es zur gleichen Zeit zeichnen, aber ich kann die Position nicht kontrollieren und es zieht auch einen zusätzlichen leeren Dialog im Hintergrund.
Irgendwelche Gedanken? Relevanter Code unten. Die ersten beiden Methoden stammen von meinem MarkerResolutionGenerator und meine benutzerdefinierte Klasse liegt darunter. (Ich kann es nur aus einem Beispiel kopiert, ich mache mir mehr Sorgen darum, es zu verhalten, bevor ich auf den Inhalt zu arbeiten.)
@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' seine eigene Schale schafft so Ihre' myShell' nicht benötigt wird. –