/******************************************************************************* | |
* Copyright (c) 2010 Tom Seidel, Remus Software | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Tom Seidel - initial API and implementation | |
*******************************************************************************/ | |
function EclipseIntegration() { | |
this.eclipseRunning = false; | |
this.pollingInterval = 250; | |
this.format = new EclipseStyles(); | |
this.pendingCommandIdentifier = ""; | |
} | |
EclipseIntegration.prototype.init = function(editor) { | |
this.editor = editor; | |
this.data = editor.getData(); | |
this.format.init(editor); | |
var thisInstance = this; | |
try { | |
this.executeCommand("maximize"); | |
} catch (err) { | |
// do nothing | |
} | |
editor.on('selectionChange', function(ev) {thisInstance.selectionChanged(ev)}); | |
editor.on('focus', function(ev) {thisInstance.focusGained(ev)}); | |
editor.on('blur', function(ev) {thisInstance.focusLost(ev)}); | |
this.timerModifications(); | |
if (this.eclipseRunning) { | |
_delegate_init(); | |
} | |
} | |
EclipseIntegration.prototype.checkModifications = function() { | |
if (this.data != this.editor.getData()) { | |
if (this.eclipseRunning) { | |
_delegate_modified(this.pendingCommandIdentifier); | |
} | |
this.data = this.editor.getData(); | |
} | |
} | |
EclipseIntegration.prototype.timerModifications = function() { | |
var thisInstance = this; | |
this.checkModifications(); | |
window.setTimeout(function() {thisInstance.timerModifications();},this.pollingInterval); | |
} | |
EclipseIntegration.prototype.modified = function(event) { | |
this.currentModifiedEvent = event; | |
if (this.eclipseRunning) { | |
_delegate_modified(this.pendingCommandIdentifier); | |
} | |
} | |
EclipseIntegration.prototype.focusGained = function(event) { | |
this.currentFocusEvent = event; | |
editor.focus(); | |
editor.getSelection().selectElement( this.currentSelection); | |
// editor.getSelection.unlock(true); | |
if (this.eclipseRunning) { | |
_delegate_focus(); | |
} | |
this.checkModifications(); | |
} | |
EclipseIntegration.prototype.focusLost = function(event) { | |
//editor.getSelection.lock(); | |
this.currentSelection = this.editor.getSelection().getStartElement(); | |
} | |
EclipseIntegration.prototype.selectionChanged = function(event) { | |
this.currentSelectionEvent = event; | |
if (this.eclipseRunning) { | |
_delegate_selectionChanged(); | |
} | |
this.checkModifications(); | |
} | |
EclipseIntegration.prototype.executeCommand = function(commandName) { | |
if (editor.mode == 'wysiwyg') { | |
editor.execCommand(commandName); | |
} | |
else { | |
alert( 'You must be on WYSIWYG mode!' ); | |
} | |
} | |
EclipseIntegration.prototype.insertHtml = function(html) { | |
if (editor.mode == 'wysiwyg' ) { | |
editor.insertHtml( value ); | |
} | |
else { | |
alert( 'You must be on WYSIWYG mode!' ); | |
} | |
} | |