text editor with position done

This commit is contained in:
Ezequiel Bergamaschi 2014-05-21 23:51:51 -03:00
parent 001f62b539
commit f817167a7b
4 changed files with 26 additions and 22 deletions

View File

@ -182,30 +182,27 @@ mindplot.MultilineTextEditor = new Class({
font.size = nodeText.getHtmlFontSize();
font.color = nodeText.getColor();
this._setStyle(font);
var me = this;
// Set editor's initial size
var displayFunc = function () {
// Position the editor and set the size...
var textShape = topic.getTextShape();
$('#textContainer').position({
my: "left top",
at: "left bottom",
of: $(textShape)[0]
// collision: "fit"
});
me._containerElem.css('display', 'block');
this._containerElem.css('display', 'block');
//FIXME: Im not sure if this is best way...
var shapePosition = textShape.getNativePosition();
me._containerElem.offset(shapePosition);
// Set editor's initial text ...
var text = $defined(defaultText) ? defaultText : topic.getText();
this._setText(text);
me._setText(text);
// Set the element focus and select the current text ...
var inputElem = this._getTextareaElem();
this._positionCursor(inputElem, !$defined(defaultText));
var inputElem = me._getTextareaElem();
me._positionCursor(inputElem, !$defined(defaultText));
}.bind(this);
};
this._timeoutId = displayFunc.delay(10);
},

View File

@ -147,25 +147,24 @@ mindplot.TextEditor = new Class({
var text = $defined(defaultText) ? defaultText : topic.getText();
this._setText(text);
var me = this;
// Set editor's initial size
var displayFunc = function() {
// Position the editor and set the size...
var textShape = this._topic.getTextShape();
textShape.positionRelativeTo(this._containerElem, {
position: {x: 'left',y:'top'},
edge: {x: 'left', y: 'top'}
});
this._containerElem.setStyle('display', 'block');
var textShape = me._topic.getTextShape();
me._containerElem.css('display', 'block');
me._containerElem.offset(textShape.getNativePosition());
// Set size ...
var elemSize = topic.getSize();
this._setEditorSize(elemSize.width, elemSize.height);
me._setEditorSize(elemSize.width, elemSize.height);
var textareaElem = this._getTextareaElem();
var textareaElem = me._getTextareaElem();
textareaElem.focus();
this._positionCursor(textareaElem, !$defined(defaultText));
me._positionCursor(textareaElem, !$defined(defaultText));
}.bind(this);
};
displayFunc.delay(10);
},

View File

@ -137,6 +137,10 @@ web2d.Element = new Class({
return this._peer.getPosition();
},
getNativePosition: function() {
return this._peer.getNativePosition();
},
/*
* Defines the element stroke properties.
* width: stroke width

View File

@ -76,6 +76,10 @@ web2d.peer.svg.TextPeer = new Class({
return this._position;
},
getNativePosition: function() {
return $(this._native).position();
},
setFont: function (font, size, style, weight) {
if ($defined(font)) {
this._font = new web2d.Font(font, this);