/** */ public CSSStyleDeclaration getStyle() { ICSSModel model = getModel(); if (model == null) return null; return (CSSStyleDeclaration) model.getDocument(); }
/** */ 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); } }
/** * */ String getLineDelimiter(ICSSNode node) { ICSSModel model = (node != null) ? node.getOwnerDocument().getModel() : null; return (model != null) ? model.getStructuredDocument().getLineDelimiter() : "\n"; //$NON-NLS-1$ // TODO : check whether to use model.getLineDelimiter() or // model.getStructuredDocument().getLineDelimiter() }
/** * */ public CSSLinkConverter(IStructuredModel model) { super(); baseModel = model; if (model instanceof ICSSModel && ((ICSSModel) model).getStyleSheetType() != ICSSModel.EXTERNAL) { IDOMNode node = (IDOMNode) ((ICSSModel) model).getOwnerDOMNode(); baseModel = node.getModel(); } }
/** * If the style sheet is a linked style sheet, the value of its attribute * is its location. For inline style sheets, the value of this attribute * is <code>null</code>. See the href attribute definition for the * <code>LINK</code> element in HTML 4.0, and the href pseudo-attribute * for the XML style sheet processing instruction. */ public String getHref() { ICSSModel model = getModel(); if (model != null && model.getStyleSheetType() == ICSSModel.EXTERNAL) { return model.getBaseLocation(); /* * Object id = model.getId(); if (id != null) { if (id instanceof * IResource) { // TODO: need to check whether this is correct or * not, later. return ((IResource)id).getFullPath().toString(); } * return id.toString(); } */} return null; }
if (getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED) { // case baseModel = ((IDOMNode) getOwnerDocument().getModel().getOwnerDOMNode()).getModel(); adapter.modelProvided(newModel); fStyleSheet = (ICSSStyleSheet) ((ICSSModel) newModel).getDocument(); if (fStyleSheet != null) fStyleSheet.getModel().addStyleListener(getOwnerDocument().getModel());
IStructuredDocument structuredDocument = model.getStructuredDocument(); if (structuredDocument == null) return null; oldModel.removeStyleListener(this); if (model != null) model.addStyleListener(this);
/** */ void releaseRule() { if (fStyleSheet != null) { ICSSStyleSheet sheet = fStyleSheet; fStyleSheet = null; // to prevent loop, we must reset fStyleSheet // before all closing action sheet.getModel().removeStyleListener(getOwnerDocument().getModel()); // get ModelProvideAdapter IModelProvideAdapter adapter = (IModelProvideAdapter) getAdapterFor(IModelProvideAdapter.class); // if (getOwnerDocument().getModel().getStyleSheetType() == // ICSSModel.EMBEDDED) { // case STYLE tag // adapter = (ModelProvideAdapter) // ((INodeNotifier)getOwnerDocument().getModel().getOwnerDOMNode()).getAdapterFor(ModelProvideAdapter.class); // } if (adapter != null) adapter.modelReleased(sheet.getModel()); sheet.getModel().releaseFromRead(); } }
/** * */ protected void formatPre(ICSSNode node, IRegion region, java.lang.StringBuffer source) { CSSCleanupStrategy stgy = getCleanupStrategy(node); IStructuredDocument structuredDocument = node.getOwnerDocument().getModel().getStructuredDocument(); CompoundRegion[] regions = getRegionsWithoutWhiteSpaces(structuredDocument, region, stgy); CompoundRegion[] outside = getOutsideRegions(structuredDocument, region); for (int i = 0; i < regions.length; i++) { if (i != 0 || needS(outside[0]) || regions[i].getType() == CSSRegionContexts.CSS_CDO || node.getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED) appendDelimBefore(node, regions[i], source); source.append(decoratedRegion(regions[i], 0, stgy)); } if (needS(outside[1])) { if (isIncludesPreEnd(node, region)) { if (source.length() > 0 || node.getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED) { String delim = getLineDelimiter(node); source.append(delim); } } } }
/** * @return org.w3c.dom.stylesheets.StyleSheetList */ public org.w3c.dom.stylesheets.StyleSheetList getParentStyleSheets() { List list = (getModel().getStyleListeners() != null) ? new Vector(getModel().getStyleListeners()) : null; if (list == null) return null; InternalStyleSheetList sheets = new InternalStyleSheetList(); Iterator it = list.iterator(); while (it.hasNext()) { Object obj = it.next(); if (obj instanceof ICSSModel) { sheets.appendNode(((ICSSModel) obj).getDocument()); } } if (sheets.getLength() > 0) return sheets; else return null; }
private void findCSS(List cssNodes, IDOMNode node) { ICSSModelAdapter adapter; adapter = (ICSSModelAdapter) node.getAdapterFor(IStyleSheetAdapter.class); if (adapter != null) { ICSSModel model = adapter.getModel(); if (model != null && model.getStyleSheetType() == ICSSModel.EMBEDDED) { cssNodes.add(model.getDocument()); } } else { adapter = (ICSSModelAdapter) node.getAdapterFor(IStyleDeclarationAdapter.class); if (adapter != null) { ICSSModel model = adapter.getModel(); if (model != null && model.getStyleSheetType() == ICSSModel.INLINE) { cssNodes.add(model.getDocument()); } } } for (IDOMNode child = (IDOMNode) node.getFirstChild(); child != null; child = (IDOMNode) child.getNextSibling()) { findCSS(cssNodes, child); } }
/** */ public void removed() { ICSSModel currentModel = getModel(); setModel(null); // get ModelProvideAdapter IModelProvideAdapter adapter = (IModelProvideAdapter) ((INodeNotifier) getElement()).getAdapterFor(IModelProvideAdapter.class); if (adapter != null) adapter.modelRemoved(currentModel); if (currentModel != null) currentModel.releaseFromRead(); }
protected ICSSModel createModel() { // create phantom(broken link) external CSS model if (getElement() == null) return null; IStructuredModel baseModel = ((IDOMNode) getElement()).getModel(); ICSSModel newModel = (ICSSModel) baseModel.getModelManager().createUnManagedStructuredModelFor(CSS_ID); // calculate base location and set // get resolver in Model URIResolver resolver = baseModel.getResolver(); // resolve to absolute url : this need not exact location of css file. It is important that absurl is not null. String ref = getElement().getAttribute(org.eclipse.wst.html.core.internal.provisional.HTML40Namespace.ATTR_NAME_HREF); String absurl = (resolver != null && ref != null) ? resolver.getLocationByURI(ref, true) : null; if ((absurl == null) || (absurl.length() == 0)) { IPath basePath = new Path(baseModel.getBaseLocation()); URLHelper helper = new URLHelper(basePath.removeLastSegments(1).toString()); absurl = helper.toAbsolute(ref == null ? "" : ref);//$NON-NLS-1$ } if ((absurl == null) || (absurl.length() == 0)) { absurl = ref; } if (absurl == null) { absurl = "";//$NON-NLS-1$ } newModel.setBaseLocation(absurl); // set style listener newModel.addStyleListener(this); return newModel; }
/** * */ public void fireUpdate(ICSSModel srcModel) { if (srcModel == null || srcModel.getStyleListeners() == null) return; this.fSrcModel = srcModel; // prohibit delivering to srcModel fVisited.clear(); fVisited.add(srcModel); Object[] listeners = srcModel.getStyleListeners().toArray(); for (int i = 0; i < listeners.length; i++) { visitUpdate((ICSSStyleListener) listeners[i]); } }
/** * The node that associates this style sheet with the document. For HTML, * this may be the corresponding <code>LINK</code> or <code>STYLE</code> * element. For XML, it may be the linking processing instruction. For * style sheets that are included by other style sheets, the value of this * attribute is <code>null</code>. */ public Node getOwnerNode() { // for <LINK> tag or <STYLE> tag ICSSModel model = getModel(); if (model != null) return model.getOwnerDOMNode(); return null; }
/** */ public FactoryRegistry getFactoryRegistry() { ICSSModel model = getOwnerDocument().getModel(); if (model != null) { FactoryRegistry reg = model.getFactoryRegistry(); if (reg != null) return reg; } return null; }
/** * */ void closeStyleSheet() { if (fStyleSheet != null) { ICSSStyleSheet sheet = fStyleSheet; fStyleSheet = null; // to prevent loop, we must reset fStyleSheet // before all closing action sheet.getModel().removeStyleListener(getOwnerDocument().getModel()); // get ModelProvideAdapter IModelProvideAdapter adapter = (IModelProvideAdapter) getAdapterFor(IModelProvideAdapter.class); // if (getOwnerDocument().getModel().getStyleSheetType() == // ICSSModel.EMBEDDED) { // case STYLE tag // adapter = (ModelProvideAdapter) // ((INodeNotifier)getOwnerDocument().getModel().getOwnerDOMNode()).getAdapterFor(ModelProvideAdapter.class); // } if (adapter != null) adapter.modelRemoved(sheet.getModel()); sheet.getModel().releaseFromRead(); } }
/** * */ protected void formatPre(org.eclipse.wst.css.core.internal.provisional.document.ICSSNode node, java.lang.StringBuffer source) { int start = ((IndexedRegion) node).getStartOffset(); int end = (node.getFirstChild() != null && ((IndexedRegion) node.getFirstChild()).getEndOffset() > 0) ? ((IndexedRegion) node.getFirstChild()).getStartOffset() : getChildInsertPos(node); if (end > 0) { CSSCleanupStrategy stgy = getCleanupStrategy(node); IStructuredDocument structuredDocument = node.getOwnerDocument().getModel().getStructuredDocument(); CompoundRegion[] regions = getRegionsWithoutWhiteSpaces(structuredDocument, new FormatRegion(start, end - start), stgy); for (int i = 0; i < regions.length; i++) { if (i != 0 || regions[i].getType() == CSSRegionContexts.CSS_CDO || node.getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED) appendDelimBefore(node, regions[i], source); source.append(decoratedRegion(regions[i], 0, stgy)); } if (node.getLastChild() != null && (source.length() > 0 || node.getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED)) { appendDelimBefore(node, null, source); } } else if (node.getOwnerDocument().getModel() != null && node.getOwnerDocument().getModel().getStyleSheetType() == ICSSModel.EMBEDDED) { appendDelimBefore(node, null, source); // source.append("<!--"); // appendDelimBefore(node,null, source); } else return; // nothing }
/** */ public void removed() { ICSSModel model = getExistingModel(); if (model != null) { try { setModel(null); // get ModelProvideAdapter IModelProvideAdapter adapter = (IModelProvideAdapter) ((INodeNotifier) getElement()).getAdapterFor(IModelProvideAdapter.class); if (adapter != null) adapter.modelRemoved(model); } finally { model.releaseFromRead(); } } this.replaceModel = false; }
/** * */ protected void begin(ICSSNode node) { if (baseModel == null) { baseModel = node.getOwnerDocument().getModel(); if (baseModel instanceof ICSSModel && ((ICSSModel) baseModel).getStyleSheetType() != ICSSModel.EXTERNAL) { IDOMNode xmlNode = (IDOMNode) ((ICSSModel) baseModel).getOwnerDOMNode(); baseModel = xmlNode.getModel(); } } }