Package org.cfeclipse.cfml.preferences

Source Code of org.cfeclipse.cfml.preferences.CodeFormatterPreferencePage

/*******************************************************************************
* Copyright (c) 2000, 2005 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.cfeclipse.cfml.preferences;

import java.util.ArrayList;
import java.util.List;

import org.cfeclipse.cfml.editors.CFConfiguration;
import org.cfeclipse.cfml.editors.CFDocumentSetupParticipant;
import org.cfeclipse.cfml.editors.CFMLEditor;
import org.cfeclipse.cfml.editors.ColorManager;
import org.cfeclipse.cfml.editors.ICFDocument;
import org.cfeclipse.cfml.editors.formatters.CFMLFormatter;
import org.cfeclipse.cfml.editors.formatters.FormattingPreferences;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.texteditor.ChainedPreferenceStore;

/*
* The page to configure the code formatter options.
*/
public class CodeFormatterPreferencePage extends AbstractCFEditorPreferencePage {
 
  private SourceViewer fPreviewViewer;
  private CFPreviewerUpdater fPreviewerUpdater;
  private CFMLEditor fEditor;
 
  @SuppressWarnings("unchecked")
  protected OverlayPreferenceStore createOverlayStore() {
    List overlayKeys= new ArrayList();
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_WRAP_LONG));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_ALIGN));       
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, EditorPreferenceConstants.FORMATTER_MAX_LINE_LENGTH));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.P_INSERT_SPACES_FOR_TABS));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT, EditorPreferenceConstants.P_TAB_WIDTH));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_CLOSE_TAGS));

    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_CONDENSE_TAGS));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_COLLAPSE_WHITESPACE));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_INDENT_ALL_ELEMENTS));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_TIDY_TAGS));

    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_FORMAT_CFSCRIPT));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_FORMAT_JS));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_SCRIPT_BRACES_ON_OWN_LINE));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_FORMAT_SQL));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_FORMAT_CSS));

    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, EditorPreferenceConstants.FORMATTER_CLOSE_TAGS_LIST));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, EditorPreferenceConstants.FORMATTER_IGNORED_TAGS));

    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE_UPPER));
    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE_LOWER));
   
    OverlayPreferenceStore.OverlayKey[] keys= new OverlayPreferenceStore.OverlayKey[overlayKeys.size()];
    overlayKeys.toArray(keys);
    return new OverlayPreferenceStore(getPreferenceStore(), keys);
  }
 
  /*
   * @see PreferencePage#createControl(Composite)
   */
  public void createControl(Composite parent) {
    super.createControl(parent);
    //TODO set help
    //WorkbenchHelp.setHelp(getControl(), "ANT_FORMATTER_PREFERENCE_PAGE");
  }

  protected Control createContents(Composite parent) {
    initializeDialogUnits(parent);
    getOverlayStore().load();
    getOverlayStore().start();
    int numColumns= 2;
    Composite result= new Composite(parent, SWT.NONE);
    GridLayout layout= new GridLayout();
    layout.marginHeight= 0;
    layout.marginWidth= 0;
    result.setLayout(layout);
   
//    Group indentationGroup= createGroup(numColumns, result, CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_0);
//   
//    String labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_1;
//    String[] errorMessages= new String[]{CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_2, CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_3};
//    addTextField(indentationGroup, labelText, EditorPreferenceConstants.P_TAB_WIDTH, 3, 0, errorMessages);
//   
//    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_4;
//    addCheckBox(indentationGroup, labelText, EditorPreferenceConstants.P_INSERT_SPACES_FOR_TABS, 1);
   
    Group wrappingGroup= createGroup(numColumns, result, CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_6);
    String labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_7;
    String[] errorMessages= new String[]{CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_8, CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_9};
    addTextField(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_MAX_LINE_LENGTH, 3, 0, errorMessages);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_10;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_WRAP_LONG, 1);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_19;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CONDENSE_TAGS, 1);
//    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_5;
//    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_ALIGN, 1);

    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_11;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CLOSE_TAGS, 1);
    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_CloseTagList;
    addExpandableTextField(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CLOSE_TAGS_LIST, 80, 0, null);
    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_IgnoredTags;
    addExpandableTextField(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_IGNORED_TAGS, 80, 0, null);

    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_FormatCFScript;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_FORMAT_CFSCRIPT, 1);
    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_FormatJS;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_FORMAT_JS, 1);
    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_BracesOnOwnLine;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_SCRIPT_BRACES_ON_OWN_LINE, 1);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_12;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_FORMAT_SQL, 1);
    labelText = CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_FormatCSS;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_FORMAT_CSS, 1);

    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_13;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_COLLAPSE_WHITESPACE, 1);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_14;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_INDENT_ALL_ELEMENTS, 1);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_15;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_TIDY_TAGS, 1);
   
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_16;
    addCheckBox(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE, 1);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_17;
    addRadioButton(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE_LOWER, 15);
    labelText= CFMLPreferencesMessages.CFMLCodeFormatterPreferencePage_18;
    addRadioButton(wrappingGroup, labelText, EditorPreferenceConstants.FORMATTER_CHANGE_TAG_CASE_UPPER, 15);
   
    Label label= new Label(result, SWT.LEFT);
    label.setText(CFMLPreferencesMessages.CFMLEditorPreferencePage_9);
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   
    Control previewer= createPreviewer(result);
    GridData gd= new GridData(GridData.FILL_BOTH);
    gd.widthHint= convertWidthInCharsToPixels(20);
    gd.heightHint= convertHeightInCharsToPixels(5);
    previewer.setLayoutData(gd);
   
    initializeFields();
   
    applyDialogFont(result);
 
    return result;
  }
   
  private Control createPreviewer(Composite parent) {
    fPreviewViewer = new SourceViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
        fEditor = new CFMLEditor();
        ColorManager colorMan = new ColorManager();
    CFConfiguration configuration = new CFConfiguration(colorMan,fEditor);
 
    fPreviewViewer.configure(configuration);
    fPreviewViewer.setEditable(false)
    Font font= JFaceResources.getFont(JFaceResources.TEXT_FONT);
    fPreviewViewer.getTextWidget().setFont(font);   
   
    IPreferenceStore store= new ChainedPreferenceStore(new IPreferenceStore[] { getOverlayStore(), EditorsUI.getPreferenceStore() });
    fPreviewerUpdater= new CFPreviewerUpdater(fPreviewViewer, configuration, store);
   
    String content= loadPreviewContentFromFile("FormatPreviewCode.txt"); //$NON-NLS-1$
    content= formatContent(content, store);
    //IDocument document = new Document(content);      
    ICFDocument document = new ICFDocument(content);
    new CFDocumentSetupParticipant().setup(document);
    fPreviewViewer.setDocument(document);
   
    return fPreviewViewer.getControl();
  }

  private String formatContent(String content, IPreferenceStore preferenceStore) {
    FormattingPreferences prefs= new FormattingPreferences();
    prefs.setPreferenceStore(preferenceStore);
    return CFMLFormatter.format(content, prefs);
  }

  /* (non-Javadoc)
   * @see org.cfeclipse.cfml.preferences.AbstractCFEditorPreferencePage#handleDefaults()
   */
  protected void handleDefaults() {
  }
 
  /* (non-Javadoc)
   * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
   */
  public void dispose() {
    super.dispose();
    if (fPreviewerUpdater != null) {
      fPreviewerUpdater.dispose();
    }
  }
}
TOP

Related Classes of org.cfeclipse.cfml.preferences.CodeFormatterPreferencePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.