summaryrefslogtreecommitdiffstats
path: root/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java')
-rw-r--r--plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java
new file mode 100644
index 0000000..4713bc3
--- /dev/null
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/editors/bitbake/BitBakeDocumentProvider.java
@@ -0,0 +1,62 @@
1/*****************************************************************************
2 * Copyright (c) 2009 Ken Gilmer
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 * Ken Gilmer - initial API and implementation
10 *******************************************************************************/
11package org.yocto.bc.ui.editors.bitbake;
12
13import org.eclipse.jface.text.IDocument;
14import org.eclipse.jface.text.IDocumentExtension3;
15import org.eclipse.jface.text.IDocumentPartitioner;
16import org.eclipse.jface.text.rules.FastPartitioner;
17import org.eclipse.jface.text.rules.IPredicateRule;
18import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
19import org.eclipse.jface.text.rules.SingleLineRule;
20import org.eclipse.jface.text.rules.Token;
21import org.eclipse.ui.editors.text.FileDocumentProvider;
22
23/**
24 * Document provider for BB recipe.
25 * @author kgilmer
26 *
27 */
28public class BitBakeDocumentProvider extends FileDocumentProvider {
29 /**
30 * The recipe partitioning. It contains two partition types: {@link #RECIPE_CODE} and
31 * {@link #RECIPE_COMMENT}.
32 */
33 public static final String RECIPE_PARTITIONING= "org.recipeeditor.recipepartitioning"; //$NON-NLS-1$
34
35 public static final String RECIPE_CODE= IDocument.DEFAULT_CONTENT_TYPE;
36 public static final String RECIPE_COMMENT= "RECIPE_COMMENT"; //$NON-NLS-1$
37
38 private static final String[] CONTENT_TYPES= {
39 RECIPE_CODE,
40 RECIPE_COMMENT
41 };
42
43 private IDocumentPartitioner createRecipePartitioner() {
44 IPredicateRule[] rules= { new SingleLineRule("#", null, new Token(RECIPE_COMMENT), (char) 0, true, false) }; //$NON-NLS-1$
45
46 RuleBasedPartitionScanner scanner= new RuleBasedPartitionScanner();
47 scanner.setPredicateRules(rules);
48
49 return new FastPartitioner(scanner, CONTENT_TYPES);
50 }
51
52 @Override
53 protected void setupDocument(Object element,IDocument document) {
54 if (document instanceof IDocumentExtension3) {
55 IDocumentExtension3 ext= (IDocumentExtension3) document;
56 IDocumentPartitioner partitioner= createRecipePartitioner();
57 ext.setDocumentPartitioner(RECIPE_PARTITIONING, partitioner);
58 partitioner.connect(document);
59 }
60 }
61
62}