| /******************************************************************************* |
| * Copyright (c) 2008, 2016 xored software, Inc. 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: |
| * xored software, Inc. - initial API and Implementation (Alex Panchenko) |
| *******************************************************************************/ |
| package org.eclipse.dltk.ruby.formatter; |
| |
| import java.net.URL; |
| import java.util.Map; |
| |
| import org.eclipse.dltk.formatter.AbstractScriptFormatterFactory; |
| import org.eclipse.dltk.ruby.formatter.internal.RubyFormatterPlugin; |
| import org.eclipse.dltk.ruby.formatter.preferences.RubyFormatterModifyDialog; |
| import org.eclipse.dltk.ruby.internal.ui.RubyUI; |
| import org.eclipse.dltk.ui.formatter.IFormatterModifyDialog; |
| import org.eclipse.dltk.ui.formatter.IFormatterModifyDialogOwner; |
| import org.eclipse.dltk.ui.formatter.IScriptFormatter; |
| import org.eclipse.dltk.ui.preferences.PreferenceKey; |
| |
| public class RubyFormatterFactory extends AbstractScriptFormatterFactory { |
| |
| @Override |
| public PreferenceKey getProfilesKey() { |
| return new PreferenceKey(RubyFormatterPlugin.PLUGIN_ID, |
| RubyFormatterConstants.FORMATTER_PROFILES); |
| } |
| |
| @Override |
| public PreferenceKey getActiveProfileKey() { |
| return new PreferenceKey(RubyFormatterPlugin.PLUGIN_ID, |
| RubyFormatterConstants.FORMATTER_ACTIVE_PROFILE); |
| } |
| |
| private static final String[] KEYS = { |
| RubyFormatterConstants.FORMATTER_TAB_CHAR, |
| RubyFormatterConstants.FORMATTER_INDENTATION_SIZE, |
| RubyFormatterConstants.FORMATTER_TAB_SIZE, |
| RubyFormatterConstants.INDENT_CLASS, |
| RubyFormatterConstants.INDENT_MODULE, |
| RubyFormatterConstants.INDENT_METHOD, |
| RubyFormatterConstants.INDENT_BLOCKS, |
| RubyFormatterConstants.INDENT_IF, |
| RubyFormatterConstants.INDENT_CASE, |
| RubyFormatterConstants.INDENT_WHEN, |
| RubyFormatterConstants.LINES_FILE_AFTER_REQUIRE, |
| RubyFormatterConstants.LINES_FILE_BETWEEN_MODULE, |
| RubyFormatterConstants.LINES_FILE_BETWEEN_CLASS, |
| RubyFormatterConstants.LINES_FILE_BETWEEN_METHOD, |
| RubyFormatterConstants.LINES_BEFORE_FIRST, |
| RubyFormatterConstants.LINES_BEFORE_MODULE, |
| RubyFormatterConstants.LINES_BEFORE_CLASS, |
| RubyFormatterConstants.LINES_BEFORE_METHOD, |
| RubyFormatterConstants.LINES_PRESERVE, |
| RubyFormatterConstants.WRAP_COMMENTS, |
| RubyFormatterConstants.WRAP_COMMENTS_LENGTH }; |
| |
| @Override |
| public PreferenceKey[] getPreferenceKeys() { |
| final PreferenceKey[] result = new PreferenceKey[KEYS.length]; |
| for (int i = 0; i < KEYS.length; ++i) { |
| final String key = KEYS[i]; |
| final String qualifier; |
| if (RubyFormatterConstants.FORMATTER_TAB_CHAR.equals(key) |
| || RubyFormatterConstants.FORMATTER_INDENTATION_SIZE |
| .equals(key) |
| || RubyFormatterConstants.FORMATTER_TAB_SIZE.equals(key)) { |
| qualifier = RubyUI.PLUGIN_ID; |
| } else { |
| qualifier = RubyFormatterPlugin.PLUGIN_ID; |
| } |
| result[i] = new PreferenceKey(qualifier, key); |
| } |
| return result; |
| } |
| |
| @Override |
| public IScriptFormatter createFormatter(String lineDelimiter, |
| Map<String, String> preferences) { |
| return new RubyFormatter(lineDelimiter, preferences); |
| } |
| |
| @Override |
| public URL getPreviewContent() { |
| return getClass().getResource("formatterPreview.rb"); //$NON-NLS-1$ |
| } |
| |
| @Override |
| public IFormatterModifyDialog createDialog( |
| IFormatterModifyDialogOwner dialogOwner) { |
| return new RubyFormatterModifyDialog(dialogOwner, this); |
| } |
| |
| } |