[92957] CSS formatting doesn't work in HTML
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/CSSSourceFormatter.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/CSSSourceFormatter.java
deleted file mode 100644
index 37fe679..0000000
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/format/CSSSourceFormatter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.css.core.internal.format;
-
-
-
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-
-
-/**
- * @deprecated
- */
-public interface CSSSourceFormatter extends INodeAdapter {
-
- /**
- *
- */
- StringBuffer cleanup(ICSSNode node);
-
- /**
- *
- * @return java.lang.StringBuffer
- * @param node
- * org.eclipse.wst.css.core.model.interfaces.ICSSNode
- * @param region
- * org.eclipse.jface.text.IRegion
- */
- StringBuffer cleanup(ICSSNode node, IRegion region);
-
- /**
- *
- */
- StringBuffer format(ICSSNode node);
-
- /**
- *
- */
- StringBuffer format(ICSSNode node, IRegion region);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/CSSTextNodeCleanupHandler.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/CSSTextNodeCleanupHandler.java
index ff8006c..05675c6 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/CSSTextNodeCleanupHandler.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/CSSTextNodeCleanupHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM Corporation 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
@@ -12,7 +12,8 @@
-import org.eclipse.wst.css.core.internal.format.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatterFactory;
import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleSheetAdapter;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
@@ -57,10 +58,12 @@
if (document == null)
return null;
INodeNotifier notifier = (INodeNotifier) document;
- INodeAdapter adapter = notifier.getAdapterFor(CSSSourceFormatter.class);
- if (adapter == null)
+ CSSSourceFormatter formatter = (CSSSourceFormatter) notifier.getAdapterFor(CSSSourceFormatter.class);
+ // try another way to get formatter
+ if (formatter == null)
+ formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter(notifier);
+ if (formatter == null)
return null;
- CSSSourceFormatter formatter = (CSSSourceFormatter) adapter;
StringBuffer buffer = formatter.cleanup(document);
if (buffer == null)
return null;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/ElementNodeCleanupHandler.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/ElementNodeCleanupHandler.java
index 32d20db..11af74b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/ElementNodeCleanupHandler.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/cleanup/ElementNodeCleanupHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM Corporation 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
@@ -20,7 +20,8 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.text.edits.InsertEdit;
import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.wst.css.core.internal.format.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatterFactory;
import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleDeclarationAdapter;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
@@ -328,10 +329,12 @@
if (document == null)
return null;
INodeNotifier notifier = (INodeNotifier) document;
- INodeAdapter adapter = notifier.getAdapterFor(CSSSourceFormatter.class);
- if (adapter == null)
+ CSSSourceFormatter formatter = (CSSSourceFormatter) notifier.getAdapterFor(CSSSourceFormatter.class);
+ // try another way to get formatter
+ if (formatter == null)
+ formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter(notifier);
+ if (formatter == null)
return null;
- CSSSourceFormatter formatter = (CSSSourceFormatter) adapter;
StringBuffer buffer = formatter.cleanup(document);
if (buffer == null)
return null;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/EmbeddedCSSFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/EmbeddedCSSFormatter.java
index 294906c..74ec679 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/EmbeddedCSSFormatter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/EmbeddedCSSFormatter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM Corporation 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
@@ -12,7 +12,8 @@
-import org.eclipse.wst.css.core.internal.format.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatterFactory;
import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleSheetAdapter;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
@@ -26,7 +27,8 @@
public class EmbeddedCSSFormatter extends HTMLFormatter {
- //private IAdapterFactory factory = new CSSSourceFormatterFactory(CSSSourceFormatter.class, true);
+ // private IAdapterFactory factory = new
+ // CSSSourceFormatterFactory(CSSSourceFormatter.class, true);
/**
*/
protected EmbeddedCSSFormatter() {
@@ -61,10 +63,12 @@
if (document == null)
return null;
INodeNotifier notifier = (INodeNotifier) document;
- INodeAdapter adapter = notifier.getAdapterFor(CSSSourceFormatter.class);
- if (adapter == null)
+ CSSSourceFormatter formatter = (CSSSourceFormatter) notifier.getAdapterFor(CSSSourceFormatter.class);
+ // try another way to get formatter
+ if (formatter == null)
+ formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter(notifier);
+ if (formatter == null)
return null;
- CSSSourceFormatter formatter = (CSSSourceFormatter) adapter;
StringBuffer buffer = formatter.format(document);
if (buffer == null)
return null;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLElementFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLElementFormatter.java
index 9264c34..88d249b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLElementFormatter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLElementFormatter.java
@@ -12,7 +12,8 @@
import java.util.Iterator;
-import org.eclipse.wst.css.core.internal.format.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatter;
+import org.eclipse.wst.css.core.internal.formatter.CSSSourceFormatterFactory;
import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleDeclarationAdapter;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
@@ -108,7 +109,7 @@
// String newEndTag = endStructuredDocumentRegion.getText();
// if (newEndTag != null && newEndTag.length() > 0) {
// setWidth(contraints, newEndTag);
- // }
+ // }
}
/**
@@ -339,10 +340,12 @@
if (document == null)
return null;
INodeNotifier notifier = (INodeNotifier) document;
- INodeAdapter adapter = notifier.getAdapterFor(CSSSourceFormatter.class);
- if (adapter == null)
+ CSSSourceFormatter formatter = (CSSSourceFormatter) notifier.getAdapterFor(CSSSourceFormatter.class);
+ // try another way to get formatter
+ if (formatter == null)
+ formatter = CSSSourceFormatterFactory.getInstance().getSourceFormatter(notifier);
+ if (formatter == null)
return null;
- CSSSourceFormatter formatter = (CSSSourceFormatter) adapter;
StringBuffer buffer = formatter.format(document);
if (buffer == null)
return null;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLFormatter.java
index 72e9916..37890b5 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLFormatter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/HTMLFormatter.java
@@ -110,7 +110,8 @@
if (next == null && element.getEndStructuredDocumentRegion() == null)
return false;
- // insert line break under non-HTML elements including JSP elements
+ // insert line break under non-HTML elements including JSP
+ // elements
if (element.getPrefix() != null)
return true;
@@ -175,7 +176,8 @@
if (prev == null && element.getStartStructuredDocumentRegion() == null)
return false;
- // insert line break under non-HTML elements including JSP elements
+ // insert line break under non-HTML elements including JSP
+ // elements
if (element.getPrefix() != null)
return true;
@@ -386,6 +388,10 @@
return;
if (node.getNodeType() == Node.TEXT_NODE)
return;
+ // don't insert break if node is on the last line
+ int documentLength = node.getStructuredDocument().getLength();
+ if (documentLength < 1 || (node.getEndOffset() >= (documentLength - 1)))
+ return;
Node parent = node.getParentNode();
if (parent == null)
return;
@@ -482,9 +488,11 @@
int startOffset = flatNode.getStartOffset();
if (structuredDocument.containsReadOnly(startOffset + offset, length))
return;
- // We use 'structuredDocument' as the requester object just so this and the other
- // format-related 'repalceText' (in replaceSource) can use the same requester.
- // Otherwise, if requester is not identical,
+ // We use 'structuredDocument' as the requester object just so this
+ // and the other
+ // format-related 'repalceText' (in replaceSource) can use the same
+ // requester.
+ // Otherwise, if requester is not identical,
// the undo group gets "broken" into multiple pieces based
// on the requesters being different. Technically, any unique, common
// requester object would work.
@@ -503,12 +511,14 @@
source = new String();
if (structuredDocument.containsReadOnly(offset, length))
return;
- // We use 'structuredDocument' as the requester object just so this and the other
- // format-related 'repalceText' (in replaceSource) can use the same requester.
- // Otherwise, if requester is not identical,
+ // We use 'structuredDocument' as the requester object just so this
+ // and the other
+ // format-related 'repalceText' (in replaceSource) can use the same
+ // requester.
+ // Otherwise, if requester is not identical,
// the undo group gets "broken" into multiple pieces based
// on the requesters being different. Technically, any unique, common
- // requester object would work.
+ // requester object would work.
structuredDocument.replaceText(structuredDocument, offset, length, source);
}
@@ -587,19 +597,19 @@
/**
*/
protected boolean splitLines() {
- return true;//getFormatPreferences().getSplitLines();
+ return true;// getFormatPreferences().getSplitLines();
}
protected IStructuredFormatPreferences fFormatPreferences = null;
protected HTMLFormatContraints fFormatContraints = null;
protected IProgressMonitor fProgressMonitor = null;
- //public void format(XMLNode node, FormatContraints formatContraints) {
- // if (formatContraints.getFormatWithSiblingIndent())
- // formatContraints.setCurrentIndent(getSiblingIndent(node));
+ // public void format(XMLNode node, FormatContraints formatContraints) {
+ // if (formatContraints.getFormatWithSiblingIndent())
+ // formatContraints.setCurrentIndent(getSiblingIndent(node));
//
- // formatNode(node, formatContraints);
- //}
+ // formatNode(node, formatContraints);
+ // }
public void setFormatPreferences(IStructuredFormatPreferences formatPreferences) {
fFormatPreferences = formatPreferences;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/SpaceConverter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/SpaceConverter.java
index a7b6f66..38f9203 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/SpaceConverter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/format/SpaceConverter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM Corporation 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
@@ -216,6 +216,8 @@
}
if (oldSpaces != null) {
spaces = mergeBlankLines(spaces, oldSpaces);
+ if (oldSpaces.equals(spaces))
+ return;
}
}