blob: b235387d725cd8245dda7225d351e9e9920bacbe [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 xored software, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.ui.formatter;
import java.net.URL;
import java.util.List;
import java.util.Map;
import org.eclipse.dltk.core.IDLTKContributedExtension;
import org.eclipse.dltk.core.IPreferencesLookupDelegate;
import org.eclipse.dltk.core.IPreferencesSaveDelegate;
import org.eclipse.dltk.ui.preferences.PreferenceKey;
/**
* Script source code formatter factory interface.
*/
public interface IScriptFormatterFactory extends IDLTKContributedExtension {
/**
* Retrieves the formatting options from the specified <code>delegate</code>
*
* @param delegate
* @return
*/
Map<String, String> retrievePreferences(IPreferencesLookupDelegate delegate);
/**
* Change the preferences to perform only indenting. Preferences affecting
* the number of lines will be disabled.
*
* @param preferences
* @return
* @since 2.0
*/
Map<String, String> changeToIndentingOnly(Map<String, String> preferences);
PreferenceKey[] getPreferenceKeys();
PreferenceKey getActiveProfileKey();
void savePreferences(Map<String, String> preferences,
IPreferencesSaveDelegate delegate);
/**
* Creates the {@link IScriptFormatter} with the specified preferences.
*
* @param lineDelimiter
* the line delimiter to use
* @param preferences
* the formatting options
*/
IScriptFormatter createFormatter(String lineDelimiter,
Map<String, String> preferences);
List<IProfile> getBuiltInProfiles();
List<IProfile> getCustomProfiles();
void saveCustomProfiles(List<IProfile> profiles);
IProfileVersioner getProfileVersioner();
IProfileStore getProfileStore();
/**
* Validates that this formatter factory is correctly installed.
*
* @return
*/
boolean isValid();
/**
* Return the preview content to use with this formatter or
* <code>null</code> if no preview is available.
*
* @return
*/
URL getPreviewContent();
/**
* @return
*/
IFormatterModifyDialog createDialog(IFormatterModifyDialogOwner dialogOwner);
/**
* @param allProfiles
* @return
*/
IProfileManager createProfileManager(List<IProfile> profiles);
}