content: /*******************************************************************************
   * Copyright (c) 2000, 2008 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.preferences.formatter;
  
  import java.util.Map;
  
  import org.eclipse.core.runtime.IStatus;
  import org.eclipse.core.runtime.Status;
  import org.eclipse.jface.text.Region;
  import org.eclipse.jface.text.formatter.FormattingContextProperties;
  import org.eclipse.jface.text.formatter.IContentFormatter;
  import org.eclipse.jface.text.formatter.IContentFormatterExtension;
  import org.eclipse.jface.text.formatter.IFormattingContext;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.wst.jsdt.internal.ui.IJavaStatusConstants;
  import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin;
  import org.eclipse.wst.jsdt.internal.ui.text.comment.CommentFormattingContext;
  
  
  public class CompilationUnitPreview extends JavaPreview {
  
      private String fPreviewText;
  
      /**
       * @param workingValues
       * @param parent
       */
      public CompilationUnitPreview(Map workingValues, Composite parent) {
  
          super(workingValues, parent);
      }
  
      protected void doFormatPreview() {
          if (fPreviewText == null) {
              fPreviewDocument.set(""); //$NON-NLS-1$
              return;
          }
          fPreviewDocument.set(fPreviewText);
  		
  		fSourceViewer.setRedraw(false);
  		final IFormattingContext context = new CommentFormattingContext();
  		try {
  			final IContentFormatter formatter =	fViewerConfiguration.getContentFormatter(fSourceViewer);
  			if (formatter instanceof IContentFormatterExtension) {
  				final IContentFormatterExtension extension = (IContentFormatterExtension) formatter;
  				context.setProperty(FormattingContextProperties.CONTEXT_PREFERENCES, fWorkingValues);
  				context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, Boolean.valueOf(true));
  				extension.format(fPreviewDocument, context);
  			} else
  				formatter.format(fPreviewDocument, new Region(0, fPreviewDocument.getLength()));
  		} catch (Exception e) {
  			final IStatus status= new Status(IStatus.ERROR, JavaScriptPlugin.getPluginId(), IJavaStatusConstants.INTERNAL_ERROR, 
  				FormatterMessages.JavaPreview_formatter_exception, e); 
  			JavaScriptPlugin.log(status);
  		} finally {
  		    context.dispose();
  		    fSourceViewer.setRedraw(true);
  		}
      }
      
      public void setPreviewText(String previewText) {
  //        if (previewText == null) throw new IllegalArgumentException();
          fPreviewText= previewText;
          update();
      }
  }
  