blob: 243411a560a895f00988ea949894beef47f9aa39 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2014 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.jst.pagedesigner.ui.preferences;
import java.util.Arrays;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jst.pagedesigner.PDPlugin;
import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
/**
* Utility class for handling preferences related to the Web Page Editor plug-in.
* <br>
* <p><b>Provisional API - subject to change</b></p>
*/
public class PDPreferences extends AbstractPreferenceInitializer {
/**
* Preference used to set modes for the page designer when displayed in a
* sash editor.
*/
public static final String SASH_EDITOR_MODE_PREF = PDPreferences.class
.getName()
+ ".sash_editor_mode"; //$NON-NLS-1$
/**
* The number of pixels of artificial cell padding to use Default = 0
*/
public final static String CSS_USE_ARTIFICAL_CELL_PADDING = PDPreferences.class
.getName()
+ ".CSSArtificalCellPadding"; //$NON-NLS-1$
/**
* Whether or not to enable absolute positioning Default = false
*/
public final static String CSS_ENABLE_ABSOLUTE_POSITIONING = PDPreferences.class
.getName()
+ ".CSSEnableAbsolutePositioning"; //$NON-NLS-1$
/**
* Content types (as comma-delimited String) for which to hide preview page (default is the empty String).
*/
public static final String HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES = PDPreferences.class.
getName() +
".hidePreviewPageForContentTypes"; //$NON-NLS-1$
/**
* The default value for absolute positioning enablement
*/
public static final boolean DEFAULT_CSS_ENABLE_ABSOLUTE_POSITIONING = false;
/**
* The default value for artificial cell padding.
*/
public static final int DEFAULT_CSS_USE_ARTIFICIAL_CELL_PADDING = 4;
/**
* Default value for content types for which to hide preview page.
*/
public static final String DEFAULT_HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES = ""; //$NON-NLS-1$
@Override
public void initializeDefaultPreferences()
{
// Set default HTML editor split vertical (i.e. with top and bottom
// pane)
IPreferenceStore store = getPreferenceStore();
store.setDefault(SASH_EDITOR_MODE_PREF, HTMLEditor.MODE_SASH_VERTICAL);
store.setDefault(CSS_USE_ARTIFICAL_CELL_PADDING,
DEFAULT_CSS_USE_ARTIFICIAL_CELL_PADDING);
store.setDefault(CSS_ENABLE_ABSOLUTE_POSITIONING,
DEFAULT_CSS_ENABLE_ABSOLUTE_POSITIONING);
store.setDefault(HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES,
DEFAULT_HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES);
}
/**
* @return the css absolute positioning enablement flag.
*/
public boolean isCssAbsolutePositioningEnabled()
{
final IPreferenceStore store = getPreferenceStore();
return store.getBoolean(CSS_ENABLE_ABSOLUTE_POSITIONING);
}
/**
* @return the css artificial cell padding preference
*/
public int getCssArtificialCellPadding()
{
final IPreferenceStore store = getPreferenceStore();
return store.getInt(CSS_USE_ARTIFICAL_CELL_PADDING);
}
/**
* Get list of content types for which to hide preview page.
* @return Content types (as String array) for which to hide preview page.
*/
public static String[] getHiddenPreviewPageContentTypes()
{
String[] hiddenTypes = new String[0];
final IPreferenceStore store = getPreferenceStore();
final String hiddenTypesString = store.getString(HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES);
if (hiddenTypesString != null && hiddenTypesString.length() > 0)
{
hiddenTypes = hiddenTypesString.split(","); //$NON-NLS-1$
}
return hiddenTypes;
}
/**
* Adds content type to list of types for which to hide preview page.
* @param contentTypeId Content type to add to list.
*/
public static void addHiddenPreviewPageContentType(String contentTypeId)
{
if (contentTypeId != null && contentTypeId.length() > 0)
{
final String[] hiddenContentTypes = getHiddenPreviewPageContentTypes();
if (Arrays.binarySearch(hiddenContentTypes, contentTypeId) < 0)
{
String hiddenTypesString = arrayToString(hiddenContentTypes);
if (hiddenTypesString.length() > 0)
{
hiddenTypesString = hiddenTypesString.concat(","); //$NON-NLS-1$
}
hiddenTypesString = hiddenTypesString.concat(contentTypeId.trim());
final IPreferenceStore store = getPreferenceStore();
store.setValue(HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES, hiddenTypesString);
}
}
}
/**
* Removes content type from list of types for which to hide preview page.
* @param contentTypeId Content type to remove from list.
*/
public static void removeHiddenPreviewPageContentType(String contentTypeId)
{
if (contentTypeId != null && contentTypeId.length() > 0) {
final String[] hiddenContentTypes = getHiddenPreviewPageContentTypes();
if (Arrays.binarySearch(hiddenContentTypes, contentTypeId) >= 0)
{
final String hiddenTypesString = arrayToString(hiddenContentTypes);
hiddenTypesString.replace(contentTypeId, ""); //$NON-NLS-1$
hiddenTypesString.replace(",,", ","); //$NON-NLS-1$ //$NON-NLS-2$
final IPreferenceStore store = getPreferenceStore();
store.setValue(HIDE_PREVIEW_PAGE_FOR_CONTENT_TYPES, hiddenTypesString);
}
}
}
private static IPreferenceStore getPreferenceStore()
{
return PDPlugin.getDefault().getPreferenceStore();
}
private static String arrayToString(String[] array)
{
String string = ""; //$NON-NLS-1$
if (array != null && array.length > 0)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < array.length; i++)
{
if (i > 0)
{
builder.append(',');
}
builder.append(array[i]);
}
string = builder.toString();
}
return string;
}
}