/******************************************************************************* * Copyright (c) 2007 IBM Corporation. * 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: * Robert Fuhrer (rfuhrer@watson.ibm.com) - initial API and implementation *******************************************************************************/ package org.eclipse.imp.language; import java.util.Set; import org.eclipse.imp.editor.OutlineContentProviderBase; import org.eclipse.imp.editor.OutlineLabelProvider.IElementImageProvider; import org.eclipse.imp.indexing.IndexContributorBase; import org.eclipse.imp.parser.IModelListener; import org.eclipse.imp.parser.IParseController; import org.eclipse.imp.services.IASTAdapter; import org.eclipse.imp.services.IAnnotationHover; import org.eclipse.imp.services.IAutoEditStrategy; import org.eclipse.imp.services.IContentProposer; import org.eclipse.imp.services.IDocumentationProvider; import org.eclipse.imp.services.IEntityNameLocator; import org.eclipse.imp.services.IFoldingUpdater; import org.eclipse.imp.services.IHoverHelper; import org.eclipse.imp.services.ILabelProvider; import org.eclipse.imp.services.ILanguageActionsContributor; import org.eclipse.imp.services.ILanguageSyntaxProperties; import org.eclipse.imp.services.IOccurrenceMarker; import org.eclipse.imp.services.IOutliner; import org.eclipse.imp.services.IRefactoringContributor; import org.eclipse.imp.services.IReferenceResolver; import org.eclipse.imp.services.ISourceFormatter; import org.eclipse.imp.services.ISourceHyperlinkDetector; import org.eclipse.imp.services.ITokenColorer; import org.eclipse.imp.services.base.TreeModelBuilderBase; public class CachingServiceFactory extends ServiceFactory { private IContentProposer contentProposer; private IOutliner outliner; private IElementImageProvider elementImageProvider; private ILanguageSyntaxProperties syntaxProperties; private IOccurrenceMarker occurrenceMarker; private IDocumentationProvider documentationProvider; private Set<ILanguageActionsContributor> languageActionsContributors; private IReferenceResolver referenceResolver; private Set<IRefactoringContributor> refactoringContributors; private OutlineContentProviderBase outlineContentProvider; private ILabelProvider labelProvider; private ISourceHyperlinkDetector sourceHyperlinkDetector; private ISourceFormatter sourceFormatter; private IAnnotationHover annotationHover; private IFoldingUpdater foldingUpdater; private Set<IAutoEditStrategy> autoEditStrategies; private IModelListener modelListener; private TreeModelBuilderBase treeModelBuilder; private IParseController parseController; private IndexContributorBase indexContributor; private ITokenColorer tokenColorer; private IHoverHelper hoverHelper; private IASTAdapter astAdapter; private IEntityNameLocator entityNameLocator; public CachingServiceFactory() { } @Override public IContentProposer getContentProposer(Language lang) { if (contentProposer == null) { contentProposer = super.getContentProposer(lang); } return contentProposer; } @Override public IHoverHelper getHoverHelper(Language lang) { if (hoverHelper == null) { hoverHelper = super.getHoverHelper(lang); } return hoverHelper; } @Override public ITokenColorer getTokenColorer(Language lang) { if (tokenColorer == null) { tokenColorer = super.getTokenColorer(lang); } return tokenColorer; } @Override public IndexContributorBase getIndexContributor(Language lang) { if (indexContributor == null) { indexContributor = super.getIndexContributor(lang); } return indexContributor; } @Override public IParseController getParseController(Language lang) { if (parseController == null) { parseController = super.getParseController(lang); } return parseController; } @Override public TreeModelBuilderBase getTreeModelBuilder(Language lang) { if (treeModelBuilder == null) { treeModelBuilder = super.getTreeModelBuilder(lang); } return treeModelBuilder; } @Override public IModelListener getModelListener(Language lang) { if (modelListener == null) { modelListener = super.getModelListener(lang); } return modelListener; } @Override public Set<IAutoEditStrategy> getAutoEditStrategies(Language lang) { if (autoEditStrategies == null) { autoEditStrategies = super.getAutoEditStrategies(lang); } return autoEditStrategies; } @Override public IFoldingUpdater getFoldingUpdater(Language lang) { if (foldingUpdater == null) { foldingUpdater = super.getFoldingUpdater(lang); } return foldingUpdater; } @Override public IAnnotationHover getAnnotationHover(Language lang) { if (annotationHover == null) { annotationHover = super.getAnnotationHover(lang); } return annotationHover; } @Override public ISourceFormatter getSourceFormatter(Language lang) { if (sourceFormatter == null) { sourceFormatter = super.getSourceFormatter(lang); } return sourceFormatter; } @Override public ISourceHyperlinkDetector getSourceHyperlinkDetector(Language lang) { if (sourceHyperlinkDetector == null) { sourceHyperlinkDetector = super.getSourceHyperlinkDetector(lang); } return sourceHyperlinkDetector; } @Override public ILabelProvider getLabelProvider(Language lang) { if (labelProvider == null) { labelProvider = super.getLabelProvider(lang); } return labelProvider; } @Override public OutlineContentProviderBase getOutlineContentProvider(Language lang) { if (outlineContentProvider == null) { outlineContentProvider = super.getOutlineContentProvider(lang); } return outlineContentProvider; } @Override public Set<IRefactoringContributor> getRefactoringContributors(Language lang) { if (refactoringContributors == null) { refactoringContributors = super.getRefactoringContributors(lang); } return refactoringContributors; } @Override public IReferenceResolver getReferenceResolver(Language lang) { if (referenceResolver == null) { referenceResolver = super.getReferenceResolver(lang); } return referenceResolver; } @Override @SuppressWarnings("unchecked") public Set<ILanguageActionsContributor> getLanguageActionsContributors(Language lang) { if (languageActionsContributors == null) { languageActionsContributors = super .getLanguageActionsContributors(lang); } return languageActionsContributors; } @Override public IDocumentationProvider getDocumentationProvider(Language lang) { if (documentationProvider == null) { documentationProvider = super.getDocumentationProvider(lang); } return documentationProvider; } @Override public IOccurrenceMarker getOccurrenceMarker(Language lang) { if (occurrenceMarker == null) { occurrenceMarker = super.getOccurrenceMarker(lang); } return occurrenceMarker; } @Override public ILanguageSyntaxProperties getSyntaxProperties(Language lang) { if (syntaxProperties == null) { syntaxProperties = super.getSyntaxProperties(lang); } return syntaxProperties; } @Override public IElementImageProvider getElementImageProvider(Language lang) { if (elementImageProvider == null) { elementImageProvider = super.getElementImageProvider(lang); } return elementImageProvider; } @Override public IOutliner getOutliner(Language lang) { if (outliner == null) { outliner = super.getOutliner(lang); } return outliner; } @Override public IASTAdapter getASTAdapter(Language lang) { if (astAdapter == null) { astAdapter = super.getASTAdapter(lang); } return astAdapter; } @Override public IEntityNameLocator getEntityNameLocator(Language lang) { if (entityNameLocator == null) { entityNameLocator = super.getEntityNameLocator(lang); } return entityNameLocator; } }