/******************************************************************************* * Copyright (c) 2001, 2007 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 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Jens Lukowski/Innoopract - initial renaming/restructuring * Benjamin Muskalla, b.muskalla@gmx.net - [158660] character entities should have their own syntax highlighting preference * *******************************************************************************/ package org.eclipse.wst.xml.ui.internal.preferences; import java.util.ArrayList; import java.util.Dictionary; import java.util.Hashtable; import java.util.Iterator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.PlatformUI; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.IModelManager; import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey; import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractColorPage; import org.eclipse.wst.sse.ui.internal.preferences.ui.StyledTextColorPicker; import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML; import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext; import org.eclipse.wst.xml.ui.internal.XMLUIMessages; import org.eclipse.wst.xml.ui.internal.XMLUIPlugin; import org.eclipse.wst.xml.ui.internal.editor.IHelpContextIds; import org.eclipse.wst.xml.ui.internal.style.IStyleConstantsXML; /** * @deprecated */ public class XMLColorPage extends AbstractColorPage { protected Control createContents(Composite parent) { Composite pageComponent = createComposite(parent, 1); ((GridData) pageComponent.getLayoutData()).horizontalAlignment = GridData.HORIZONTAL_ALIGN_FILL; super.createContents(pageComponent); PlatformUI.getWorkbench().getHelpSystem().setHelp(pageComponent, IHelpContextIds.XML_PREFWEBX_STYLES_HELPID); return pageComponent; } /** * Set up all the style preference keys in the overlay store */ protected OverlayKey[] createOverlayStoreKeys() { ArrayList overlayKeys = new ArrayList(); ArrayList styleList = new ArrayList(); initStyleList(styleList); Iterator i = styleList.iterator(); while (i.hasNext()) { overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, (String) i.next())); } OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys.size()]; overlayKeys.toArray(keys); return keys; } protected IPreferenceStore doGetPreferenceStore() { return XMLUIPlugin.getDefault().getPreferenceStore(); } public String getSampleText() { return XMLUIMessages.Sample_XML_doc; // = "<?xml // version=\"1.0\"?>\n<?customProcessingInstruction\n\tXML // processor // specific\n\tcontent // ?>\n<!DOCTYPE // colors\n\tPUBLIC // \"//IBM/XML/COLORS/\" // \"colors.dtd\">\n<colors>\n\t<!-- // begin color definitions // -->\n\t<color // name=\"plaintext\" // foreground=\"#000000\"\n\t\tbackground=\"#D4D0C8\"/>\n\t<color // name=\"bold\" // foreground=\"#000000\"\n\t\tbackground=\"#B3ACA0\">\n\t<![CDATA[<123456789>]]>\n\tNormal // text content.\n\t<color // name=\"inverse\" // foreground=\"#F0F0F0\"\n\t\tbackground=\"#D4D0C8\"/>\n\n</colors>\n"; } protected void initCommonContextStyleMap(Dictionary contextStyleMap) { contextStyleMap.put(DOMRegionContext.XML_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER); contextStyleMap.put(DOMRegionContext.XML_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT); contextStyleMap.put(DOMRegionContext.XML_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER); contextStyleMap.put(DOMRegionContext.XML_TAG_OPEN, IStyleConstantsXML.TAG_BORDER); contextStyleMap.put(DOMRegionContext.XML_END_TAG_OPEN, IStyleConstantsXML.TAG_BORDER); contextStyleMap.put(DOMRegionContext.XML_TAG_NAME, IStyleConstantsXML.TAG_NAME); contextStyleMap.put(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME, IStyleConstantsXML.TAG_ATTRIBUTE_NAME); contextStyleMap.put(DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE, IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); contextStyleMap.put(DOMRegionContext.XML_TAG_CLOSE, IStyleConstantsXML.TAG_BORDER); contextStyleMap.put(DOMRegionContext.XML_EMPTY_TAG_CLOSE, IStyleConstantsXML.TAG_BORDER); contextStyleMap.put(DOMRegionContext.XML_DECLARATION_OPEN, IStyleConstantsXML.DECL_BORDER); contextStyleMap.put(DOMRegionContext.XML_DECLARATION_CLOSE, IStyleConstantsXML.DECL_BORDER); contextStyleMap.put(DOMRegionContext.XML_ELEMENT_DECLARATION, IStyleConstantsXML.DECL_BORDER); contextStyleMap.put(DOMRegionContext.XML_ELEMENT_DECL_CLOSE, IStyleConstantsXML.DECL_BORDER); contextStyleMap.put(DOMRegionContext.XML_CHAR_REFERENCE, IStyleConstantsXML.ENTITY_REFERENCE); contextStyleMap.put(DOMRegionContext.XML_ENTITY_REFERENCE, IStyleConstantsXML.ENTITY_REFERENCE); contextStyleMap.put(DOMRegionContext.XML_PE_REFERENCE, IStyleConstantsXML.ENTITY_REFERENCE); contextStyleMap.put(DOMRegionContext.XML_CONTENT, IStyleConstantsXML.XML_CONTENT); } protected void initCommonDescriptions(Dictionary descriptions) { // create descriptions for hilighting types descriptions.put(IStyleConstantsXML.COMMENT_BORDER, XMLUIMessages.Comment_Delimiters_UI_); // = // "Comment // Delimiters" descriptions.put(IStyleConstantsXML.COMMENT_TEXT, XMLUIMessages.Comment_Content_UI_); // = // "Comment // Content" descriptions.put(IStyleConstantsXML.TAG_BORDER, XMLUIMessages.Tag_Delimiters_UI_); // = // "Tag // Delimiters" descriptions.put(IStyleConstantsXML.TAG_NAME, XMLUIMessages.Tag_Names_UI_); // = // "Tag // Names" descriptions.put(IStyleConstantsXML.TAG_ATTRIBUTE_NAME, XMLUIMessages.Attribute_Names_UI_); // = // "Attribute // Names" descriptions.put(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE, XMLUIMessages.Attribute_Values_UI_); // = // "Attribute // Values" descriptions.put(IStyleConstantsXML.DECL_BORDER, XMLUIMessages.Declaration_Delimiters_UI_); // = // "Declaration // Delimiters" descriptions.put(IStyleConstantsXML.XML_CONTENT, XMLUIMessages.Content_UI_); // = // "Content" descriptions.put(IStyleConstantsXML.ENTITY_REFERENCE, XMLUIMessages.Entity_Reference_UI_); //$NON-NLS-1$ = "Entity References" } protected void initCommonStyleList(ArrayList list) { // list.add(IStyleConstantsXML.CDATA_BORDER); // list.add(IStyleConstantsXML.CDATA_TEXT); // list.add(IStyleConstantsXML.PI_BORDER); // list.add(IStyleConstantsXML.PI_CONTENT); list.add(IStyleConstantsXML.TAG_BORDER); list.add(IStyleConstantsXML.TAG_NAME); list.add(IStyleConstantsXML.TAG_ATTRIBUTE_NAME); list.add(IStyleConstantsXML.TAG_ATTRIBUTE_VALUE); list.add(IStyleConstantsXML.COMMENT_BORDER); list.add(IStyleConstantsXML.COMMENT_TEXT); list.add(IStyleConstantsXML.DECL_BORDER); list.add(IStyleConstantsXML.XML_CONTENT); list.add(IStyleConstantsXML.ENTITY_REFERENCE); } protected void initContextStyleMap(Dictionary contextStyleMap) { initCommonContextStyleMap(contextStyleMap); initDocTypeContextStyleMap(contextStyleMap); contextStyleMap.put(DOMRegionContext.XML_CDATA_OPEN, IStyleConstantsXML.CDATA_BORDER); contextStyleMap.put(DOMRegionContext.XML_CDATA_TEXT, IStyleConstantsXML.CDATA_TEXT); contextStyleMap.put(DOMRegionContext.XML_CDATA_CLOSE, IStyleConstantsXML.CDATA_BORDER); contextStyleMap.put(DOMRegionContext.XML_PI_OPEN, IStyleConstantsXML.PI_BORDER); contextStyleMap.put(DOMRegionContext.XML_PI_CONTENT, IStyleConstantsXML.PI_CONTENT); contextStyleMap.put(DOMRegionContext.XML_PI_CLOSE, IStyleConstantsXML.PI_BORDER); } protected void initDescriptions(Dictionary descriptions) { initCommonDescriptions(descriptions); initDocTypeDescriptions(descriptions); descriptions.put(IStyleConstantsXML.CDATA_BORDER, XMLUIMessages.CDATA_Delimiters_UI_); // = // "CDATA // Delimiters" descriptions.put(IStyleConstantsXML.CDATA_TEXT, XMLUIMessages.CDATA_Content_UI_); // = // "CDATA // Content" descriptions.put(IStyleConstantsXML.PI_BORDER, XMLUIMessages.Processing_Instruction_Del_UI_); // = // "Processing // Instruction // Delimiters" descriptions.put(IStyleConstantsXML.PI_CONTENT, XMLUIMessages.Processing_Instruction_Con_UI__UI_); // = // "Processing // Instruction // Content" } protected void initDocTypeContextStyleMap(Dictionary contextStyleMap) { contextStyleMap.put(DOMRegionContext.XML_ELEMENT_DECL_NAME, IStyleConstantsXML.DOCTYPE_NAME); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_DECLARATION, IStyleConstantsXML.TAG_NAME); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_DECLARATION_CLOSE, IStyleConstantsXML.DECL_BORDER); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_NAME, IStyleConstantsXML.DOCTYPE_NAME); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBLIC, IStyleConstantsXML.DOCTYPE_EXTERNAL_ID); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBREF, IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSTEM, IStyleConstantsXML.DOCTYPE_EXTERNAL_ID); contextStyleMap.put(DOMRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSREF, IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF); } protected void initDocTypeDescriptions(Dictionary descriptions) { // create descriptions for hilighting types for DOCTYPE related items descriptions.put(IStyleConstantsXML.DOCTYPE_NAME, XMLUIMessages.DOCTYPE_Name_UI_); // = // "DOCTYPE // Name" descriptions.put(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID, XMLUIMessages.DOCTYPE_SYSTEM_PUBLIC_Keyw_UI_); // = // "DOCTYPE // SYSTEM/PUBLIC // Keyword" descriptions.put(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF, XMLUIMessages.DOCTYPE_Public_Reference_UI_); // = // "DOCTYPE // Public // Reference" descriptions.put(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF, XMLUIMessages.DOCTYPE_System_Reference_UI_); // = // "DOCTYPE // System // Reference" } protected void initDocTypeStyleList(ArrayList list) { list.add(IStyleConstantsXML.DOCTYPE_NAME); list.add(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID); list.add(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_PUBREF); list.add(IStyleConstantsXML.DOCTYPE_EXTERNAL_ID_SYSREF); } protected void initStyleList(ArrayList list) { initCommonStyleList(list); initDocTypeStyleList(list); list.add(IStyleConstantsXML.CDATA_BORDER); list.add(IStyleConstantsXML.CDATA_TEXT); list.add(IStyleConstantsXML.PI_BORDER); list.add(IStyleConstantsXML.PI_CONTENT); } public boolean performOk() { // required since the superclass *removes* existing preferences before // saving its own super.performOk(); SSEUIPlugin.getDefault().savePluginPreferences(); return true; } protected void setupPicker(StyledTextColorPicker picker) { IModelManager mmanager = StructuredModelManager.getModelManager(); picker.setParser(mmanager.createStructuredDocumentFor(ContentTypeIdForXML.ContentTypeID_XML).getParser()); Dictionary descriptions = new Hashtable(); initDescriptions(descriptions); Dictionary contextStyleMap = new Hashtable(); initContextStyleMap(contextStyleMap); ArrayList styleList = new ArrayList(); initStyleList(styleList); picker.setContextStyleMap(contextStyleMap); picker.setDescriptions(descriptions); picker.setStyleList(styleList); } /* * (non-Javadoc) * * @see org.eclipse.wst.sse.ui.preferences.ui.AbstractColorPage#savePreferences() */ protected void savePreferences() { XMLUIPlugin.getDefault().savePluginPreferences(); } }