/*******************************************************************************
* Copyright (c) 2007-2010 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.ui.editor.check;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.jboss.tools.common.log.LogHelper;
import org.jboss.tools.jsf.ui.JsfUIMessages;
import org.jboss.tools.jst.web.ui.WebUiPlugin;
import org.jboss.tools.jst.web.ui.internal.editor.messages.JstUIMessages;
/**
*
* @author yzhishko
*
*/
public abstract class ProjectNaturesInfoDialog extends MessageDialog {
private Button button;
private Link link;
protected boolean isRemember = false;
protected IProject project;
protected ProjectNaturesInfoDialog(IProject project, String fixButtonLabel) {
super(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
JsfUIMessages.MISSING_NATURES_INFO_MESSAGE_TITLE, null, "", INFORMATION, //$NON-NLS-1$
new String[] { fixButtonLabel, JsfUIMessages.SKIP_BUTTON_LABEL }, 0);
this.project = project;
message = getMessageInfo();
}
@Override
protected Control createCustomArea(Composite parent) {
GridLayout gridLayout = (GridLayout) parent.getLayout();
gridLayout.numColumns = 2;
gridLayout.makeColumnsEqualWidth = true;
parent.setLayout(gridLayout);
button = new Button(parent, SWT.CHECK);
GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
button.setLayoutData(gridData);
button.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
isRemember = !isRemember;
}
public void widgetDefaultSelected(SelectionEvent e) {
isRemember = !isRemember;
}
});
button.setText(JsfUIMessages.DONT_SHOW_CHECKER_DIALOG);
link = new Link(parent, SWT.NONE);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
gridData.grabExcessHorizontalSpace = true;
link.setLayoutData(gridData);
link.setText("<A>" + JstUIMessages.DOCS_INFO_LINK_TEXT + "</A>"); //$NON-NLS-1$ //$NON-NLS-2$
link.setToolTipText(JstUIMessages.DOCS_INFO_LINK);
link.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
processLink(link);
}
public void widgetDefaultSelected(SelectionEvent e) {
processLink(link);
}
});
return parent;
}
@Override
protected void buttonPressed(int buttonId) {
super.buttonPressed(buttonId);
if (buttonId == 0) {
fixButtonPressed();
}
if (buttonId == 1) {
skipButtonPressed();
}
}
private void processLink(Link link) {
BusyIndicator.showWhile(link.getDisplay(), new Runnable() {
public void run() {
URL theURL = null;
try {
theURL = new URL(JstUIMessages.DOCS_INFO_LINK);
} catch (MalformedURLException e) {
LogHelper.logError(WebUiPlugin.PLUGIN_ID, e);
}
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench()
.getBrowserSupport();
try {
support.getExternalBrowser().openURL(theURL);
} catch (PartInitException e) {
LogHelper.logError(WebUiPlugin.PLUGIN_ID, e);
}
}
});
}
protected abstract String getMessageInfo();
protected abstract void fixButtonPressed();
protected abstract void skipButtonPressed();
}