/*=============================================================================# # Copyright (c) 2005-2016 Stephan Wahlbrink (WalWare.de) 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: # Stephan Wahlbrink - initial API and implementation #=============================================================================*/ package de.walware.statet.r.internal.console.ui.page; import org.eclipse.core.commands.IHandler2; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.contexts.IContextService; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.services.IServiceLocator; import de.walware.ecommons.ltk.ui.LTKUI; import de.walware.ecommons.ltk.ui.sourceediting.SourceEditorViewerConfigurator; import de.walware.ecommons.ui.ISettingsChangedHandler; import de.walware.ecommons.ui.actions.HandlerCollection; import de.walware.statet.nico.core.runtime.IConsoleService; import de.walware.statet.nico.core.runtime.Prompt; import de.walware.statet.nico.ui.console.ConsolePageEditor; import de.walware.statet.r.console.core.ContinuePrompt; import de.walware.statet.r.console.core.IRBasicAdapter; import de.walware.statet.r.core.IRCoreAccess; import de.walware.statet.r.core.RCore; import de.walware.statet.r.core.model.IRSourceUnit; import de.walware.statet.r.ui.editors.IRSourceEditor; import de.walware.statet.r.ui.sourceediting.InsertAssignmentHandler; import de.walware.statet.r.ui.sourceediting.RSourceViewerConfigurator; /** * R Console input line */ public class RConsoleEditor extends ConsolePageEditor implements IRSourceEditor, ISettingsChangedHandler { private RSourceViewerConfigurator rConfig; public RConsoleEditor(final RConsolePage page) { super(page, RCore.R_CONTENT_TYPE); } @Override protected IRSourceUnit createSourceUnit() { return new RConsoleSourceUnit((RConsolePage) getConsolePage(), getDocument()); } @Override public IRCoreAccess getRCoreAccess() { return this.rConfig.getRCoreAccess(); } @Override public IRSourceUnit getSourceUnit() { return (IRSourceUnit) super.getSourceUnit(); } @Override protected void onPromptUpdate(final Prompt prompt) { if ((prompt.meta & IRBasicAdapter.META_PROMPT_INCOMPLETE_INPUT) != 0) { final ContinuePrompt p= (ContinuePrompt) prompt; setInputPrefix(p.getPreviousInput()); } else { setInputPrefix(""); //$NON-NLS-1$ } } @Override public Composite createControl(final Composite parent, final SourceEditorViewerConfigurator editorConfig) { this.rConfig= (RSourceViewerConfigurator) editorConfig; final Composite control= super.createControl(parent, editorConfig); return control; } @Override public void initActions(final IServiceLocator serviceLocator, final HandlerCollection handlers) { super.initActions(serviceLocator, handlers); ((IContextService) serviceLocator.getService(IContextService.class)) .activateContext("de.walware.statet.r.contexts.REditor"); //$NON-NLS-1$ final IHandlerService handlerService= (IHandlerService) serviceLocator.getService(IHandlerService.class); { final IHandler2 handler= new InsertAssignmentHandler(this); handlerService.activateHandler(LTKUI.INSERT_ASSIGNMENT_COMMAND_ID, handler); } } @Override public Object getAdapter(final Class required) { return super.getAdapter(required); } }