JavaScriptでウインドウリサイズその2

昨日に引き続き、ウインドウ(つーか、DOM Element)のリサイズを色々とやってみていた。
で、どうやらリサイズできるようになったっぽい。
JSのソース(あまりエレガントじゃない)サンプル
Firefox1.07とIE6.0(両方ともWind)で確認してみたら動いた。Operaとかはちょっと不明。(というか、ブラウザないし)

クラスSd.Resizable の使い方はこんな感じ↓

new Sd.Resizable( 'Elementのid', { minW:40, minH:40, bounds:this.setBounds.bind(this) });

minW、minHはElmentの最小幅、最小高さというのは、まぁよしとして、「bounds:this.setBounds.bind(this)」の部分ではサイズ変更時のコールバック関数を指定する。
例えば、こういう風に使われる。

HogeWindow.prototype = {
    craete:funciton(){
        this.window=document.createElement('div');
        this.window.id='hogehoge';
        document.body.appencChild(this.window);
        new Sd.Resizable( this.window.id, { minW:40, minH:40, bounds:this.setBounds.bind(this) });
    },
    setBounds:funciton(l,t,w,h){
        this.window.style.left = l + 'px';
        this.window.style.top = t + 'px';
        this.window.style.width = w + 'px';
        this.window.style.height = h + 'px';
    }
};

(bindって便利!)
リサイズするので、java.awt.Window#pack的なメソッドを呼び出せなくてはまずいだろーって思ったので。

ちなみにページスクロール補正を気にしてないのは相変わらず。
自分で使う分にはまぁいいかと思うので、気が向いたら修正なのかな。
あと気付いたのだけども、上辺、左辺をドラッグしてウインドウをリサイズした場合、dragdrop.js のクラスDraggableの挙動がちょっとおかしくなる。
Draggableはインスタンス生成時にElementの座標(left、top)を保持しており、再ドラッグ開始時にその値を更新しない為、変な動作をしてしまうような気がする。
この部分は独自組み込みにしてしまうかもしれない。

ところでここにはクラスSd.Lineっていうのがあるけれど、線(どちらかといえばElement同士を結ぶコネクタ)を引くライブラリが欲しいなぁ、と思ってちょっと考え中だったもの。
っていうか、DrawingCanvas使った方がいいのかな。