34 | <apex:page>
35 | <[press ctrl+space] **
36 | </apex:page>
37 |
38 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
27 | * This page is used to modify preferences only. They
28 | * are stored in the preference store that belongs to
29 | * the main plug-in class. That way, preferences can
30 | * be accessed directly via the preference store.
31 | */
32 |
33 | public class RichVisualForcePreferencePage
34 | extends FieldEditorPreferencePage
35 | implements IWorkbenchPreferencePage {
36 |
37 | public RichVisualForcePreferencePage() {
38 | super(GRID);
39 | setPreferenceStore(Activator.getDefault().getPreferenceStore());
40 | setDescription("Rich VisualForce editor preference");
41 | }
42 |
43 | /**
44 | * Creates the field editors. Field editors are abstractions of
45 | * the common GUI blocks needed to manipulate various types
46 | * of preferences. Each field editor knows how to save and
47 | * restore itself.
48 | */
49 | public void createFieldEditors() {
50 |
51 | addField(new BooleanFieldEditor(
52 | PreferenceConstants.ENABLE_GIT_COMMIT,
53 | "Enable git commit on Ctrl+S shortcut", getFieldEditorParent()));
54 |
55 | IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
56 | System.out.println(projects.toString());
57 | Label label = new Label(getFieldEditorParent(), SWT.BORDER | SWT.BORDER_SOLID);
58 | label.setText("Please specify repository location for each project, If you want to enable \ncommetting code on \"CTRL+SHIFT+C\" then please dont forget to click on checkbox.");
59 |
60 | for (IProject iProject : projects) {
61 | Group automaticValidationGroup = new Group(getFieldEditorParent(), SWT.NONE);
62 | automaticValidationGroup.setText(iProject.getLocation().toFile().getName() + " Configuration");
63 | GridLayout gridLayout = new GridLayout(2, false);
64 | GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
65 | gridData.horizontalSpan = 3;
66 |
67 | System.out.println("Project : -- " + iProject.getLocation().toFile().getAbsolutePath());
68 | addField(new BooleanFieldEditor (
69 | "COMMIT_ENABLE_" + iProject.getLocation().toFile().getName(),
70 | "Enable Code Commit",
71 | automaticValidationGroup));
72 |
73 | addField(new DirectoryFieldEditor (
74 | "REPOSITORY_" + iProject.getLocation().toFile().getName(),
75 | "Repository Location",
76 | automaticValidationGroup));
77 |
78 | automaticValidationGroup.setLayoutData(gridData);
79 | automaticValidationGroup.setLayout(gridLayout);
80 | }
81 | }
82 |
83 | /* (non-Javadoc)
84 | * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
85 | */
86 | public void init(IWorkbench workbench) {
87 | }
88 |
89 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/CDataRule.java:
--------------------------------------------------------------------------------
1 |
2 | package com.vf.apex.editor.rules;
3 |
4 | import org.eclipse.jface.text.rules.ICharacterScanner;
5 | import org.eclipse.jface.text.rules.IRule;
6 | import org.eclipse.jface.text.rules.IToken;
7 | import org.eclipse.jface.text.rules.Token;
8 | /**
9 | *
10 | * @author eclipse and AjayHada
11 | *
12 | */
13 | public class CDataRule implements IRule
14 | {
15 |
16 | IToken fToken;
17 | StringBuffer buffer = new StringBuffer();
18 | int charsRead = 0;
19 |
20 | private String matchString;
21 | private static final String START_MATCH_STRING = "";
23 |
24 |
25 | public CDataRule(IToken token, boolean start)
26 | {
27 | super();
28 | this.fToken = token;
29 | this.matchString = start?START_MATCH_STRING:END_MATCH_STRING;
30 | }
31 |
32 | /*
33 | * @see IRule#evaluate(ICharacterScanner)
34 | */
35 | public IToken evaluate(ICharacterScanner scanner)
36 | {
37 |
38 | buffer.setLength(0);
39 |
40 | charsRead = 0;
41 | int c = read(scanner);
42 |
43 | if (c == matchString.charAt(0))
44 | {
45 | do
46 | {
47 | c = read(scanner);
48 | }
49 | while (isOK((char) c));
50 |
51 | if (charsRead == matchString.length())
52 | {
53 | return fToken;
54 | }
55 | else
56 | {
57 | rewind(scanner);
58 | return Token.UNDEFINED;
59 | }
60 |
61 | }
62 |
63 | scanner.unread();
64 | return Token.UNDEFINED;
65 | }
66 |
67 | private void rewind(ICharacterScanner scanner)
68 | {
69 | int rewindLength = charsRead;
70 | while (rewindLength > 0)
71 | {
72 | scanner.unread();
73 | rewindLength--;
74 | }
75 | }
76 |
77 | private int read(ICharacterScanner scanner)
78 | {
79 | int c = scanner.read();
80 | buffer.append((char) c);
81 | charsRead++;
82 | return c;
83 | }
84 |
85 | private boolean isOK(char c)
86 | {
87 | if (charsRead >= matchString.length())
88 | return false;
89 | if (matchString.charAt(charsRead - 1) == c)
90 | return true;
91 | else
92 | return false;
93 | }
94 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/EscapedCharRule.java:
--------------------------------------------------------------------------------
1 |
2 | package com.vf.apex.editor.rules;
3 |
4 | import org.eclipse.jface.text.rules.ICharacterScanner;
5 | import org.eclipse.jface.text.rules.IRule;
6 | import org.eclipse.jface.text.rules.IToken;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | /**
10 | *
11 | * @author eclipse and AjayHada
12 | *
13 | */
14 | @Deprecated
15 | public class EscapedCharRule implements IRule
16 | {
17 |
18 | IToken fToken;
19 | StringBuffer buffer = new StringBuffer();
20 |
21 | public EscapedCharRule(IToken token)
22 | {
23 | super();
24 | this.fToken = token;
25 | }
26 |
27 | /*
28 | * @see IRule#evaluate(ICharacterScanner)
29 | */
30 | public IToken evaluate(ICharacterScanner scanner)
31 | {
32 |
33 | buffer.setLength(0);
34 |
35 | int c = read(scanner);
36 | if (c == '&')
37 | {
38 |
39 | int i = 0;
40 | do
41 | {
42 | c = read(scanner);
43 | i++;
44 |
45 | if (c == '<' || c == ']')
46 | {
47 | // System.out.println("Char " + (char)c);
48 | for (int j= i-1; j > 0; j--)
49 | scanner.unread();
50 | return Token.UNDEFINED;
51 | }
52 | }
53 | while (c != ';');
54 | return fToken;
55 | }
56 |
57 | scanner.unread();
58 | return Token.UNDEFINED;
59 | }
60 |
61 |
62 | private int read(ICharacterScanner scanner)
63 | {
64 | int c = scanner.read();
65 | buffer.append((char) c);
66 | return c;
67 | }
68 |
69 |
70 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/NonMatchingRule.java:
--------------------------------------------------------------------------------
1 |
2 | package com.vf.apex.editor.rules;
3 |
4 | import org.eclipse.jface.text.rules.ICharacterScanner;
5 | import org.eclipse.jface.text.rules.IPredicateRule;
6 | import org.eclipse.jface.text.rules.IToken;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | /**
10 | *
11 | * @author eclipse and AjayHada
12 | *
13 | */
14 | @Deprecated
15 | public class NonMatchingRule implements IPredicateRule
16 | {
17 |
18 | public NonMatchingRule()
19 | {
20 | super();
21 | }
22 |
23 | public IToken getSuccessToken()
24 | {
25 | return Token.UNDEFINED;
26 | }
27 |
28 | public IToken evaluate(ICharacterScanner scanner, boolean resume)
29 | {
30 | return Token.UNDEFINED;
31 | }
32 |
33 | public IToken evaluate(ICharacterScanner scanner)
34 | {
35 | return Token.UNDEFINED;
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/StartTagRule.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.rules;
2 |
3 | import org.eclipse.jface.text.rules.ICharacterScanner;
4 | import org.eclipse.jface.text.rules.IToken;
5 | import org.eclipse.jface.text.rules.MultiLineRule;
6 |
7 | /**
8 | *
9 | * @author eclipse and AjayHada
10 | *
11 | */
12 | @Deprecated
13 | public class StartTagRule extends MultiLineRule
14 | {
15 |
16 | public StartTagRule(IToken token)
17 | {
18 | this(token, false);
19 | }
20 |
21 | protected StartTagRule(IToken token, boolean endAsWell)
22 | {
23 | super("<", endAsWell ? "/>" : ">", token);
24 | }
25 |
26 | protected boolean sequenceDetected(ICharacterScanner scanner, char[] sequence, boolean eofAllowed)
27 | {
28 | int c = scanner.read();
29 | if (sequence[0] == '<')
30 | {
31 | if (c == '?')
32 | {
33 | // processing instruction - abort
34 | scanner.unread();
35 | return false;
36 | }
37 | if (c == '!')
38 | {
39 | scanner.unread();
40 | // comment - abort
41 | return false;
42 | }
43 | }
44 | else if (sequence[0] == '>')
45 | {
46 | scanner.unread();
47 | }
48 | return super.sequenceDetected(scanner, sequence, eofAllowed);
49 | }
50 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/TagRule.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.rules;
2 |
3 | import org.eclipse.jface.text.rules.ICharacterScanner;
4 | import org.eclipse.jface.text.rules.IToken;
5 | import org.eclipse.jface.text.rules.MultiLineRule;
6 |
7 | public class TagRule extends MultiLineRule {
8 |
9 | public TagRule(IToken token) {
10 | super("<", ">", token);
11 | }
12 | protected boolean sequenceDetected(
13 | ICharacterScanner scanner,
14 | char[] sequence,
15 | boolean eofAllowed) {
16 | int c = scanner.read();
17 | if (sequence[0] == '<') {
18 | if (c == '?') {
19 | // processing instruction - abort
20 | scanner.unread();
21 | return false;
22 | }
23 | if (c == '!') {
24 | scanner.unread();
25 | // comment - abort
26 | return false;
27 | }
28 | } else if (sequence[0] == '>') {
29 | scanner.unread();
30 | }
31 | return super.sequenceDetected(scanner, sequence, eofAllowed);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/rules/XMLTextPredicateRule.java:
--------------------------------------------------------------------------------
1 |
2 | package com.vf.apex.editor.rules;
3 |
4 | import org.eclipse.jface.text.rules.ICharacterScanner;
5 | import org.eclipse.jface.text.rules.IPredicateRule;
6 | import org.eclipse.jface.text.rules.IToken;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | /**
10 | *
11 | * @author eclipse and AjayHada
12 | *
13 | */
14 | @Deprecated
15 | public class XMLTextPredicateRule implements IPredicateRule
16 | {
17 |
18 | private IToken token;
19 | private int charsRead;
20 | private boolean whiteSpaceOnly;
21 | boolean inCdata;
22 |
23 | public XMLTextPredicateRule(IToken text)
24 | {
25 | this.token = text;
26 | }
27 |
28 | public IToken getSuccessToken()
29 | {
30 | return token;
31 | }
32 |
33 | public IToken evaluate(ICharacterScanner scanner, boolean resume)
34 | {
35 | return evaluate(scanner);
36 | }
37 |
38 | public IToken evaluate(ICharacterScanner scanner)
39 | {
40 |
41 | reinit();
42 |
43 | int c = 0;
44 |
45 | //carry on reading until we find a bad char
46 | //int chars = 0;
47 | while (isOK(c = read(scanner), scanner))
48 | {
49 | //add character to buffer
50 | if (c == ICharacterScanner.EOF)
51 | {
52 | return Token.UNDEFINED;
53 | }
54 |
55 | whiteSpaceOnly = whiteSpaceOnly && (Character.isWhitespace((char) c));
56 | }
57 |
58 | unread(scanner);
59 |
60 | //if we have only read whitespace characters, go back to where evaluation started and return undefined token
61 | if (whiteSpaceOnly)
62 | {
63 | rewind(scanner, charsRead);
64 | return Token.UNDEFINED;
65 | }
66 |
67 | return token;
68 |
69 | }
70 |
71 |
72 | private boolean isOK(int cc, ICharacterScanner scanner)
73 | {
74 |
75 | char c = (char) cc;
76 |
77 | if (!inCdata)
78 | {
79 | if (c == '<')
80 | {
81 |
82 | int cdataCharsRead = 0;
83 |
84 | for (int i = 0; i < "![CDATA[".length(); i++)
85 | {
86 | //whiteSpaceOnly = false;
87 |
88 | c = (char) read(scanner);
89 | cdataCharsRead++;
90 |
91 | if (c != "![CDATA[".charAt(i))
92 | {
93 |
94 | //we don't have a match - wind back only the cdata characters
95 | rewind(scanner, cdataCharsRead);
96 | inCdata = false;
97 | return false;
98 | }
99 | }
100 |
101 | inCdata = true;
102 | return true;
103 |
104 | //return false;
105 | }
106 | }
107 | else
108 | {
109 |
110 | if (c == ']')
111 | {
112 |
113 | for (int i = 0; i < "]>".length(); i++)
114 | {
115 |
116 | c = (char) read(scanner);
117 |
118 | if (c != "]>".charAt(i))
119 | {
120 | //we're still in the CData section, so just continue processing
121 | return true;
122 | }
123 | }
124 |
125 | //we found all the matching characters at the end of the CData section, so break out of this
126 | inCdata = false;
127 |
128 | //we're still in XML text
129 | return true;
130 |
131 | }
132 | }
133 |
134 | return true;
135 |
136 | }
137 |
138 |
139 |
140 | private void rewind(ICharacterScanner scanner, int theCharsRead)
141 | {
142 | while (theCharsRead > 0)
143 | {
144 | theCharsRead--;
145 | unread(scanner);
146 | }
147 | }
148 |
149 | private void unread(ICharacterScanner scanner)
150 | {
151 | scanner.unread();
152 | charsRead--;
153 | }
154 | private int read(ICharacterScanner scanner)
155 | {
156 | int c = scanner.read();
157 | charsRead++;
158 | return c;
159 | }
160 |
161 |
162 | private void reinit()
163 | {
164 | charsRead = 0;
165 | whiteSpaceOnly = true;
166 | }
167 |
168 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/scanners/CDataScanner.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.scanners;
2 |
3 | import org.eclipse.jface.text.TextAttribute;
4 | import org.eclipse.jface.text.rules.IRule;
5 | import org.eclipse.jface.text.rules.IToken;
6 | import org.eclipse.jface.text.rules.RuleBasedScanner;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | import com.vf.apex.editor.ColorManager;
10 | import com.vf.apex.editor.IXMLColorConstants;
11 | import com.vf.apex.editor.rules.CDataRule;
12 |
13 |
14 | /**
15 | *
16 | * @author eclipse and AjayHada
17 | *
18 | */
19 | public class CDataScanner extends RuleBasedScanner
20 | {
21 |
22 | public IToken ESCAPED_CHAR;
23 | public IToken CDATA;
24 |
25 | public CDataScanner(ColorManager colorManager)
26 | {
27 |
28 | CDATA = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA)));
29 |
30 | IRule[] rules = new IRule[2];
31 |
32 | // Add rule to pick up start of c section
33 | rules[0] = new CDataRule(CDATA, true);
34 | // Add a rule to pick up end of CDATA sections
35 | rules[1] = new CDataRule(CDATA, false);
36 |
37 | setRules(rules);
38 | }
39 |
40 |
41 |
42 | public IToken nextToken()
43 | {
44 | return super.nextToken();
45 | }
46 | }
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/scanners/XMLPartitionScanner.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.scanners;
2 |
3 | import org.eclipse.jface.text.rules.IPredicateRule;
4 | import org.eclipse.jface.text.rules.IToken;
5 | import org.eclipse.jface.text.rules.MultiLineRule;
6 | import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | import com.vf.apex.editor.rules.TagRule;
10 |
11 | public class XMLPartitionScanner extends RuleBasedPartitionScanner {
12 | public final static String XML_COMMENT = "__xml_comment";
13 | public final static String XML_TAG = "__xml_tag";
14 |
15 | public XMLPartitionScanner() {
16 |
17 | IToken xmlComment = new Token(XML_COMMENT);
18 | IToken tag = new Token(XML_TAG);
19 |
20 | IPredicateRule[] rules = new IPredicateRule[2];
21 |
22 | rules[0] = new MultiLineRule("", xmlComment);
23 | rules[1] = new TagRule(tag);
24 |
25 | setPredicateRules(rules);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/scanners/XMLScanner.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.scanners;
2 |
3 | import org.eclipse.jface.text.TextAttribute;
4 | import org.eclipse.jface.text.rules.IRule;
5 | import org.eclipse.jface.text.rules.IToken;
6 | import org.eclipse.jface.text.rules.RuleBasedScanner;
7 | import org.eclipse.jface.text.rules.SingleLineRule;
8 | import org.eclipse.jface.text.rules.Token;
9 | import org.eclipse.jface.text.rules.WhitespaceRule;
10 |
11 | import com.vf.apex.editor.ColorManager;
12 | import com.vf.apex.editor.IXMLColorConstants;
13 | import com.vf.apex.editor.XMLWhitespaceDetector;
14 |
15 | public class XMLScanner extends RuleBasedScanner {
16 |
17 | public XMLScanner(ColorManager manager) {
18 | IToken procInstr =
19 | new Token(
20 | new TextAttribute(
21 | manager.getColor(IXMLColorConstants.PROC_INSTR)));
22 |
23 | IRule[] rules = new IRule[2];
24 | //Add rule for processing instructions
25 | rules[0] = new SingleLineRule("", "?>", procInstr);
26 | // Add generic whitespace rule.
27 | rules[1] = new WhitespaceRule(new XMLWhitespaceDetector());
28 |
29 | setRules(rules);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/scanners/XMLTagScanner.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.scanners;
2 |
3 | import org.eclipse.jface.text.TextAttribute;
4 | import org.eclipse.jface.text.rules.IRule;
5 | import org.eclipse.jface.text.rules.IToken;
6 | import org.eclipse.jface.text.rules.RuleBasedScanner;
7 | import org.eclipse.jface.text.rules.SingleLineRule;
8 | import org.eclipse.jface.text.rules.Token;
9 | import org.eclipse.jface.text.rules.WhitespaceRule;
10 |
11 | import com.vf.apex.editor.ColorManager;
12 | import com.vf.apex.editor.IXMLColorConstants;
13 | import com.vf.apex.editor.XMLWhitespaceDetector;
14 |
15 | public class XMLTagScanner extends RuleBasedScanner {
16 |
17 | public XMLTagScanner(ColorManager manager) {
18 | IToken string =
19 | new Token(
20 | new TextAttribute(manager.getColor(IXMLColorConstants.STRING)));
21 |
22 | IRule[] rules = new IRule[3];
23 |
24 | // Add rule for double quotes
25 | rules[0] = new SingleLineRule("\"", "\"", string, '\\');
26 | // Add a rule for single quotes
27 | rules[1] = new SingleLineRule("'", "'", string, '\\');
28 | // Add generic whitespace rule.
29 | rules[2] = new WhitespaceRule(new XMLWhitespaceDetector());
30 |
31 | setRules(rules);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/RichVisualForceEditor/src/com/vf/apex/editor/scanners/XMLTextScanner.java:
--------------------------------------------------------------------------------
1 | package com.vf.apex.editor.scanners;
2 |
3 | import org.eclipse.jface.text.TextAttribute;
4 | import org.eclipse.jface.text.rules.IRule;
5 | import org.eclipse.jface.text.rules.IToken;
6 | import org.eclipse.jface.text.rules.RuleBasedScanner;
7 | import org.eclipse.jface.text.rules.Token;
8 |
9 | import com.vf.apex.editor.ColorManager;
10 | import com.vf.apex.editor.IXMLColorConstants;
11 | import com.vf.apex.editor.rules.CDataRule;
12 |
13 | /**
14 | *
15 | * @author eclipse and AjayHada
16 | *
17 | */
18 | public class XMLTextScanner extends RuleBasedScanner
19 | {
20 |
21 | public IToken ESCAPED_CHAR;
22 | public IToken CDATA_START;
23 | public IToken CDATA_END;
24 | public IToken CDATA_TEXT;
25 |
26 | IToken currentToken;
27 |
28 | public XMLTextScanner(ColorManager colorManager)
29 | {
30 |
31 | ESCAPED_CHAR = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.ESCAPED_CHAR)));
32 | CDATA_START = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA)));
33 | CDATA_END = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA)));
34 | CDATA_TEXT = new Token(new TextAttribute(colorManager.getColor(IXMLColorConstants.CDATA_TEXT)));
35 | IRule[] rules = new IRule[2];
36 |
37 | // Add rule to pick up escaped chars
38 | // Add rule to pick up start of CDATA section
39 | rules[0] = new CDataRule(CDATA_START, true);
40 | // Add a rule to pick up end of CDATA sections
41 | rules[1] = new CDataRule(CDATA_END, false);
42 | setRules(rules);
43 |
44 | }
45 |
46 | public IToken nextToken()
47 | {
48 | IToken token = super.nextToken();
49 | if (currentToken == CDATA_START || currentToken == CDATA_TEXT && token != CDATA_END)
50 | {
51 | this.currentToken = CDATA_TEXT;
52 | return CDATA_TEXT;
53 | }
54 | this.currentToken = token;
55 | return token;
56 | }
57 | }
--------------------------------------------------------------------------------
/RichVisualForceEditorFeature/.project:
--------------------------------------------------------------------------------
1 |
2 |
21 | |
23 |
24 | |
26 | ||||||||
40 | 44 |
45 | (
47 | 53 | |
54 |
55 |
|
78 | ||||||||
86 | Uncategorized 87 | | 88 ||||||||||
112 | 116 |
117 | (
119 | 125 | |
126 |
127 |
|
150 | ||||||||
167 | 171 |
172 | (
174 | 180 | |
181 |
182 |
|
205 |