/******************************************************************************* * Copyright (c) 2014-2015 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.editor.codemirror.base.client; import java.util.Arrays; import java.util.List; import org.eclipse.che.api.promises.client.Promise; import org.eclipse.che.ide.editor.codemirror.resources.client.BasePathConstant; import org.eclipse.che.ide.editor.codemirrorjso.client.CodeMirrorOverlay; import org.eclipse.che.ide.jseditor.client.requirejs.RequireJsLoader; import com.google.inject.Inject; public class BaseCodemirrorInitializer extends AbstractCodemirrorInitializer { private final BaseCodemirrorPromise baseCodemirrorPromise; private final MinimalCodemirrorInitializer minimalCodemirrorInitializer; @Inject public BaseCodemirrorInitializer(final RequireJsLoader requireJsLoader, final BasePathConstant basePathConstant, final BaseCodemirrorPromise baseCodemirrorPromise, final MinimalCodemirrorInitializer minimalCodemirrorInitializer) { super(requireJsLoader, basePathConstant); this.baseCodemirrorPromise = baseCodemirrorPromise; this.minimalCodemirrorInitializer = minimalCodemirrorInitializer; } public Promise<CodeMirrorOverlay> init() { if (this.baseCodemirrorPromise.getPromise() == null) { this.minimalCodemirrorInitializer.init(); // can be done separately, if the scripts are already loading, requirejs will take that into account final Promise<CodeMirrorOverlay> result = initScripts(getScripts()); this.baseCodemirrorPromise.setPromise(result); } return this.baseCodemirrorPromise.getPromise(); } @Override protected List<String> getScripts() { return Arrays.asList(new String[]{ // /lib/codemirror added elsewhere // hints "addon/hint/show-hint", // pair matching "addon/edit/closebrackets", "addon/edit/closetag", "addon/edit/matchbrackets", "addon/edit/matchtags", "addon/selection/mark-selection", "addon/selection/active-line", // for search "addon/search/search", "addon/dialog/dialog", "addon/search/searchcursor", "addon/search/match-highlighter", // folding "addon/fold/foldcode", "addon/fold/foldgutter", "addon/scroll/simplescrollbars", "addon/scroll/annotatescrollbar", "addon/scroll/scrollpastend", "addon/search/matchesonscrollbar", }); } }