| /******************************************************************************* |
| * Copyright (c) 2001, 2004 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 |
| * |
| *******************************************************************************/ |
| package org.eclipse.wst.dtd.ui.internal.style; |
| |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.jface.text.TextAttribute; |
| import org.eclipse.jface.util.PropertyChangeEvent; |
| import org.eclipse.wst.dtd.core.internal.parser.DTDRegionTypes; |
| import org.eclipse.wst.dtd.ui.internal.DTDUIPlugin; |
| import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; |
| import org.eclipse.wst.sse.ui.internal.provisional.style.AbstractLineStyleProvider; |
| import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider; |
| |
| public class LineStyleProviderForDTD extends AbstractLineStyleProvider implements LineStyleProvider { |
| public LineStyleProviderForDTD() { |
| super(); |
| } |
| |
| protected TextAttribute getAttributeFor(ITextRegion region) { |
| /** |
| * a method to centralize all the "format rules" for regions |
| * specifically associated for how to "open" the region. |
| */ |
| // not sure why this is coming through null, but just to catch it |
| if (region == null) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_DEFAULT); |
| } |
| String type = region.getType(); |
| if (type == DTDRegionTypes.CONTENT_EMPTY || type == DTDRegionTypes.CONTENT_ANY || type == DTDRegionTypes.CONTENT_PCDATA) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_DATA); |
| } |
| else if (type == DTDRegionTypes.ELEMENT_TAG || type == DTDRegionTypes.ENTITY_TAG || type == DTDRegionTypes.ATTLIST_TAG || type == DTDRegionTypes.NOTATION_TAG) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_TAGNAME); |
| } |
| else if (type == DTDRegionTypes.CONNECTOR || type == DTDRegionTypes.OCCUR_TYPE) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_SYMBOL); |
| } |
| else if (type == DTDRegionTypes.NDATA_VALUE) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_DATA); |
| } |
| else if (type == DTDRegionTypes.START_TAG || type == DTDRegionTypes.END_TAG || type == DTDRegionTypes.EXCLAMATION) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_TAG); |
| } |
| else if (type == DTDRegionTypes.COMMENT_START || type == DTDRegionTypes.COMMENT_CONTENT || type == DTDRegionTypes.COMMENT_END) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_COMMENT); |
| } |
| else if (type == DTDRegionTypes.SINGLEQUOTED_LITERAL || type == DTDRegionTypes.DOUBLEQUOTED_LITERAL) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_STRING); |
| } |
| else if (type == DTDRegionTypes.SYSTEM_KEYWORD || type == DTDRegionTypes.PUBLIC_KEYWORD || type == DTDRegionTypes.NDATA_KEYWORD || type == DTDRegionTypes.CDATA_KEYWORD || type == DTDRegionTypes.ID_KEYWORD || type == DTDRegionTypes.IDREF_KEYWORD || type == DTDRegionTypes.IDREFS_KEYWORD || type == DTDRegionTypes.ENTITY_KEYWORD || type == DTDRegionTypes.ENTITIES_KEYWORD || type == DTDRegionTypes.NMTOKEN_KEYWORD || type == DTDRegionTypes.NMTOKENS_KEYWORD || type == DTDRegionTypes.NOTATION_KEYWORD || type == DTDRegionTypes.REQUIRED_KEYWORD || type == DTDRegionTypes.IMPLIED_KEYWORD || type == DTDRegionTypes.FIXED_KEYWORD) { |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_KEYWORD); |
| } |
| else if (type == DTDRegionTypes.NAME || type == DTDRegionTypes.ENTITY_PARM) { |
| // if (region instanceof DTDRegion) { |
| // DTDRegion dtdRegion = (DTDRegion) region; |
| // IStructuredDocumentRegion flatNode = dtdRegion.getParent(); |
| // String regionText = flatNode.getText(dtdRegion); |
| // if (regionText.equals("ANY") || regionText.equals("EMPTY")) { |
| // return new TextAttribute(DTDColors.DTD_KEYWORD); |
| // } |
| // } |
| return (TextAttribute) getTextAttributes().get(IStyleConstantsDTD.DTD_DATA); |
| } |
| |
| // default, return null to signal "not handled" |
| // in which case, other factories should be tried |
| return null; |
| } |
| |
| protected IPreferenceStore getColorPreferences() { |
| return DTDUIPlugin.getDefault().getPreferenceStore(); |
| } |
| |
| protected void handlePropertyChange(PropertyChangeEvent event) { |
| String styleKey = null; |
| |
| if (event != null) { |
| String prefKey = event.getProperty(); |
| // check if preference changed is a style preference |
| if (IStyleConstantsDTD.DTD_DEFAULT.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_DEFAULT; |
| } |
| else if (IStyleConstantsDTD.DTD_TAG.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_TAG; |
| } |
| else if (IStyleConstantsDTD.DTD_TAGNAME.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_TAGNAME; |
| } |
| else if (IStyleConstantsDTD.DTD_COMMENT.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_COMMENT; |
| } |
| else if (IStyleConstantsDTD.DTD_KEYWORD.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_KEYWORD; |
| } |
| else if (IStyleConstantsDTD.DTD_STRING.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_STRING; |
| } |
| else if (IStyleConstantsDTD.DTD_DATA.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_DATA; |
| } |
| else if (IStyleConstantsDTD.DTD_SYMBOL.equals(prefKey)) { |
| styleKey = IStyleConstantsDTD.DTD_SYMBOL; |
| } |
| } |
| |
| if (styleKey != null) { |
| // overwrite style preference with new value |
| addTextAttribute(styleKey); |
| super.handlePropertyChange(event); |
| } |
| } |
| |
| protected void loadColors() { |
| addTextAttribute(IStyleConstantsDTD.DTD_DEFAULT); |
| addTextAttribute(IStyleConstantsDTD.DTD_TAG); |
| addTextAttribute(IStyleConstantsDTD.DTD_TAGNAME); |
| addTextAttribute(IStyleConstantsDTD.DTD_COMMENT); |
| addTextAttribute(IStyleConstantsDTD.DTD_KEYWORD); |
| addTextAttribute(IStyleConstantsDTD.DTD_STRING); |
| addTextAttribute(IStyleConstantsDTD.DTD_DATA); |
| addTextAttribute(IStyleConstantsDTD.DTD_SYMBOL); |
| } |
| } |