/*******************************************************************************
* 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.text.MessageFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IMarkerResolution;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.views.markers.MarkerSupportInternalUtilities;
import org.eclipse.ui.views.markers.internal.MarkerMessages;
import org.jboss.tools.common.model.XModelException;
import org.jboss.tools.common.model.options.Preference;
import org.jboss.tools.jsf.ui.JsfUIMessages;
import org.jboss.tools.jsf.ui.JsfUiPlugin;
import org.jboss.tools.jsf.ui.editor.check.wizards.QuickFixWizard;
import org.jboss.tools.jst.web.kb.internal.KbBuilderMarker;
import org.jboss.tools.jst.web.kb.internal.KbProject;
/**
*
* @author yzhishko
*
*/
@SuppressWarnings("restriction")
public class KBNaturesInfoDialog extends ProjectNaturesInfoDialog {
public KBNaturesInfoDialog(IProject project) {
super(project, JsfUIMessages.ENABLE_JSF_CODE_COMPLETION_BUTTON_LABEL);
}
@Override
protected void fixButtonPressed() {
try {
IMarker kbProblemMarker = null;
IMarker[] markers = project.findMarkers(null, false, 1);
for (int i = 0; i < markers.length; i++) {
IMarker marker = markers[i];
String _type = marker.getType();
if (_type != null
&& _type.equals(KbBuilderMarker.KB_BUILDER_PROBLEM_MARKER_TYPE)) {
kbProblemMarker = marker;
break;
}
}
if (kbProblemMarker != null) {
Map<IMarkerResolution, List<IMarker>> resolutions = new LinkedHashMap<IMarkerResolution, List<IMarker>>(
0);
List<IMarker> markerList = new ArrayList<IMarker>(0);
IMarkerResolution[] markerResolutions = IDE
.getMarkerHelpRegistry()
.getResolutions(kbProblemMarker);
markerList.add(kbProblemMarker);
resolutions.put(markerResolutions[0], markerList);
String markerDescription = kbProblemMarker.getAttribute(
IMarker.MESSAGE,
MarkerSupportInternalUtilities.EMPTY_STRING);
String description = NLS.bind(
MarkerMessages.MarkerResolutionDialog_Description,
markerDescription);
QuickFixWizard fixWizard = new QuickFixWizard(description,
resolutions);
fixWizard
.setWindowTitle(MarkerMessages.resolveMarkerAction_dialogTitle);
WizardDialog dialog = new QuickFixWizardDialog(PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getShell(),
fixWizard);
dialog.open();
}
} catch (CoreException e) {
JsfUiPlugin.getDefault().logError(e);
}
}
@Override
protected String getMessageInfo() {
String dialogMessage = MessageFormat.format(
JsfUIMessages.ENABLE_JSF_CODE_COMPLETION_TEXT,
project.getName());
return dialogMessage;
}
private class QuickFixWizardDialog extends WizardDialog {
/**
* @param parentShell
* @param newWizard
*/
public QuickFixWizardDialog(Shell parentShell, IWizard newWizard) {
super(parentShell, newWizard);
setShellStyle(SWT.CLOSE | SWT.MAX | SWT.TITLE | SWT.BORDER
| SWT.MODELESS | SWT.RESIZE | getDefaultOrientation());
}
}
@Override
protected void skipButtonPressed() {
try {
String value = !isRemember ? "yes" : "no";
Preference.SHOW_NATURE_WARNING.setValue(value);
} catch (XModelException e) {
JsfUiPlugin.getPluginLog().logError(e);
}
}
}