blob: 20c49e17b08958db7b5a58a44676849cb781c217 [file] [log] [blame]
nitind958d79a2004-11-23 19:23:00 +00001/*******************************************************************************
2 * Copyright (c) 2004 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.wst.css.core.internal.encoding;
12
13
14import org.eclipse.jface.text.IDocumentPartitioner;
david_williams63219a22005-04-10 01:59:51 +000015import org.eclipse.wst.css.core.internal.contenttype.EncodingGuesser;
nitind958d79a2004-11-23 19:23:00 +000016import org.eclipse.wst.css.core.internal.parser.CSSSourceParser;
david_williams4ad020f2005-04-18 08:00:30 +000017import org.eclipse.wst.css.core.internal.provisional.contenttype.ContentTypeIdForCSS;
nitind958d79a2004-11-23 19:23:00 +000018import org.eclipse.wst.css.core.internal.text.CSSStructuredDocumentReParser;
paveryf918eb22005-03-29 18:26:53 +000019import org.eclipse.wst.css.core.internal.text.StructuredTextPartitionerForCSS;
david_williams7a65dc22005-04-09 02:19:50 +000020import org.eclipse.wst.sse.core.internal.document.AbstractDocumentLoader;
21import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
22import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
23import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
david_williamsdce4ddd2005-03-18 05:35:37 +000024import org.eclipse.wst.sse.core.internal.encoding.ContentTypeEncodingPreferences;
david_williams009a70e2005-04-13 05:41:58 +000025import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
david_williams4ad020f2005-04-18 08:00:30 +000026import org.eclipse.wst.sse.core.internal.provisional.document.IEncodedDocument;
27import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
nitind958d79a2004-11-23 19:23:00 +000028import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
nitind958d79a2004-11-23 19:23:00 +000029
30
31public class CSSDocumentLoader extends AbstractDocumentLoader {
david_williams282b8f42005-02-14 07:00:56 +000032 private final static String CSS_ID = ContentTypeIdForCSS.ContentTypeID_CSS;
nitind958d79a2004-11-23 19:23:00 +000033 private IDocumentCharsetDetector documentEncodingDetector;
34
35
36 public CSSDocumentLoader() {
37 super();
38 }
39
40 protected String getEncodingNameByGuess(byte[] string, int length) {
41 String ianaEnc = null;
42 ianaEnc = EncodingGuesser.guessEncoding(string, length);
43 return ianaEnc;
44 }
45
46 /**
47 * Default encoding. For CSS there is no spec'd default.
48 */
49 protected String getSpecDefaultEncoding() {
50 return null;
51 }
52
53 protected IEncodedDocument newEncodedDocument() {
54 // DMW: I copied this from CSSModelImple ...
55 // but am not sure its right
56 IStructuredDocument structuredDocument = StructuredDocumentFactory.getNewStructuredDocumentInstance(getParser());
57 CSSStructuredDocumentReParser reParser = new CSSStructuredDocumentReParser();
58 reParser.setStructuredDocument(structuredDocument);
59 ((BasicStructuredDocument) structuredDocument).setReParser(reParser);
60 return structuredDocument;
61 }
62
63 public RegionParser getParser() {
64 // return new CSSRegionParser();
65 return new CSSSourceParser();
66 }
67
68 protected String getPreferredNewLineDelimiter() {
69 return ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(CSS_ID);
70 }
71
72 public IDocumentCharsetDetector getDocumentEncodingDetector() {
73 if (documentEncodingDetector == null) {
74 documentEncodingDetector = new CSSDocumentCharsetDetector();
75 }
76 return documentEncodingDetector;
77 }
78
79 public IDocumentPartitioner getDefaultDocumentPartitioner() {
80 return new StructuredTextPartitionerForCSS();
81 }
82
83 public IDocumentLoader newInstance() {
84 return new CSSDocumentLoader();
85 }
86
87}