Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/htmlcss/StyleElementAdapter.java')
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/htmlcss/StyleElementAdapter.java452
1 files changed, 0 insertions, 452 deletions
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/htmlcss/StyleElementAdapter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/htmlcss/StyleElementAdapter.java
deleted file mode 100644
index 3ef97b9cc9..0000000000
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/htmlcss/StyleElementAdapter.java
+++ /dev/null
@@ -1,452 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004-2006 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
- *
- * Masaki Saitoh (MSAITOH@jp.ibm.com)
- * See Bug 153000 Style Adapters should be lazier
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=153000
- *
- ********************************************************************************/
-package org.eclipse.wst.html.core.internal.htmlcss;
-
-
-
-import org.eclipse.wst.css.core.internal.provisional.adapters.IModelProvideAdapter;
-import org.eclipse.wst.css.core.internal.provisional.adapters.IStyleSheetListAdapter;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
-import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.events.IStructuredDocumentListener;
-import org.eclipse.wst.sse.core.internal.provisional.events.NewDocumentEvent;
-import org.eclipse.wst.sse.core.internal.provisional.events.NoChangeEvent;
-import org.eclipse.wst.sse.core.internal.provisional.events.RegionChangedEvent;
-import org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent;
-import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegionList;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- */
-public class StyleElementAdapter extends AbstractStyleSheetAdapter implements IStructuredDocumentListener {
-
- private boolean replaceModel = true;
- private boolean ignoreNotification = false;
-
- /**
- */
- protected StyleElementAdapter() {
- super();
- }
-
- /**
- * Preparation of applying changes from CSS sub-model to HTML model
- */
- private void changeStructuredDocumentRegion(IStructuredDocumentRegion flatNode) {
- if (flatNode == null)
- return;
- Element element = getElement();
- if (element == null)
- return;
- ICSSModel model = getExistingModel();
- if (model == null)
- return;
- IStructuredDocument structuredDocument = model.getStructuredDocument();
- if (structuredDocument == null)
- return;
-
- // get old content length
- Node child = element.getFirstChild();
- if (child == null || child.getNodeType() != Node.TEXT_NODE)
- return;
- IDOMNode content = (IDOMNode) child;
- int oldLength = content.getEndOffset() - content.getStartOffset();
-
- // get new content length
- int newLength = 0;
- IStructuredDocumentRegionList flatNodes = structuredDocument.getRegionList();
- if (flatNodes != null) {
- int count = flatNodes.getLength();
- if (count > 0) {
- IStructuredDocumentRegion last = flatNodes.item(count - 1);
- if (last != null)
- newLength = last.getEnd();
- }
- }
-
- int offset = flatNode.getStart();
- int end = flatNode.getEnd();
- int diff = oldLength - newLength;
- int length = end - offset + diff;
- String data = flatNode.getText();
-
- replaceData(offset, length, data);
- }
-
- /**
- * Apply changes from HTML model to CSS sub-model
- */
- private void contentChanged() {
- Element element = getElement();
- if (element == null)
- return;
- ICSSModel model = getExistingModel();
- if (model == null)
- return;
- IStructuredDocument structuredDocument = model.getStructuredDocument();
- if (structuredDocument == null)
- return;
-
- String data = null;
- Node child = element.getFirstChild();
- if (child != null && child.getNodeType() == Node.TEXT_NODE && child.getNextSibling() == null) {
- data = child.getNodeValue();
- }
- if (data == null)
- data = "";//$NON-NLS-1$
-
- // minimize replace range
- int start = 0, end = 0;
- String oldData = structuredDocument.get();
- if (oldData == null)
- oldData = "";//$NON-NLS-1$
-
- // search differenct character position from first
- for (; start < oldData.length() && start < data.length(); start++)
- if (oldData.charAt(start) != data.charAt(start))
- break;
-
- if (start == oldData.length() && start == data.length())
- return; // no change
- else if (start == oldData.length()) {
- structuredDocument.replaceText(getRequesterH2C(), start, 0, data.substring(start)); // append text to last
- }
- else if (start == data.length()) {
- structuredDocument.replaceText(getRequesterH2C(), start, oldData.length() - start, ""); // remove text of last //$NON-NLS-1$
- }
- else {
- // search differenct character position from last
- for (; start < oldData.length() - end && start < data.length() - end; end++) {
- if (oldData.charAt(oldData.length() - end - 1) != data.charAt(data.length() - end - 1))
- break;
- }
- structuredDocument.replaceText(getRequesterH2C(), start, oldData.length() - end - start, data.substring(start, data.length() - end));
- }
-
- }
-
- /**
- */
- public ICSSModel getModel() {
- ICSSModel model = getExistingModel();
- if (this.replaceModel) {
- ICSSModel oldModel = model;
- model = createModel(false);
-
- setModel(model, false); // need to set before contentChanged()
- contentChanged();
-
- // from super.createModel()
- // get ModelProvideAdapter
- IModelProvideAdapter modelProvideAdapter = (IModelProvideAdapter) ((INodeNotifier) getElement()).getAdapterFor(IModelProvideAdapter.class);
- // notify adapter
- if (modelProvideAdapter != null)
- modelProvideAdapter.modelProvided(model);
-
- // from createModel()
- IStructuredDocument structuredDocument = model.getStructuredDocument();
- if (structuredDocument == null)
- return null;
- structuredDocument.addDocumentChangedListener(this);
-
- // from setModel()
- if (oldModel != null)
- oldModel.removeStyleListener(this);
- if (model != null)
- model.addStyleListener(this);
-
- if (oldModel != null) {
- // get ModelProvideAdapter
- IModelProvideAdapter adapter = (IModelProvideAdapter) ((INodeNotifier) getElement()).getAdapterFor(IModelProvideAdapter.class);
- if (adapter != null) {
- adapter.modelRemoved(oldModel);
- }
- }
-
- this.replaceModel = false;
- }
- return model;
- }
-
- /**
- */
- protected boolean isValidAttribute() {
- Element element = getElement();
- if (element == null) {
- return false;
- }
- String type = element.getAttribute(HTML40Namespace.ATTR_NAME_TYPE);
- if (type != null && type.length() > 0 && !type.equalsIgnoreCase("text/css")) { //$NON-NLS-1$
- return false;
- }
- return true;
- }
-
- /**
- */
- protected ICSSModel createModel() {
- return createModel(true);
- }
-
- /**
- */
- protected ICSSModel createModel(boolean addListener) {
- if (!isValidAttribute()) {
- return null;
- }
-
- if (!addListener)
- return super.createModel(false);
-
- ICSSModel model = super.createModel();
- IStructuredDocument structuredDocument = model.getStructuredDocument();
- if (structuredDocument == null)
- return null;
- structuredDocument.addDocumentChangedListener(this);
-
- return model;
- }
-
- /**
- */
- // public ICSSModel getModel() {
- // ICSSModel model = getExistingModel();
- // if (model == null) {
- // model = createModel();
- // if (model == null) return null;
- // IStructuredDocument structuredDocument = model.getStructuredDocument();
- // if (structuredDocument == null) return null;
- // structuredDocument.addModelChangedListener(this);
- // setModel(model); // need to set before contentChanged()
- // contentChanged();
- // }
- // return model;
- // }
- /**
- */
- private Object getRequesterH2C() {
- return (getElement() != null && ((IDOMNode) getElement()).getModel() != null) ? (Object) ((IDOMNode) getElement()).getModel() : this;
- }
-
- /**
- */
- private Object getRequesterC2H() {
- return (getModel() != null) ? (Object) getModel() : this;
- }
-
- /**
- * Implementing IStructuredDocumentListener's method
- * Event from CSS Flat Model
- */
- public void newModel(NewDocumentEvent event) {
- if (event == null)
- return;
- if (event.getOriginalRequester() == getRequesterH2C())
- return;
- IStructuredDocument structuredDocument = event.getStructuredDocument();
- if (structuredDocument == null)
- return;
- IStructuredDocumentRegionList flatNodes = structuredDocument.getRegionList();
- if (flatNodes == null)
- return;
-
- replaceStructuredDocumentRegions(flatNodes, null);
- }
-
- /**
- * Implementing IStructuredDocumentListener's method
- * Event from CSS Flat Model
- */
- public void noChange(NoChangeEvent structuredDocumentEvent) {
- }
-
- /**
- * Implementing IStructuredDocumentListener's method
- * Event from CSS Flat Model
- */
- public void nodesReplaced(StructuredDocumentRegionsReplacedEvent event) {
- if (event == null)
- return;
- if (event.getOriginalRequester() == getRequesterH2C())
- return;
- IStructuredDocumentRegionList oldStructuredDocumentRegions = event.getOldStructuredDocumentRegions();
- IStructuredDocumentRegionList newStructuredDocumentRegions = event.getNewStructuredDocumentRegions();
- if (oldStructuredDocumentRegions == null && newStructuredDocumentRegions == null)
- return;
-
- replaceStructuredDocumentRegions(newStructuredDocumentRegions, oldStructuredDocumentRegions);
- }
-
- /**
- * Overriding INodeAdapter's method
- * Event from <STYLE> element
- */
- public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
- if (this.ignoreNotification)
- return;
-
- if (eventType == INodeNotifier.ADD || eventType == INodeNotifier.REMOVE || eventType == INodeNotifier.CONTENT_CHANGED) {
- contentChanged();
- }
- else if (eventType == INodeNotifier.CHANGE) {
- Attr attr = (Attr) changedFeature;
- if (attr == null)
- return;
- String name = attr.getName();
- if (name.equalsIgnoreCase("type")) { //$NON-NLS-1$
- this.replaceModel = true;
-
- Element element = getElement();
- if (element == null) {
- return;
- }
- Document document = element.getOwnerDocument();
- if (document == null) {
- return;
- }
- HTMLDocumentAdapter adapter = (HTMLDocumentAdapter) ((INodeNotifier) document).getAdapterFor(IStyleSheetListAdapter.class);
- if (adapter != null) {
- adapter.childReplaced();
- }
- }
- }
- }
-
- /**
- * Implementing IStructuredDocumentListener's method
- * Event from CSS Flat Model
- */
- public void regionChanged(RegionChangedEvent event) {
- if (event == null)
- return;
- if (event.getOriginalRequester() == getRequesterH2C())
- return;
- IStructuredDocumentRegion flatNode = event.getStructuredDocumentRegion();
- if (flatNode == null)
- return;
-
- changeStructuredDocumentRegion(flatNode);
- }
-
- /**
- * Implementing IStructuredDocumentListener's method
- * Event from CSS Flat Model
- */
- public void regionsReplaced(RegionsReplacedEvent event) {
- if (event == null)
- return;
- if (event.getOriginalRequester() == getRequesterH2C())
- return;
- IStructuredDocumentRegion flatNode = event.getStructuredDocumentRegion();
- if (flatNode == null)
- return;
-
- changeStructuredDocumentRegion(flatNode);
- }
-
- /**
- * Apply changes from CSS sub-model to HTML model
- */
- private void replaceData(int offset, int length, String data) {
- IDOMNode element = (IDOMNode) getElement();
- if (element == null)
- return;
- IDOMModel ownerModel = element.getModel();
- if (ownerModel == null)
- return;
- IStructuredDocument structuredDocument = ownerModel.getStructuredDocument();
- if (structuredDocument == null)
- return;
- IStructuredDocumentRegion flatNode = element.getStartStructuredDocumentRegion();
- if (flatNode == null)
- return;
-
- int contentOffset = flatNode.getEndOffset();
- if (data == null)
- data = "";//$NON-NLS-1$
-
- this.ignoreNotification = true;
- structuredDocument.replaceText(getRequesterC2H(), contentOffset + offset, length, data);
- this.ignoreNotification = false;
- }
-
- /**
- * Preparation of applying changes from CSS sub-model to HTML model
- */
- private void replaceStructuredDocumentRegions(IStructuredDocumentRegionList newStructuredDocumentRegions, IStructuredDocumentRegionList oldStructuredDocumentRegions) {
- int offset = 0;
- int length = 0;
- if (oldStructuredDocumentRegions != null) {
- int count = oldStructuredDocumentRegions.getLength();
- if (count > 0) {
- IStructuredDocumentRegion first = oldStructuredDocumentRegions.item(0);
- if (first != null)
- offset = first.getStart();
- IStructuredDocumentRegion last = oldStructuredDocumentRegions.item(count - 1);
- if (last != null)
- length = last.getEnd() - offset;
- }
- }
- String data = null;
- if (newStructuredDocumentRegions != null) {
- int count = newStructuredDocumentRegions.getLength();
- if (count > 0) {
- StringBuffer buffer = new StringBuffer();
- for (int i = 0; i < count; i++) {
- IStructuredDocumentRegion flatNode = newStructuredDocumentRegions.item(i);
- if (flatNode == null)
- continue;
- buffer.append(flatNode.getText());
- if (i == 0)
- offset = flatNode.getStart();
- }
- data = buffer.toString();
- }
- }
-
- replaceData(offset, length, data);
- }
-
- /**
- */
- protected void setModel(ICSSModel model) {
- setModel(model, true);
- }
-
- /**
- */
- protected void setModel(ICSSModel model, boolean setupListener) {
- ICSSModel oldModel = getExistingModel();
- if (model == oldModel)
- return;
- super.setModel(model);
- if (!setupListener)
- return;
- if (oldModel != null)
- oldModel.removeStyleListener(this);
- if (model != null)
- model.addStyleListener(this);
- }
-} \ No newline at end of file

Back to the top