diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsi.ui/src/org/eclipse/wst/wsi/ui/internal/actions/ValidateAction.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsi.ui/src/org/eclipse/wst/wsi/ui/internal/actions/ValidateAction.java | 431 |
1 files changed, 0 insertions, 431 deletions
diff --git a/bundles/org.eclipse.wst.wsi.ui/src/org/eclipse/wst/wsi/ui/internal/actions/ValidateAction.java b/bundles/org.eclipse.wst.wsi.ui/src/org/eclipse/wst/wsi/ui/internal/actions/ValidateAction.java deleted file mode 100644 index 4efceca6b..000000000 --- a/bundles/org.eclipse.wst.wsi.ui/src/org/eclipse/wst/wsi/ui/internal/actions/ValidateAction.java +++ /dev/null @@ -1,431 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.wsi.ui.internal.actions; - -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.part.FileEditorInput; -import org.eclipse.wst.validation.internal.operations.LocalizedMessage; -import org.eclipse.wst.validation.internal.operations.WorkbenchReporter; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; -import org.eclipse.wst.validation.internal.provisional.core.IValidator; -import org.eclipse.wst.wsi.ui.internal.WSIUIPlugin; -import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage; -import org.eclipse.wst.xml.core.internal.validation.core.logging.ILogger; -import org.eclipse.wst.xml.core.internal.validation.core.logging.LoggerFactory; -import org.eclipse.wst.xml.ui.internal.Logger; -import org.eclipse.wst.xml.ui.internal.validation.XMLValidationUIMessages; - -/** - * A general validate action class that can be extended by validators. This class - * provides methods to run the action, add markers to a file and will handle - * showing a dialog with the results of validation (if requested) and prompt to - * save dirty files (if requested.) - */ -public abstract class ValidateAction extends Action -{ - // Locally used, non-UI strings. - private static final String REFERENCED_FILE_ERROR_OPEN = "referencedFileError("; //$NON-NLS-1$ - - private static final String REFERENCED_FILE_ERROR_CLOSE = ")"; //$NON-NLS-1$ - - private static final String REFERENCED_FILE_ERROR = "referencedFileError"; //$NON-NLS-1$ - - private static final String GROUP_NAME = "groupName"; //$NON-NLS-1$ - - private static final String FILE_PROTOCOL_NO_SLASH = "file:"; //$NON-NLS-1$ - private static final String FILE_PROTOCOL = "file:///"; //$NON-NLS-1$ - - protected static final String COLUMN_NUMBER_ATTRIBUTE = "columnNumber"; //$NON-NLS-1$ - protected static final String SQUIGGLE_SELECTION_STRATEGY_ATTRIBUTE = "squiggleSelectionStrategy"; //$NON-NLS-1$ - protected static final String SQUIGGLE_NAME_OR_VALUE_ATTRIBUTE = "squiggleNameOrValue"; //$NON-NLS-1$ - - protected boolean showDialog = true; - - protected IFile file = null; - - protected IReporter reporter; - - protected IValidator validator; - - /** - * Constructor. - * - * @param file - * The file to validate. - * @param showDialog - * Whether or not to show a dialog when validation is complete. - */ - public ValidateAction(IFile file, boolean showDialog) - { - this.showDialog = showDialog; - this.file = file; - } - - /** - * Validate the specified file. - * - * @param file - * The file to validate. - */ - protected abstract void validate(final IFile file); - - protected void addInfoToMessage (ValidationMessage v, IMessage m) - { // This method is overidden by subclasses - } - - /** - * Create markers for the valiation messages generated from the validation. - * - * @param iFile - * The resource to create the markers on. - * @param valmessages - * The array of validation messages. - */ - public void createMarkers(IFile iFile, ValidationMessage[] valmessages) - { - if (!fileIsOK(iFile)) - { - return; - } - int nummessages = valmessages.length; - for (int i = 0; i < nummessages; i++) - { - ValidationMessage validationMessage = valmessages[i]; - String uri = validationMessage.getUri(); - - LocalizedMessage message; - if (validationMessage.getSeverity() == ValidationMessage.SEV_LOW) - { - message = new LocalizedMessage(getValidationFrameworkSeverity(IMarker.SEVERITY_WARNING), validationMessage - .getMessage(), iFile); - } - else - { - message = new LocalizedMessage(getValidationFrameworkSeverity(IMarker.SEVERITY_ERROR), validationMessage.getMessage(), iFile); - } - - message.setLineNo(validationMessage.getLineNumber()); - addInfoToMessage(validationMessage, message); - - List nestederrors = validationMessage.getNestedMessages(); - if (nestederrors != null && !nestederrors.isEmpty()) - { - message.setGroupName(REFERENCED_FILE_ERROR_OPEN + uri + REFERENCED_FILE_ERROR_CLOSE); - } - - getOrCreateReporter().addMessage(getValidator(), message); - - - } - try - { - IMarker[] markers = iFile.findMarkers(null, true, IResource.DEPTH_INFINITE); - for (int i = 0; i < markers.length; i++) - { - IMarker marker = markers[i]; - String groupName = null; - try - { - groupName = (String) marker.getAttribute(GROUP_NAME); - } - catch (Exception e) - { - } - - if (groupName != null && groupName.startsWith(REFERENCED_FILE_ERROR)) - { - - marker.setAttribute(IMarker.DONE, true); - } - } - } - catch (CoreException e) - { - e.printStackTrace(); - } - - } - - public void clearMarkers(IFile iFile) - { - if (fileIsOK(iFile)) - { - getOrCreateReporter().removeAllMessages(getValidator(), iFile); - } - } - - public void run() - { - try - { - // CS... a temporary test to avoid performing validation in the absence of xerces - // - //dw Class theClass = - Class.forName("org.apache.xerces.xni.parser.XMLParserConfiguration", true, this.getClass().getClassLoader()); //$NON-NLS-1$ - - if (fileIsOK(file)) - { - // Check if the editor is dirty for this file. If so, prompt the user to - // save before validating. - if(showDialog) - { - checkIfFileDirty(file); - } - try - { - validate(file); - } - catch (Exception e) - { - ILogger logger = LoggerFactory.getLoggerInstance(); - logger.logError("", e); //$NON-NLS-1$ - // e.printStackTrace(); - } - } - } - catch (Exception e) - { - } - } - - /** - * Test whether the file given is OK to use. A file is OK to use if 1. It is - * not null 2. It exists. 3. The project containing the file is accessible. - * - * @param file The file to check. - * @return True if the file is OK to use, false otherwise. - */ - protected boolean fileIsOK(IFile file) - { - if (file != null && file.exists() && file.getProject().isAccessible()) - { - return true; - } - return false; - } - - /** - * Check if the file is dirty. A file is dirty if there is an open editor for - * the file that contains changes that haven't been saved. - * - * @param file The file to check to see if it is dirty. - */ - protected void checkIfFileDirty(IFile file) - { - IEditorPart[] dirtyEditors = WSIUIPlugin.getInstance().getWorkbench().getActiveWorkbenchWindow() - .getActivePage().getDirtyEditors(); - int numeditors = dirtyEditors.length; - for (int i = 0; i < numeditors; i++) - { - IEditorInput editorInput = dirtyEditors[i].getEditorInput(); - if (editorInput instanceof FileEditorInput) - { - FileEditorInput fileEditorInput = (FileEditorInput) editorInput; - if (fileEditorInput.getFile().equals(file)) - { - String message = XMLValidationUIMessages._UI_SAVE_DIRTY_FILE_MESSAGE; - String title = XMLValidationUIMessages._UI_SAVE_DIRTY_FILE_TITLE; - if (MessageDialog.openQuestion(Display.getDefault().getActiveShell(), title, message)) - { - dirtyEditors[i].doSave(null); - } - // There can only be one open editor/file so we can break. - break; - } - } - } - } - - /** - * Gets the reporter. - * - * @return Returns a IReporter - */ - public IReporter getReporter() - { - return reporter; - } - - /** - * Sets the reporter. - * - * @param reporter - * The reporter to set - */ - public void setReporter(IReporter reporter) - { - this.reporter = reporter; - } - - /** - * Gets the validator. - * - * @return Returns a IValidator - */ - public IValidator getValidator() - { - return validator; - } - - /** - * Sets the validator. - * - * @param validator - * The validator to set - */ - public void setValidator(IValidator validator) - { - this.validator = validator; - } - - protected IReporter getOrCreateReporter() - { - if (reporter == null) - { - reporter = new WorkbenchReporter(file.getProject(), new NullProgressMonitor()); - } - return reporter; - } - - /** - * Originally from *validation.Helper - * - * @param severity - * The severity given. - * @return The validation framework severity corresponding to the error. - */ - protected int getValidationFrameworkSeverity(int severity) - { - switch (severity) { - case IMarker.SEVERITY_ERROR: - return IMessage.HIGH_SEVERITY; - case IMarker.SEVERITY_WARNING: - return IMessage.NORMAL_SEVERITY; - case IMarker.SEVERITY_INFO: - return IMessage.LOW_SEVERITY; - } - return IMessage.LOW_SEVERITY; - } - - /** - * Open an error dialog with the given title and message. Show the problems view - * if it is not already visible. - * - * @param title The title of the error dialog. - * @param message The message in the error dialog. - */ - protected void openErrorDialog(String title, String message) - { - showProblemsView(); - MessageDialog.openError(Display.getDefault().getActiveShell(), title, message); - } - - /** - * Open an warning dialog with the given title and message. Show the problems view - * if it is not already visible. - * - * @param title The title of the warning dialog. - * @param message The message in the warning dialog. - */ - protected void openWarningDialog(String title, String message) - { - showProblemsView(); - MessageDialog.openWarning(Display.getDefault().getActiveShell(), title, message); - } - - /** - * Open a valid dialog with the given title and message. - * - * @param title The title of the valid dialog. - * @param message The message in the valid dialog. - */ - protected void openValidDialog(String title, String message) - { - MessageDialog.openInformation(Display.getDefault().getActiveShell(), title, message); - } - - /** - * Show the problems view if it is not already visible. - */ - protected void showProblemsView() - { - IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - IWorkbenchPage page = dw.getActivePage(); - IWorkbenchPart activePart = page.getActivePart(); - try - { - if (page != null) - { - page.showView(IPageLayout.ID_PROBLEM_VIEW); - } - } - catch (PartInitException e) - { - Logger.logException(e); - } - page.activate(activePart); - } - - /** - * Format a file name into a correct URI. - * - * @param filename The file name to format. - * @return The formatted URI. - */ - protected String createURIForFilePath(String filename) - { - if(!filename.startsWith(FILE_PROTOCOL_NO_SLASH)) - { - while(filename.startsWith("/")) //$NON-NLS-1$ - { - filename = filename.substring(1); - } - filename = FILE_PROTOCOL + filename; - } - return filename; - } - - /** - * The validation outcome class holds the results from validating - * a file. - * - * @author Lawrence Mandel, IBM - */ - protected class ValidationOutcome - { - public boolean isValid = true; - - public boolean hasMessages = false; - - public ValidationOutcome() - { - } - } -} - |