content: /*******************************************************************************
   * Copyright (c) 2000, 2009 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.jsdt.internal.ui.text.spelling;
  
  import org.eclipse.jface.text.BadLocationException;
  import org.eclipse.jface.text.BadPartitioningException;
  import org.eclipse.jface.text.IDocumentExtension3;
  import org.eclipse.jface.text.source.ISourceViewer;
  import org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector;
  import org.eclipse.ui.texteditor.spelling.SpellingProblem;
  import org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy;
  import org.eclipse.ui.texteditor.spelling.SpellingService;
  import org.eclipse.wst.jsdt.ui.text.IJavaScriptPartitions;
  
  /**
   * Reconcile strategy for spell checking comments.
   * 
   */
  public class JavaSpellingReconcileStrategy extends SpellingReconcileStrategy {
  
  	public JavaSpellingReconcileStrategy(ISourceViewer viewer, SpellingService spellingService, String partitioning) {
  		super(viewer, spellingService);
  		fPartitioning = partitioning;
  	}
  
  	/**
  	 * Spelling problem collector that forwards {@link SpellingProblem}s as
  	 * {@link org.eclipse.wst.jsdt.core.compiler.IProblem}s to the
  	 * {@link org.eclipse.wst.jsdt.core.compiler.IProblemRequestor}.
  	 */
  	private class JSSpellingProblemCollector implements ISpellingProblemCollector {
  		private ISpellingProblemCollector fParentCollector;
  
  		public JSSpellingProblemCollector(ISpellingProblemCollector parentCollector) {
  			fParentCollector = parentCollector;
  		}
  
  		/*
  		 * @see
  		 * org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#accept
  		 * (org.eclipse.ui.texteditor.spelling.SpellingProblem)
  		 */
  		public void accept(SpellingProblem problem) {
  			try {
  				String type = ((IDocumentExtension3) getDocument()).getPartition(fPartitioning, problem.getOffset(), false).getType();
  				if (IJavaScriptPartitions.JAVA_DOC.equals(type) || IJavaScriptPartitions.JAVA_MULTI_LINE_COMMENT.equals(type) || IJavaScriptPartitions.JAVA_SINGLE_LINE_COMMENT.equals(type))
  					fParentCollector.accept(problem);
  			}
  			catch (BadLocationException e) {
  				fParentCollector.accept(problem);
  			}
  			catch (BadPartitioningException e) {
  				fParentCollector.accept(problem);
  			}
  		}
  
  		/*
  		 * @seeorg.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#
  		 * beginCollecting()
  		 */
  		public void beginCollecting() {
  			fParentCollector.beginCollecting();
  		}
  
  		/*
  		 * @seeorg.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#
  		 * endCollecting()
  		 */
  		public void endCollecting() {
  			fParentCollector.endCollecting();
  		}
  	}
  
  
  	/** The id of the problem */
  	public static final int SPELLING_PROBLEM_ID = 0x80000000;
  	private String fPartitioning;
  
  	protected ISpellingProblemCollector createSpellingProblemCollector() {
  		return new JSSpellingProblemCollector(super.createSpellingProblemCollector());
  	}
  }
  