/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.ext.java.client.editor; import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; import com.google.inject.assistedinject.AssistedInject; import org.eclipse.che.ide.api.editor.annotation.AnnotationModel; import org.eclipse.che.ide.api.editor.changeintercept.ChangeInterceptorProvider; import org.eclipse.che.ide.api.editor.codeassist.CodeAssistProcessor; import org.eclipse.che.ide.api.editor.editorconfig.DefaultTextEditorConfiguration; import org.eclipse.che.ide.api.editor.formatter.ContentFormatter; import org.eclipse.che.ide.api.editor.partition.DocumentPartitioner; import org.eclipse.che.ide.api.editor.partition.DocumentPositionMap; import org.eclipse.che.ide.api.editor.quickfix.QuickAssistProcessor; import org.eclipse.che.ide.api.editor.reconciler.Reconciler; import org.eclipse.che.ide.api.editor.reconciler.ReconcilerFactory; import org.eclipse.che.ide.api.editor.texteditor.TextEditor; import java.util.HashMap; import java.util.Map; import static org.eclipse.che.ide.api.editor.partition.DefaultPartitioner.DEFAULT_PARTITIONING; import static org.eclipse.che.ide.api.editor.partition.DocumentPartitioner.DEFAULT_CONTENT_TYPE; /** * Text editor configuration for java files. */ public class JsJavaEditorConfiguration extends DefaultTextEditorConfiguration { private final Map<String, CodeAssistProcessor> codeAssistProcessors; private final Reconciler reconciler; private final DocumentPartitioner partitioner; private final DocumentPositionMap documentPositionMap; private final AnnotationModel annotationModel; private final QuickAssistProcessor quickAssistProcessors; private final ChangeInterceptorProvider changeInterceptors; private final ContentFormatter contentFormatter; @AssistedInject public JsJavaEditorConfiguration(@Assisted final TextEditor editor, final JavaCodeAssistProcessorFactory codeAssistProcessorFactory, final JavaQuickAssistProcessorFactory quickAssistProcessorFactory, final ReconcilerFactory reconcilerFactory, final JavaPartitionerFactory partitionerFactory, final JavaReconcilerStrategyFactory strategyFactory, final Provider<DocumentPositionMap> docPositionMapProvider, final JavaAnnotationModelFactory javaAnnotationModelFactory, final ContentFormatter contentFormatter) { this.contentFormatter = contentFormatter; final JavaCodeAssistProcessor codeAssistProcessor = codeAssistProcessorFactory.create(editor); this.codeAssistProcessors = new HashMap<>(); this.codeAssistProcessors.put(DEFAULT_CONTENT_TYPE, codeAssistProcessor); this.quickAssistProcessors = quickAssistProcessorFactory.create(editor); this.documentPositionMap = docPositionMapProvider.get(); this.annotationModel = javaAnnotationModelFactory.create(this.documentPositionMap); final JavaReconcilerStrategy javaReconcilerStrategy = strategyFactory.create(editor, codeAssistProcessor, this.annotationModel); this.partitioner = partitionerFactory.create(this.documentPositionMap); this.reconciler = initReconciler(reconcilerFactory, javaReconcilerStrategy); this.changeInterceptors = new JavaChangeInterceptorProvider(); } @Override public Map<String, CodeAssistProcessor> getContentAssistantProcessors() { return this.codeAssistProcessors; } @Override public QuickAssistProcessor getQuickAssistProcessor() { return this.quickAssistProcessors; } @Override public Reconciler getReconciler() { return this.reconciler; } @Override public DocumentPositionMap getDocumentPositionMap() { return this.documentPositionMap; } @Override public AnnotationModel getAnnotationModel() { return this.annotationModel; } @Override public ContentFormatter getContentFormatter() { return contentFormatter; } @Override public ChangeInterceptorProvider getChangeInterceptorProvider() { return this.changeInterceptors; } private Reconciler initReconciler(final ReconcilerFactory reconcilerFactory, final JavaReconcilerStrategy javaReconcilerStrategy) { final Reconciler reconciler = reconcilerFactory.create(DEFAULT_PARTITIONING, getPartitioner()); reconciler.addReconcilingStrategy(DEFAULT_CONTENT_TYPE, javaReconcilerStrategy); return reconciler; } }