package com.itsolut.mantis.ui.internal; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.mylyn.commons.workbench.browser.BrowserUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.browser.IWorkbenchBrowserSupport; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Hyperlink; import com.itsolut.mantis.ui.MantisUIPlugin; /** * @author Robert Munteanu * */ public class WikiLinkedErrorDialog extends ErrorDialog { private FormToolkit toolkit; public WikiLinkedErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status) { super(parentShell, dialogTitle, message, status, IStatus.OK | IStatus.INFO | IStatus.WARNING | IStatus.ERROR); } @Override protected Control createDialogArea(Composite parent) { Control control = super.createDialogArea(parent); toolkit = new FormToolkit(MantisUIPlugin.getDefault().getFormColors(parent.getDisplay())); Hyperlink link = toolkit.createHyperlink((Composite) control, "Open the troubleshooting page on the wiki", SWT.NONE); link.setBackground(control.getBackground()); link.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { BrowserUtil.openUrl( "https://sourceforge.net/apps/mediawiki/mylyn-mantis/index.php?title=Troubleshooting", IWorkbenchBrowserSupport.AS_EXTERNAL); } }); GridDataFactory.fillDefaults().grab(false, false).span(2, 1).applyTo(link); return control; } @Override public boolean close() { if ( toolkit != null ) toolkit.dispose(); return super.close(); } }