/** * Copyright 2015 National Aeronautics and Space Administration. * @generated NOT */ package net.certware.argument.language.ui.outline; import net.certware.argument.language.l.AndSentence; import net.certware.argument.language.l.BasicTerm; import net.certware.argument.language.l.CardinalityConstraint; import net.certware.argument.language.l.ConstantDeclaration; import net.certware.argument.language.l.FunctionalTerm; import net.certware.argument.language.l.GroundTerm; import net.certware.argument.language.l.MaybeLiteral; import net.certware.argument.language.l.OrSentence; import net.certware.argument.language.l.Program; import net.certware.argument.language.l.Rule; import net.certware.argument.language.l.Set; import net.certware.argument.language.l.SetExpression; import net.certware.argument.language.l.Statement; import net.certware.argument.language.l.Terms; import net.certware.argument.language.l.TypeDeclaration; import net.certware.argument.language.ui.internal.LActivator; import net.certware.argument.language.ui.preferences.PreferenceConstants; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import org.eclipse.xtend.typesystem.Feature; import org.eclipse.xtext.ui.editor.outline.IOutlineNode; import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider; import org.eclipse.xtext.ui.editor.utils.TextStyle; import org.eclipse.xtext.ui.label.StylerFactory; import com.google.inject.Inject; /** * Customization of the default outline structure. * see http://www.eclipse.org/Xtext/documentation.html#outline */ public class LOutlineTreeProvider extends DefaultOutlineTreeProvider { @Inject private StylerFactory stylerFactory; // outline text styler factory private IPropertyChangeListener propertyChangeListener = null; /** * Constructor creates listener for preference changes */ LOutlineTreeProvider() { super(); /** * Create listener for preference changes to outline view. */ propertyChangeListener = new IPropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { /** * Refresh outline view if an outline preference was updated. */ if ( event.getProperty().startsWith("outline")) { //$NON-NLS-1$ IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); IContentOutlinePage outline = (IContentOutlinePage) editor.getAdapter(IContentOutlinePage.class); if (outline instanceof LOutlinePage ) { ((LOutlinePage)outline).scheduleRefresh(); } } } }; // add listener to the preference store // remove in finalize method LActivator.getInstance().getPreferenceStore().addPropertyChangeListener(propertyChangeListener); } // constructor /** * Add property change listener removal to finalize for cleanup. */ public void finalize() throws Throwable { LActivator.getInstance().getPreferenceStore().removePropertyChangeListener(propertyChangeListener); super.finalize(); } /* feature nodes are leafs and not expandable */ protected boolean _isLeaf(Feature feature) { return true; } /* * Outline children for Set nodes. * Just show ground terms without delimiters. * Ground terms are either arithmetic or functional terms. */ protected void _createChildren(IOutlineNode parentNode,Set mySet) { for ( GroundTerm groundTerm : mySet.getTerms().getCdr() ) { // createNode(parentNode,groundTerm); // skipped for ( EObject item : groundTerm.eContents() ) { createNode(parentNode,item); } } } /* * Set expression text, outline only */ public Object _text(SetExpression setExpression) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_0); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getSetExpressionTextStyle())); return style; } /* * Set expression text styler */ protected TextStyle getSetExpressionTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_SET_EXPRESSION_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_SET_EXPRESSION_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Type declaration text, outline only */ public Object _text(TypeDeclaration typeDeclaration) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_1); sb.append(' '); sb.append(typeDeclaration.getName().getName()); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getTypeDeclarationTextStyle())); return style; } /* * Type declaration text styler */ protected TextStyle getTypeDeclarationTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_TYPE_DECLARATION_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_TYPE_DECLARATION_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Cardinality constraint text, outline only */ public Object _text(CardinalityConstraint constraint) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_11); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getConstraintTextStyle())); return style; } /* * Constant declaration text, outline only */ public Object _text(ConstantDeclaration constantDeclaration) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_2); sb.append(' '); sb.append(constantDeclaration.getName()); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getConstantDeclarationTextStyle())); return style; } /* * Constant declaration styler */ protected TextStyle getConstantDeclarationTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_CONSTANT_DECLARATION_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_CONSTANT_DECLARATION_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Maybe literal text styler */ protected TextStyle getMaybeTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_MAYBE_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_MAYBE_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Rule text styler * Reused for several elements currently */ protected TextStyle getRuleTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_RULE_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_RULE_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * And sentence text */ protected Object _text(AndSentence and) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_3); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getConditionalTextStyle())); return style; } /* * Or sentence text */ protected Object _text(OrSentence or) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_4); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getConditionalTextStyle())); return style; } /* * Conditional text styler */ protected TextStyle getConditionalTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_CONDITIONAL_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_CONDITIONAL_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Constraint text styler */ protected TextStyle getConstraintTextStyle() { IPreferenceStore ps = LActivator.getInstance().getPreferenceStore(); RGB color = PreferenceConverter.getColor(ps,PreferenceConstants.P_CONSTRAINT_TEXT_COLOR); FontData fd = PreferenceConverter.getFontData(ps, PreferenceConstants.P_CONSTRAINT_TEXT_FONT); TextStyle textStyle = new TextStyle(); textStyle.setColor(color); textStyle.setFontData(fd); return textStyle; } /* * Terms text */ protected Object _text(Terms terms) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_5); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } /* * Basic term text */ protected Object _text(BasicTerm term) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_6); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } /* * Functional term text */ protected Object _text(FunctionalTerm term) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_7); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } /* * Maybe literal text */ protected Object _text(MaybeLiteral m) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_12); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getMaybeTextStyle())); return style; } /* * Program text */ protected Object _text(Program p) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_8); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } /** * Rule text */ protected Object _text(Rule r) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_10); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } /* * Statement text */ protected Object _text(Statement s) { StringBuffer sb = new StringBuffer(Messages.LOutlineTreeProvider_9); StyledString style = new StyledString(sb.toString(), stylerFactory. createXtextStyleAdapterStyler(getRuleTextStyle())); return style; } }