Index: src/org/eclipse/mtj/internal/ui/messages.properties =================================================================== --- src/org/eclipse/mtj/internal/ui/messages.properties (revision 1457) +++ src/org/eclipse/mtj/internal/ui/messages.properties (working copy) @@ -63,6 +63,7 @@ EditorPreferencePage_folding_label=&Enable folding when opening a new editor EditorPreferencePage_generalTextEditor_link=See 'Text Editors' for the general text editor preferences. EditorPreferencePage_localization_tab_title=&Localization Data Highlighting +EditorPreferencePage_jad_tab_title=&Application Descriptor Highlighting EnableLocalizationAction_dialog_title=Localization Wizard ErrorTextWithContinueDialog_continue_label=Continue ExceptionHandler_displayMessageDialog_message=See error log for more details. @@ -236,6 +237,10 @@ XMLSyntaxColorTab_tags_label=Tags XMLSyntaxColorTab_text_label=Text +JADSyntaxColorTab_key_label=Key +JADSyntaxColorTab_value_label=Values +JADSyntaxColorTab_userkey_label=User Keys + L10nAddLocaleAction_text=Locale L10nAddLocaleEntryAction_initialKey=key L10nAddLocaleEntryAction_initialValue=value Index: src/org/eclipse/mtj/internal/ui/preferences/EditorPreferencePage.java =================================================================== --- src/org/eclipse/mtj/internal/ui/preferences/EditorPreferencePage.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/preferences/EditorPreferencePage.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008 - 2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,7 @@ * * Contributors: * Diego Sandin (Motorola) - Initial Version + * Renato Franca (Motorola) - Adding application descriptor tab */ package org.eclipse.mtj.internal.ui.preferences; @@ -40,6 +41,7 @@ private ColorManager fColorManager; private XMLSyntaxColorTab fXMLTab; + private JADSyntaxColorTab fJADTab; /** * Create the EditorPreferencePage. @@ -56,6 +58,7 @@ public void dispose() { fColorManager.disposeColors(false); fXMLTab.dispose(); + fJADTab.dispose(); super.dispose(); } @@ -71,6 +74,7 @@ @Override public boolean performOk() { fXMLTab.performOk(); + fJADTab.performOk(); MTJUIPlugin.getDefault().savePluginPreferences(); return super.performOk(); } @@ -84,6 +88,16 @@ item.setText(MTJUIMessages.EditorPreferencePage_localization_tab_title); item.setControl(fXMLTab.createContents(folder)); } + + /** + * @param folder + */ + private void createJADTab(TabFolder folder) { + fJADTab = new JADSyntaxColorTab(fColorManager); + TabItem item = new TabItem(folder, SWT.NONE); + item.setText(MTJUIMessages.EditorPreferencePage_jad_tab_title); + item.setControl(fJADTab.createContents(folder)); + } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) @@ -125,6 +139,7 @@ folder.setLayout(new TabFolderLayout()); folder.setLayoutData(new GridData(GridData.FILL_BOTH)); + createJADTab(folder); createXMLTab(folder); Dialog.applyDialogFont(getControl()); @@ -138,6 +153,7 @@ @Override protected void performDefaults() { fXMLTab.performDefaults(); + fJADTab.performDefaults(); super.performDefaults(); } } Index: src/org/eclipse/mtj/internal/ui/preferences/JADSyntaxColorTab.java =================================================================== --- src/org/eclipse/mtj/internal/ui/preferences/JADSyntaxColorTab.java (revision 0) +++ src/org/eclipse/mtj/internal/ui/preferences/JADSyntaxColorTab.java (revision 0) @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2009 Motorola. + * + * 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: + * Renato Augusto (Motorola) - Initial implementation + */ + + +package org.eclipse.mtj.internal.ui.preferences; + +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.IDocument; +import org.eclipse.mtj.internal.ui.MTJUIMessages; +import org.eclipse.mtj.internal.ui.editor.context.JADDocumentSetupParticipant; +import org.eclipse.mtj.internal.ui.editor.text.ChangeAwareSourceViewerConfiguration; +import org.eclipse.mtj.internal.ui.editor.text.IColorManager; +import org.eclipse.mtj.internal.ui.editor.text.IMTJColorConstants; +import org.eclipse.mtj.internal.ui.editors.jad.source.JADSourceViewerConfiguration; + +/** + * + * @author cnk378 + * + */ +public class JADSyntaxColorTab extends SyntaxColorTab { + + private static final String[][] COLOR_STRINGS = new String[][] { + { MTJUIMessages.JADSyntaxColorTab_key_label, IMTJColorConstants.P_JAD_KEY}, + { MTJUIMessages.JADSyntaxColorTab_value_label, IMTJColorConstants.P_JAD_VALUE}, + { MTJUIMessages.JADSyntaxColorTab_userkey_label, IMTJColorConstants.P_JAD_USER_KEY } }; + + /** + * @param manager + */ + public JADSyntaxColorTab(IColorManager manager) { + super(manager); + } + + /* + * (non-Javadoc) + * @see + * org.eclipse.mtj.internal.ui.preferences.SyntaxColorTab#getColorStrings() + */ + @Override + protected String[][] getColorStrings() { + return COLOR_STRINGS; + } + + /* + * (non-Javadoc) + * @see org.eclipse.mtj.internal.ui.preferences.SyntaxColorTab#getDocument() + */ + @Override + protected IDocument getDocument() { + + StringBuffer buffer = new StringBuffer(); + String delimiter = System.getProperty("line.separator"); //$NON-NLS-1$ + buffer.append("MIDlet-1: %midlet"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("MIDlet-Jar-URL: %jar"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("MIDlet-Name: %name"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("MIDlet-Version: 1.0.0"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("MicroEdition-Configuration: configuration.example"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("MicroEdition-Profile: profile.example"); //$NON-NLS-1$ + buffer.append(delimiter); + buffer.append("User_New_Key: Value"); //$NON-NLS-1$ + + IDocument document = new Document(buffer.toString()); + new JADDocumentSetupParticipant().setup(document); + return document; + } + + /* + * (non-Javadoc) + * @seeorg.eclipse.mtj.internal.ui.preferences.SyntaxColorTab# + * getSourceViewerConfiguration() + */ + @Override + protected ChangeAwareSourceViewerConfiguration getSourceViewerConfiguration() { + return new JADSourceViewerConfiguration(fColorManager, null); + } +} Index: src/org/eclipse/mtj/internal/ui/MTJUIMessages.java =================================================================== --- src/org/eclipse/mtj/internal/ui/MTJUIMessages.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/MTJUIMessages.java (working copy) @@ -12,6 +12,7 @@ * Fernando Rocha(Motorola)- Add jar message error * Fernando Rocha(Motorola)- Add messages for the new project wizard * Daniel Olsson (Sony Ericsson) - Add messages for DeviceMatchDialog + * Renato Franca(Motorola)- Add JAD preference page messages */ package org.eclipse.mtj.internal.ui; @@ -289,6 +290,7 @@ public static String EditorPreferencePage_folding_label; public static String EditorPreferencePage_generalTextEditor_link; public static String EditorPreferencePage_localization_tab_title; + public static String EditorPreferencePage_jad_tab_title; public static String EnableLocalizationAction_dialog_title; public static String ErrorTextWithContinueDialog_continue_label; @@ -894,6 +896,10 @@ public static String XMLSyntaxColorTab_process_label; public static String XMLSyntaxColorTab_tags_label; public static String XMLSyntaxColorTab_text_label; + + public static String JADSyntaxColorTab_key_label; + public static String JADSyntaxColorTab_value_label; + public static String JADSyntaxColorTab_userkey_label; public static String buttonBarBlock_button_add; public static String buttonBarBlock_button_remove; Index: src/org/eclipse/mtj/internal/ui/editors/jad/form/pages/JADSourceEditorPage.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editors/jad/form/pages/JADSourceEditorPage.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editors/jad/form/pages/JADSourceEditorPage.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008 - 2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,13 +8,19 @@ * * Contributors: * Diego Sandin (Motorola) - Initial implementation + * Renato Franca (Motorola) - Setting preference page */ package org.eclipse.mtj.internal.ui.editors.jad.form.pages; import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.mtj.internal.ui.MTJUIPlugin; import org.eclipse.mtj.internal.ui.editors.jad.form.JADFormEditor; import org.eclipse.mtj.internal.ui.editors.jad.source.JADSourceEditor; +import org.eclipse.mtj.internal.ui.editors.jad.source.JADSourceViewerConfiguration; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.forms.IManagedForm; @@ -45,8 +51,21 @@ public JADSourceEditorPage(JADFormEditor editor) { super(); initialize(editor); + + IPreferenceStore store = MTJUIPlugin.getDefault().getPreferenceStore(); + store.addPropertyChangeListener(new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + + //FIXME + } + }); } + @Override + protected boolean affectsTextPresentation(PropertyChangeEvent event) { + return true; + } + /* * (non-Javadoc) * @@ -131,6 +150,8 @@ */ public void initialize(FormEditor editor) { this.editor = (JADFormEditor) editor; + + setSourceViewerConfiguration(new JADSourceViewerConfiguration(this)); } @@ -193,5 +214,18 @@ this.index = index; } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#collectContextMenuPreferencePages() + */ + @Override + protected String[] collectContextMenuPreferencePages() { + String[] ids = super.collectContextMenuPreferencePages(); + String[] more = new String[ids.length + 1]; + more[0] = "org.eclipse.mtj.ui.EditorPreferencePage"; //$NON-NLS-1$ + System.arraycopy(ids, 0, more, 1, ids.length); + return more; + } } Index: src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceEditor.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceEditor.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceEditor.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008 - 2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -9,6 +9,7 @@ * Contributors: * Diego Sandin (Motorola) - Initial implementation * Gang Ma (Sybase) - Add content assist support + * Renato Franca(Motorola) - Removing setSourceViewerConfiguration call */ package org.eclipse.mtj.internal.ui.editors.jad.source; @@ -42,8 +43,7 @@ */ private static ResourceBundle bundleForConstructedKeys = ResourceBundle .getBundle(RES_BUNDLE_LOCATION); - - + /** * Returns the resource bundle containing the ContentAssist keys. * @@ -57,7 +57,6 @@ * Creates a new Application Descriptor editor */ public JADSourceEditor() { - setSourceViewerConfiguration(new JADSourceViewerConfiguration(this)); } /* Index: src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceViewerConfiguration.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceViewerConfiguration.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editors/jad/source/JADSourceViewerConfiguration.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008 - 2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -7,8 +7,9 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Diego Sandin (Motorola) - Initial implementation + * Diego Sandin (Motorola) - Initial implementation * Gang Ma (Sybase) - Add content assist support + * Renato Franca (Motorola) - Updating Scanner instance */ package org.eclipse.mtj.internal.ui.editors.jad.source; @@ -20,7 +21,10 @@ import org.eclipse.jface.text.presentation.PresentationReconciler; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.jface.text.source.SourceViewerConfiguration; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.mtj.internal.ui.editor.text.ChangeAwareSourceViewerConfiguration; +import org.eclipse.mtj.internal.ui.editor.text.ColorManager; +import org.eclipse.mtj.internal.ui.editor.text.IColorManager; import org.eclipse.mtj.internal.ui.editors.jad.source.contentassist.CompletionProcessor; import org.eclipse.mtj.internal.ui.editors.jad.source.rules.JadScanner; @@ -29,11 +33,21 @@ * * @author Diego Madruga Sandin */ -public class JADSourceViewerConfiguration extends SourceViewerConfiguration { +public class JADSourceViewerConfiguration extends ChangeAwareSourceViewerConfiguration { private JADSourceEditor sourcePage; + private JadScanner jadScanner; public JADSourceViewerConfiguration(JADSourceEditor sourcePage) { + this(new ColorManager(), null); + } + + public JADSourceViewerConfiguration(IColorManager colorManager, JADSourceEditor sourcePage) { + + super(null, colorManager); this.sourcePage = sourcePage; + + jadScanner = new JadScanner(colorManager); + } /* @@ -44,12 +58,14 @@ @Override public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { ContentAssistant ca = new ContentAssistant(); - IContentAssistProcessor cap = new CompletionProcessor(sourcePage); - ca.setContentAssistProcessor(cap, IDocument.DEFAULT_CONTENT_TYPE); - ca.enableAutoActivation(true); - ca - .setInformationControlCreator(getInformationControlCreator(sourceViewer)); - + + if (sourcePage != null) { + IContentAssistProcessor cap = new CompletionProcessor(sourcePage); + ca.setContentAssistProcessor(cap, IDocument.DEFAULT_CONTENT_TYPE); + ca.enableAutoActivation(true); + ca + .setInformationControlCreator(getInformationControlCreator(sourceViewer)); + } return ca; } @@ -64,10 +80,43 @@ ISourceViewer sourceViewer) { PresentationReconciler pr = new PresentationReconciler(); - DefaultDamagerRepairer ddr = new DefaultDamagerRepairer(new JadScanner()); + DefaultDamagerRepairer ddr = new DefaultDamagerRepairer(jadScanner); pr.setRepairer(ddr, IDocument.DEFAULT_CONTENT_TYPE); pr.setDamager(ddr, IDocument.DEFAULT_CONTENT_TYPE); return pr; } + + @Override + public void adaptToPreferenceChange(PropertyChangeEvent event) { + + if (jadScanner == null) { + return; // property change before the editor is fully created + } + + if (affectsColorPresentation(event)) { + fColorManager.handlePropertyChangeEvent(event); + } + + jadScanner.adaptToPreferenceChange(event); + + } + + @Override + public boolean affectsColorPresentation(PropertyChangeEvent event) { + + return true; + } + + @Override + public boolean affectsTextPresentation(PropertyChangeEvent event) { + + return true; + } + + @Override + public void dispose() { + + } + } Index: src/org/eclipse/mtj/internal/ui/editors/jad/source/rules/JadScanner.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editors/jad/source/rules/JadScanner.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editors/jad/source/rules/JadScanner.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008-2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,62 +8,88 @@ * * Contributors: * Diego Sandin (Motorola) - Initial implementation + * Renato Franca (Motorola) - Class refactoring */ package org.eclipse.mtj.internal.ui.editors.jad.source.rules; -import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IWhitespaceDetector; import org.eclipse.jface.text.rules.IWordDetector; -import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.SingleLineRule; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.rules.WhitespaceRule; import org.eclipse.jface.text.rules.WordRule; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.mtj.core.project.midp.DescriptorPropertyDescription; import org.eclipse.mtj.core.project.midp.IJADDescriptorsProvider; import org.eclipse.mtj.internal.core.project.midp.JADAttributesRegistry; +import org.eclipse.mtj.internal.ui.editor.text.BaseMTJScanner; +import org.eclipse.mtj.internal.ui.editor.text.IColorManager; +import org.eclipse.mtj.internal.ui.editor.text.IMTJColorConstants; import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.RGB; /** * A scanner programmed with a sequence of rules specific to the JAD file. * * @author Diego Madruga Sandin */ -public class JadScanner extends RuleBasedScanner { - - /** - * Symbolic name for the keyword colors - */ - private static final String KEYWORD_COLOR= "mtj.jad.keyword.color"; //$NON-NLS-1$ - /** - * Symbolic name for value colors - */ - private static final String VALUE_COLOR= "mtj.jad.value.color"; //$NON-NLS-1$ +public class JadScanner extends BaseMTJScanner { + private Token keyToken; + private Token userkeyToken; + private Token valueToken; - // This is probably not the best way to handle the colors for this scanner - // it will do until the colors are integrated with preferences. - private static final ColorRegistry colorRegistry = new ColorRegistry(); - static{ - colorRegistry.put(KEYWORD_COLOR, new RGB(127,0, 85)); - colorRegistry.put(VALUE_COLOR, new RGB(0,0, 0)); + public JadScanner(IColorManager colorManager) { + super(colorManager); + + } - - /** - * Creates a new Scanner - */ - public JadScanner() { + + @Override + public boolean affectsTextPresentation(String property) { + + return true; + } + + @Override + public Token getTokenAffected(PropertyChangeEvent event) { + + String property = event.getProperty(); + Token affected = null; + + if(property.startsWith(IMTJColorConstants.P_JAD_KEY)) { + + affected = keyToken; + + } else if(property.startsWith(IMTJColorConstants.P_JAD_USER_KEY)) { + + affected = userkeyToken; + + } else if(property.startsWith(IMTJColorConstants.P_JAD_VALUE)) { + + affected = valueToken; + } + + return affected; + + } - IWordDetector detector = new IWordDetector() { + @Override + protected void initialize() { + + + keyToken = new Token(new TextAttribute(super.getColorManager().getColor(IMTJColorConstants.P_JAD_KEY), null, SWT.BOLD )); + userkeyToken = new Token(new TextAttribute(super.getColorManager().getColor(IMTJColorConstants.P_JAD_USER_KEY), null, SWT.NONE )); + valueToken = new Token(new TextAttribute(super.getColorManager().getColor(IMTJColorConstants.P_JAD_VALUE), null, SWT.NONE )); + + IWordDetector detector = new IWordDetector() { public boolean isWordPart(char c) { if (c == ':') { return false; } if (c == '-' ){ - return true; + return true; } return Character.isJavaIdentifierPart(c); } @@ -72,25 +98,22 @@ } }; - final Token keyword = new Token(new TextAttribute(colorRegistry.get(KEYWORD_COLOR), null, SWT.BOLD )); - final Token key = new Token(new TextAttribute(colorRegistry.get(KEYWORD_COLOR), null, SWT.NONE)); - WordRule rule = new WordRule(detector,key); + WordRule rule = new WordRule(detector,userkeyToken); // add tokens for each reserved word IJADDescriptorsProvider[] providers = JADAttributesRegistry.getAllJADDescriptorProviders(); for (int i = 0; i < providers.length; i++) { - DescriptorPropertyDescription[] descriptions = providers[i].getDescriptorPropertyDescriptions(); - for (int j = 0; j < descriptions.length; j++) { - rule.addWord( descriptions[j].getPropertyName(), keyword); - } + DescriptorPropertyDescription[] descriptions = providers[i].getDescriptorPropertyDescriptions(); + for (int j = 0; j < descriptions.length; j++) { + rule.addWord( descriptions[j].getPropertyName(), keyToken); + } } - Token string = new Token(new TextAttribute(colorRegistry.get(VALUE_COLOR))); - - // Rule for Values - SingleLineRule singleLineRule = new SingleLineRule(":", null, string, '\\'); //$NON-NLS-1$ - // Add generic whitespace rule. + // Rule for Values + SingleLineRule singleLineRule = new SingleLineRule(":", null, valueToken, '\\'); //$NON-NLS-1$ + + // Add generic whitespace rule. WhitespaceRule whiteSpaceRule = new WhitespaceRule(new IWhitespaceDetector() { public boolean isWhitespace(char c) { return Character.isWhitespace(c); @@ -98,5 +121,6 @@ }); setRules(new IRule[] { rule, singleLineRule, whiteSpaceRule }); + } } Index: src/org/eclipse/mtj/internal/ui/editor/context/JADDocumentSetupParticipant.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editor/context/JADDocumentSetupParticipant.java (revision 0) +++ src/org/eclipse/mtj/internal/ui/editor/context/JADDocumentSetupParticipant.java (revision 0) @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2009 Motorola. + * + * 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: + * Renato Franca (Motorola) - Initial implementation + */ + +package org.eclipse.mtj.internal.ui.editor.context; + +import org.eclipse.core.filebuffers.IDocumentSetupParticipant; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IDocumentExtension3; +import org.eclipse.jface.text.IDocumentPartitioner; +import org.eclipse.jface.text.rules.FastPartitioner; +import org.eclipse.mtj.internal.ui.editor.text.JADPartitionScanner; + +public class JADDocumentSetupParticipant implements IDocumentSetupParticipant { + + public static final String JAD_PARTITIONING = "_mtj_jad_partitioning"; //$NON-NLS-1$ + + /* (non-Javadoc) + * @see org.eclipse.core.filebuffers.IDocumentSetupParticipant#setup(org.eclipse.jface.text.IDocument) + */ + public void setup(IDocument document) { + IDocumentPartitioner partitioner = createDocumentPartitioner(); + if (partitioner != null) { + partitioner.connect(document); + if (document instanceof IDocumentExtension3) { + IDocumentExtension3 de3 = (IDocumentExtension3) document; + de3.setDocumentPartitioner(JAD_PARTITIONING, partitioner); + } else { + document.setDocumentPartitioner(partitioner); + } + } + } + + /** + * @return + */ + private IDocumentPartitioner createDocumentPartitioner() { + return new FastPartitioner(new JADPartitionScanner(), + JADPartitionScanner.PARTITIONS); + } + +} Index: src/org/eclipse/mtj/internal/ui/editor/text/ColorManager.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editor/text/ColorManager.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editor/text/ColorManager.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2000,2008 IBM Corporation and others. + * Copyright (c) 2000,2009 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 @@ -9,6 +9,7 @@ * Contributors: * IBM Corporation - initial API and implementation * Diego Sandin (Motorola) - Adapted code from org.eclipse.pde.ui + * Renato Franca (Motorola) - Adding JAD preference constants */ package org.eclipse.mtj.internal.ui.editor.text; @@ -19,7 +20,6 @@ import org.eclipse.jdt.ui.PreferenceConstants; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.resource.StringConverter; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.mtj.internal.ui.MTJUIPlugin; import org.eclipse.swt.SWT; @@ -64,6 +64,10 @@ PreferenceConverter.setDefault(store, P_STRING, STRING); PreferenceConverter.setDefault(store, P_TAG, TAG); PreferenceConverter.setDefault(store, P_XML_COMMENT, XML_COMMENT); + + PreferenceConverter.setDefault(store, P_JAD_KEY, JAD_KEY); + PreferenceConverter.setDefault(store, P_JAD_USER_KEY, JAD_USER_KEY); + PreferenceConverter.setDefault(store, P_JAD_VALUE, JAD_VALUE); } private Map fColorTable = new HashMap(5); @@ -118,9 +122,6 @@ Object color = event.getNewValue(); if (color instanceof RGB) { putColor(event.getProperty(), (RGB) color); - } else { - putColor(event.getProperty(), StringConverter.asRGB(color - .toString())); } } @@ -134,6 +135,9 @@ putColor(pstore, P_STRING); putColor(pstore, P_TAG); putColor(pstore, P_XML_COMMENT); + putColor(pstore, P_JAD_KEY); + putColor(pstore, P_JAD_USER_KEY); + putColor(pstore, P_JAD_VALUE); pstore = PreferenceConstants.getPreferenceStore(); for (String element : IColorManager.PROPERTIES_COLORS) { putColor(pstore, element); Index: src/org/eclipse/mtj/internal/ui/editor/text/IMTJColorConstants.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editor/text/IMTJColorConstants.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editor/text/IMTJColorConstants.java (working copy) @@ -1,5 +1,5 @@ /** - * Copyright (c) 2008 Motorola. + * Copyright (c) 2008 - 2009 Motorola. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,7 @@ * * Contributors: * Diego Sandin (Motorola) - Initial Version + * Renato Franca (Motorola) - Adding JAD preference constants */ package org.eclipse.mtj.internal.ui.editor.text; @@ -25,6 +26,10 @@ RGB DEFAULT = new RGB(0, 0, 0); RGB DEFAULT_HIGH_CONTRAST = new RGB(255, 255, 255); RGB TAG = new RGB(0, 0, 128); + + RGB JAD_KEY = new RGB(127, 0, 85); + RGB JAD_VALUE = new RGB(0, 0, 0); + RGB JAD_USER_KEY = new RGB(127, 0, 85); String P_BOLD_SUFFIX = "_bold"; //$NON-NLS-1$ String P_ITALIC_SUFFIX = "_italic"; //$NON-NLS-1$ @@ -34,5 +39,9 @@ String P_STRING = "editor.color.string"; //$NON-NLS-1$ String P_DEFAULT = "editor.color.default"; //$NON-NLS-1$ String P_TAG = "editor.color.tag"; //$NON-NLS-1$ + + String P_JAD_KEY = "editor.color.jad.key"; //$NON-NLS-1$ + String P_JAD_VALUE = "editor.color.jad.value"; //$NON-NLS-1$ + String P_JAD_USER_KEY = "editor.color.jad.userkey"; //$NON-NLS-1$ } Index: src/org/eclipse/mtj/internal/ui/editor/text/BaseMTJScanner.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editor/text/BaseMTJScanner.java (revision 1457) +++ src/org/eclipse/mtj/internal/ui/editor/text/BaseMTJScanner.java (working copy) @@ -9,6 +9,7 @@ * Contributors: * IBM Corporation - initial API and implementation * Diego Sandin (Motorola) - Adapted code from org.eclipse.pde.ui/BasePDEScanner + * Renato Franca (Motorola) - Adding getColorManager method */ package org.eclipse.mtj.internal.ui.editor.text; @@ -96,6 +97,12 @@ public void setColorManager(IColorManager manager) { fColorManager = manager; } + + /** + */ + public IColorManager getColorManager() { + return fColorManager; + } /** * @param event Index: src/org/eclipse/mtj/internal/ui/editor/text/JADPartitionScanner.java =================================================================== --- src/org/eclipse/mtj/internal/ui/editor/text/JADPartitionScanner.java (revision 0) +++ src/org/eclipse/mtj/internal/ui/editor/text/JADPartitionScanner.java (revision 0) @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2009 Motorola. + * + * 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: + * Renato Franca (Motorola) - Initial Version + */ + +package org.eclipse.mtj.internal.ui.editor.text; + +import org.eclipse.jface.text.rules.IPredicateRule; +import org.eclipse.jface.text.rules.RuleBasedPartitionScanner; +import org.eclipse.jface.text.rules.SingleLineRule; +import org.eclipse.jface.text.rules.Token; + +/** + * + * @author cnk378 + * + */ +public class JADPartitionScanner extends RuleBasedPartitionScanner { + + public static final String JAD_HEADER = "__mf_jad_header_value"; //$NON-NLS-1$ + + public static final String[] PARTITIONS = new String[] { JAD_HEADER }; + + /** + * + */ + public JADPartitionScanner() { + IPredicateRule[] rules = new IPredicateRule[1]; + rules[0] = new SingleLineRule( + ":", null, new Token(JAD_HEADER), '\\', true); //$NON-NLS-1$ + setPredicateRules(rules); + + } +}