blob: 08b781aebe28eb72e7e08b16471f71cc6ee3a3f5 [file] [log] [blame]
/*******************************************************************************
* 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!' );
}
}