Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbateman2010-03-09 20:24:10 +0000
committercbateman2010-03-09 20:24:10 +0000
commit642b2ebd4e6617bcee83da4dc64c9994cbb4058d (patch)
tree8c926a772e0eb8a93d2e1523948ea4419805016b
parente5a6440580bd535097151902b346df22ec6830ee (diff)
downloadwebtools.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.
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/plugin.properties3
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/plugin.xml8
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/ICSSStyle.java17
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/layout/CSSLayout.java7
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/CSSMetaRegistry.java14
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/property/PaddingWidthMeta.java20
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/AbstractStyle.java16
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/DefaultStyle.java18
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/style/HiddenElementStyle.java11
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/css2/widget/HiddenProvider.java5
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/parts/CSSStyleAdapterFactory.java7
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferencePage.java153
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PDPreferences.java78
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.java29
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/ui/preferences/PreferenceMessages.properties3
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/ProjectResolver.java7
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;

Back to the top