diff options
author | cbateman | 2010-03-09 20:24:10 +0000 |
---|---|---|
committer | cbateman | 2010-03-09 20:24:10 +0000 |
commit | 642b2ebd4e6617bcee83da4dc64c9994cbb4058d (patch) | |
tree | 8c926a772e0eb8a93d2e1523948ea4419805016b | |
parent | e5a6440580bd535097151902b346df22ec6830ee (diff) | |
download | webtools.jsf-642b2ebd4e6617bcee83da4dc64c9994cbb4058d.tar.gz webtools.jsf-642b2ebd4e6617bcee83da4dc64c9994cbb4058d.tar.xz webtools.jsf-642b2ebd4e6617bcee83da4dc64c9994cbb4058d.zip |
[bug 303525] Apply fixes and preference page to set absolute position enablement and artificial padding.
16 files changed, 334 insertions, 62 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties index 4a0350fea..46d229880 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties @@ -33,4 +33,5 @@ extension-point.name.3 = Content Model Meta Data propertyTab.label.QuickEdit = Quick Edit propertyTab.label.Attributes = Attributes -ext-pt.WPEPropPage.name = Web Page Editor
\ No newline at end of file +ext-pt.WPEPropPage.name = Web Page Editor +preferencepage.webPageEditor.name=Web Page Editor
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml index c861fe63a..dff36d073 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml @@ -230,6 +230,14 @@ </page> </extension> <extension + point="org.eclipse.ui.preferencePages"> + <page + category="org.eclipse.jst.jsf.ui.JSFRootPage" + class="org.eclipse.jst.pagedesigner.ui.preferences.PDPreferencePage" + id="org.eclipse.jst.jsf.pagedesigner.ui.preferences.PDPreferences" + name="%preferencepage.webPageEditor.name"/> + </extension> + <extension point="org.eclipse.core.runtime.preferences"> <initializer class="org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences"> diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java index 5768ef141..25d3ed646 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java @@ -24,21 +24,8 @@ import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; * * @author mengbo */ -public interface ICSSStyle extends INodeAdapter, IAdaptable { - - // the number of extra pixels to add to top, bottom, left and right padding insets - // in the rendering so that separation between contained components is more - // apparent at design time. These extra pixels are design mode only - // Note: margin padding would be preferred but it doesn't seem to affect - // bottom padding the way border insets do. - // TODO: this should be set to a preference and probably also use an - // algorithm to determine if the the current box style already has a large - // enough separation offset (perhaps a threshold instead of an additive value) - /** - * the border offset - */ - public static final int ARTIFICIAL_BORDER_OFFSET = 4; - +public interface ICSSStyle extends INodeAdapter, IAdaptable +{ /** * */ diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSLayout.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSLayout.java index 9683a34f6..d47bdbbb9 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSLayout.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSLayout.java @@ -22,6 +22,7 @@ import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID; import org.eclipse.jst.pagedesigner.css2.property.PositionMeta; import org.eclipse.jst.pagedesigner.css2.property.VerticalAlignMeta; import org.eclipse.jst.pagedesigner.css2.value.Length; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; /** * CSSLayout is the base layout manager for different CSS layouts, such as block @@ -147,8 +148,10 @@ public abstract class CSSLayout extends FlowFigureLayout implements FlowContext if (style != null) { Object obj = style.getStyleProperty(ICSSPropertyID.ATTR_POSITION); if (PositionMeta.ABSOLUTE.equals(obj) - || PositionMeta.FIXED.equals(obj)) { - return supportAbsolutePosition(); + || PositionMeta.FIXED.equals(obj)) + { + PDPreferences prefs = new PDPreferences(); + return prefs.isCssAbsolutePositioningEnabled(); } } return false; diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java index e6582bf1f..da55ec578 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java @@ -14,6 +14,8 @@ package org.eclipse.jst.pagedesigner.css2.property; import java.util.HashMap; import java.util.Map; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; + /** * @author mengbo */ @@ -29,7 +31,9 @@ public class CSSMetaRegistry { /** * class initializer */ - private void initialize() { + private void initialize() + { + final PDPreferences prefs = new PDPreferences(); _map.put(ICSSPropertyID.ATTR_DISPLAY, new DisplayMeta()); _map.put(ICSSPropertyID.ATTR_TEXTALIGN, new TextAlignMeta()); _map.put(ICSSPropertyID.ATTR_HORIZONTAL_ALIGN, new HorizontalAlignMeta()); @@ -55,10 +59,10 @@ public class CSSMetaRegistry { _map.put(ICSSPropertyID.ATTR_BORDER_BOTTOM_COLOR, new BorderColorMeta()); _map.put(ICSSPropertyID.ATTR_BORDER_TOP_COLOR, new BorderColorMeta()); - _map.put(ICSSPropertyID.ATTR_PADDING_LEFT, new PaddingWidthMeta()); - _map.put(ICSSPropertyID.ATTR_PADDING_RIGHT, new PaddingWidthMeta()); - _map.put(ICSSPropertyID.ATTR_PADDING_BOTTOM, new PaddingWidthMeta()); - _map.put(ICSSPropertyID.ATTR_PADDING_TOP, new PaddingWidthMeta()); + _map.put(ICSSPropertyID.ATTR_PADDING_LEFT, new PaddingWidthMeta(prefs)); + _map.put(ICSSPropertyID.ATTR_PADDING_RIGHT, new PaddingWidthMeta(prefs)); + _map.put(ICSSPropertyID.ATTR_PADDING_BOTTOM, new PaddingWidthMeta(prefs)); + _map.put(ICSSPropertyID.ATTR_PADDING_TOP, new PaddingWidthMeta(prefs)); _map.put(ICSSPropertyID.ATTR_MARGIN_LEFT, new MarginWidthMeta()); _map.put(ICSSPropertyID.ATTR_MARGIN_RIGHT, new MarginWidthMeta()); diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/PaddingWidthMeta.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/PaddingWidthMeta.java index dd295e63f..aec17e4d7 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/PaddingWidthMeta.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/PaddingWidthMeta.java @@ -14,6 +14,7 @@ package org.eclipse.jst.pagedesigner.css2.property; import org.eclipse.jst.pagedesigner.IHTMLConstants; import org.eclipse.jst.pagedesigner.css2.ICSSStyle; import org.eclipse.jst.pagedesigner.css2.value.Length; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.jst.pagedesigner.utils.DOMUtil; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -23,13 +24,16 @@ import org.w3c.dom.Node; */ public class PaddingWidthMeta extends LengthMeta { - private static int MIN_PADDING_THRESHOLD = 4; + private final PDPreferences _prefs; - /** + /** * Default constructor + * @param prefs */ - public PaddingWidthMeta() { + public PaddingWidthMeta(final PDPreferences prefs) + { super(false, ICSSPropertyID.VAL_AUTO); + _prefs = prefs; } /* @@ -53,20 +57,20 @@ public class PaddingWidthMeta extends LengthMeta { break; } } - if (tableEle != null) { + if (tableEle != null) + { + int artificialCellPadding = _prefs.getCssArtificialCellPadding(); //TODO: Why is only cellpadding being checked? Why does this class even exist? What is difference with BorderWidthMeta? String padding = DOMUtil.getAttributeIgnoreCase(tableEle, "cellpadding");//$NON-NLS-1$ if (padding != null && padding.trim().length() > 0) {//fix for 200592 Object length = LengthMeta.toLength(padding, style, this .getPercentageType(), getBaseFont(style)); - if (length instanceof Length && ((Length)length).getValue() >= MIN_PADDING_THRESHOLD) + if (length instanceof Length && ((Length)length).getValue() >= artificialCellPadding) return length; } - // TODO should not be hardcoded value. Either should change to a pref - // or a per-component customization. - return new Length(MIN_PADDING_THRESHOLD, false); + return new Length(artificialCellPadding, false); } } return super.calculateHTMLAttributeOverride(element, htmltag, diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java index 494720724..b642b4e72 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java @@ -30,6 +30,7 @@ import org.eclipse.jst.pagedesigner.css2.property.CSSMetaRegistry; import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID; import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyMeta; import org.eclipse.jst.pagedesigner.css2.value.Length; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.jst.pagedesigner.utils.DOMUtil; import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; import org.w3c.dom.Element; @@ -62,6 +63,8 @@ public class AbstractStyle implements ICSSStyle private HashMap _counters = null; + private final PDPreferences _prefs; + /** * @return the element this style if for */ @@ -71,9 +74,11 @@ public class AbstractStyle implements ICSSStyle /** * @param element + * @param prefs */ - public AbstractStyle(Element element) { + public AbstractStyle(Element element, PDPreferences prefs) { _element = element; + _prefs = prefs; } /** @@ -395,10 +400,11 @@ public class AbstractStyle implements ICSSStyle int right = getInsetProperty(ICSSPropertyID.ATTR_PADDING_RIGHT); //add extra padding only for the top element of a source tag's rendering if (elementIsTagConverted()) { - top += ARTIFICIAL_BORDER_OFFSET; - left += ARTIFICIAL_BORDER_OFFSET; - bottom += ARTIFICIAL_BORDER_OFFSET; - right += ARTIFICIAL_BORDER_OFFSET; + final int borderOffset = _prefs.getCssArtificialCellPadding(); + top += borderOffset; + left += borderOffset; + bottom += borderOffset; + right += borderOffset; } _paddingInsets = new Insets(top, left, bottom, right); } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java index 3637e06ec..7e231509d 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java @@ -20,6 +20,7 @@ import org.eclipse.jst.pagedesigner.css2.font.ICSSFont; import org.eclipse.jst.pagedesigner.css2.list.ICounterValueGenerator; import org.eclipse.jst.pagedesigner.css2.property.CSSMetaRegistry; import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyMeta; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; /** @@ -30,7 +31,19 @@ import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; public class DefaultStyle implements ICSSStyle { private static final Insets EMPTY_INSETS = new Insets(); + /** + * A default preferences object. + */ + protected static final PDPreferences PREFS = new PDPreferences(); + private final PDPreferences _prefs; + /** + * @param prefs + */ + public DefaultStyle(final PDPreferences prefs) + { + _prefs = prefs; + } /* * (non-Javadoc) * @@ -78,7 +91,8 @@ public class DefaultStyle implements ICSSStyle { * @see org.eclipse.jst.pagedesigner.css2.ICSSStyle#getPaddingInsets() */ public Insets getPaddingInsets() { - return new Insets(ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET, ARTIFICIAL_BORDER_OFFSET); + int offset = _prefs.getCssArtificialCellPadding(); + return new Insets(offset, offset, offset, offset); } /* @@ -135,7 +149,7 @@ public class DefaultStyle implements ICSSStyle { */ public static ICSSStyle getInstance() { if (_instance == null) { - _instance = new DefaultStyle(); + _instance = new DefaultStyle(PREFS); } return _instance; } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/HiddenElementStyle.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/HiddenElementStyle.java index f5783f60b..21693e093 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/HiddenElementStyle.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/HiddenElementStyle.java @@ -12,6 +12,7 @@ package org.eclipse.jst.pagedesigner.css2.style; import org.eclipse.jst.pagedesigner.parts.EditProxyAdapter; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; import org.w3c.dom.Element; @@ -49,15 +50,21 @@ public class HiddenElementStyle extends DefaultStyle { /** * @param adapter + * @param prefs */ - public HiddenElementStyle(EditProxyAdapter adapter) { + public HiddenElementStyle(EditProxyAdapter adapter, PDPreferences prefs) + { + super(prefs); this._editProxyAdapter = adapter; } /** * @param convertedElement + * @param prefs */ - public HiddenElementStyle(Element convertedElement) { + public HiddenElementStyle(Element convertedElement, PDPreferences prefs) + { + super(prefs); this._convertedElement = convertedElement; } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/widget/HiddenProvider.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/widget/HiddenProvider.java index 11f13a798..bfd79cf55 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/widget/HiddenProvider.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/widget/HiddenProvider.java @@ -17,6 +17,7 @@ import org.eclipse.jst.pagedesigner.css2.provider.DimensionInfo; import org.eclipse.jst.pagedesigner.css2.style.HiddenElementStyle; import org.eclipse.jst.pagedesigner.parts.EditProxyAdapter; import org.eclipse.jst.pagedesigner.parts.ElementEditPart; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontMetrics; @@ -41,7 +42,7 @@ public class HiddenProvider extends ImageWidgetProvider { * @param convertedElement */ public HiddenProvider(Image image, Element convertedElement) { - super(image, new HiddenElementStyle(convertedElement)); + super(image, new HiddenElementStyle(convertedElement, new PDPreferences())); } /** @@ -49,7 +50,7 @@ public class HiddenProvider extends ImageWidgetProvider { * @param editPart */ public HiddenProvider(Image image, ElementEditPart editPart) { - super(image, new HiddenElementStyle(new EditProxyAdapter(editPart))); + super(image, new HiddenElementStyle(new EditProxyAdapter(editPart), new PDPreferences())); } // public HiddenProvider(Image image, String label) diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java index 1ba1fd0cf..e9f63ba3c 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java @@ -13,6 +13,7 @@ package org.eclipse.jst.pagedesigner.parts; import org.eclipse.jst.pagedesigner.css2.ICSSStyle; import org.eclipse.jst.pagedesigner.css2.style.AbstractStyle; +import org.eclipse.jst.pagedesigner.ui.preferences.PDPreferences; import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory; import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter; import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; @@ -24,11 +25,11 @@ import org.w3c.dom.Element; */ public class CSSStyleAdapterFactory extends AbstractAdapterFactory { static Class ADAPTERKEY = ICSSStyle.class; - - // TODO: dead? private static CSSStyleAdapterFactory _instance = new CSSStyleAdapterFactory(); + private final PDPreferences _prefs; private CSSStyleAdapterFactory() { super(ADAPTERKEY, true); + _prefs = new PDPreferences(); } /* @@ -37,7 +38,7 @@ public class CSSStyleAdapterFactory extends AbstractAdapterFactory { */ protected INodeAdapter createAdapter(INodeNotifier target) { if (target instanceof Element) { - return new AbstractStyle((Element) target); + return new AbstractStyle((Element) target, _prefs); } return null; } diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferencePage.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferencePage.java new file mode 100644 index 000000000..1be27be38 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferencePage.java @@ -0,0 +1,153 @@ +/******************************************************************************* + * Copyright (c) 2004, 2006 Sybase, 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: + * Sybase, Inc. - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.ui.preferences; + +import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jst.pagedesigner.PDPlugin; +import org.eclipse.jst.pagedesigner.utils.EditorUtil; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +/** + * This class represents a preference page that is contributed to the + * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage </samp>, + * we can use the field support built into JFace that allows us to create a page + * that is small and knows how to save, restore and apply itself. + * <p> + * This page is used to modify preferences only. They are stored in the + * preference store that belongs to the main plug-in class. That way, + * preferences can be accessed directly via the preference store. + * + * C.B: Copied from the GEMPreferences in the Faces Config Editor. + */ + +public final class PDPreferencePage extends FieldEditorPreferencePage implements + IWorkbenchPreferencePage +{ + + // appearance + + private Group _cssLayoutGroup; + + // private BooleanField _enableAbsolute; + // + // private IntegerFieldEditor _artificialCellpadding; + + private class BooleanField extends BooleanFieldEditor + { + // private Composite parent; + + /** + * @param name + * @param label + * @param parent + */ + public BooleanField(String name, String label, Composite parent) + { + super(name, label, parent); + // this.parent = parent; + } + + // /** + // * @return the change control button + // */ + // public Button getButton() { + // return getChangeControl(parent); + // } + } + + /** + * Constructor + */ + public PDPreferencePage() + { + super(GRID); + setPreferenceStore(PDPlugin.getDefault().getPreferenceStore()); + setDescription(PreferenceMessages.PDPreferences_description); + } + + /** + * Creates the field editors. Field editors are abstractions of the common + * GUI blocks needed to manipulate various types of preferences. Each field + * editor knows how to save and restore itself. + */ + public void createFieldEditors() + { + _cssLayoutGroup = new Group(getFieldEditorParent(), SWT.NULL); + + // note, we aren't saving the reference. It's assumed that parent + // worries about destruction, persistence etc. + /* _enableAbsolute = */addBooleanField( + PDPreferences.CSS_ENABLE_ABSOLUTE_POSITIONING, + PreferenceMessages.EditorPreferences_LABEL_CSSEnableAbsolutePositioning, + _cssLayoutGroup); + /* _artificialCellpadding = */addIntegerField( + PDPreferences.CSS_USE_ARTIFICAL_CELL_PADDING, + PreferenceMessages.EditorPreferences_LABEL_CSSArtificalCellPadding, + _cssLayoutGroup); + } + + + @Override + public boolean performOk() + { + final boolean succeeded = super.performOk(); + if (succeeded) + { + EditorUtil.refreshAllWPEDesignViewers(); + } + return succeeded; + } + + + protected void initialize() + { + // Color use: Default canvas colors should pick up system defaults + // enable or disable all of the color and font selection controls in the + // preference dialog + // depending on whether the "Use System Colors" checkbox is selected. + super.initialize(); + + ((GridLayout) getFieldEditorParent().getLayout()).numColumns = 1; + _cssLayoutGroup.setLayout(new GridLayout(2, false)); + _cssLayoutGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL + | GridData.VERTICAL_ALIGN_BEGINNING)); + } + + public void init(IWorkbench workbench) + { + // no initialization + } + + private IntegerFieldEditor addIntegerField(String name, String labelText, + Composite parent) + { + IntegerFieldEditor f = new IntegerFieldEditor(name, labelText, parent); + addField(f); + return f; + } + + private BooleanField addBooleanField(String name, String labelText, + Composite parent) + { + BooleanField f = new BooleanField(name, labelText, parent); + addField(f); + return f; + } +}
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferences.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferences.java index 5f2c64a5b..b2dda7a85 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferences.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferences.java @@ -19,21 +19,67 @@ import org.eclipse.jst.pagedesigner.editors.HTMLEditor; */ 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$ + /** + * 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$ + /** + * 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; - private static IPreferenceStore getPreferenceStore() { - return PDPlugin.getDefault().getPreferenceStore(); - } - - @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); - } + private static IPreferenceStore getPreferenceStore() + { + return PDPlugin.getDefault().getPreferenceStore(); + } + + /** + * @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); + } + + @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); + } }
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.java new file mode 100644 index 000000000..0caaeeecb --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.java @@ -0,0 +1,29 @@ +package org.eclipse.jst.pagedesigner.ui.preferences; + +import org.eclipse.osgi.util.NLS; + +/*package*/ class PreferenceMessages extends NLS +{ + private static final String BUNDLE_NAME = "org.eclipse.jst.pagedesigner.ui.preferences.PreferenceMessages"; //$NON-NLS-1$ + /** + * See PreferenceMessages.properties + */ + public static String PDPreferences_description; + /** + * See PreferenceMessages.properties + */ + public static String EditorPreferences_LABEL_CSSArtificalCellPadding; + /** + * See PreferenceMessages.properties + */ + public static String EditorPreferences_LABEL_CSSEnableAbsolutePositioning; + + private PreferenceMessages() { + // Do not instantiate + } + + static { + NLS.initializeMessages(BUNDLE_NAME, PreferenceMessages.class); + } + +} diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.properties new file mode 100644 index 000000000..c7c72051b --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.properties @@ -0,0 +1,3 @@ +PDPreferences_description=Preferences for the design page of Web Page Editor. +EditorPreferences_LABEL_CSSArtificalCellPadding=Add Artificial Padding Around Containers: +EditorPreferences_LABEL_CSSEnableAbsolutePositioning=Enable Absolute CSS Position
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java index 9b7f7ef68..46330f56e 100644 --- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java @@ -19,6 +19,7 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; +import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; @@ -367,7 +368,11 @@ public class ProjectResolver implements URIResolver { if (columnIndex != -1 && (slashIndex == -1 || columnIndex < slashIndex)) { return uri; } - + try { + uri = URLDecoder.decode(uri, "UTF-8"); //$NON-NLS-1$ + } catch (UnsupportedEncodingException e) { + // suppress this. the user's data may be invalid. + } String result = getLocationFromWEBXML(uri, baseReference); if (result != null && !result.equals(uri)) { return result; |