[SML 7745] Re: 第15回Smalltalk勉強会@京都
AOKI Atsushi
atsushi @ cc.kyoto-su.ac.jp
2010年 1月 11日 (月) 18:38:51 JST
(10/01/11 17:01), 濱崎治さん wrote:
> 次回はユーザーインターフェース周りを重点的に取り組むということで、
> UMLによるモデルと、Controllerに書くことになるであろう、マウスの
> クリックとドラッグに関わるプログラムの断片を書きました。
ありがとうございます。
> UMLのモデルはastah* community版を使用して書きました。
> 以下のところから入手することが可能です。
> http://astah.change-vision.com/ja/product/astah-community.html
昨年の11月ぐらいに名称がJUDEから変更になったのですよね。
> 如何なものでしょう?
> ご意見を頂ければありがたいです。
拝見します。
参考のため、マウスの青・黄・赤ボタンの押下を検出して、クリッ
ク動作をするか、ドラック動作をするか、いずれかを決めるコード
を末尾に添えます。mouseButtonChecking がキーメソッドです。
------------------------------------------------------------
AOKI Atsushi http://www.cc.kyoto-su.ac.jp/~atsushi/
ProjectM.Controller
Smalltalk Studies in Kyoto on 2009/12/27 at 23:30 by AOKI Atsushi
category:
Forest-ProjectZ
inheritance:
Core.Object
UI.Controller
ProjectM.Controller
instance variables:
class instance variables:
shared variables:
instance methods:
blueButtonPressedEvent: event [events]
self mouseButtonActivity.
^nil
redButtonPressedEvent: event [events]
self mouseButtonActivity.
^nil
yellowButtonPressedEvent: event [events]
self mouseButtonActivity.
^nil
mouseButtonActivity [activities]
Cursor crossHair
showWhile:
[| symbol |
symbol := self mouseButtonChecking.
symbol = #click ifTrue: [self clickActivity].
symbol = #grab ifTrue: [self grabActivity]].
self sensor waitNoButton
mouseButtonChecking [activities]
| mouse limit |
mouse := self sensor.
limit := Time millisecondClockValue + 333.
[Time millisecondClockValue < limit]
whileTrue:
[mouse anyButtonPressed ifFalse: [^#click].
Processor yield].
^#grab
clickActivity [activities]
(view whichOfNodes: self sensor cursorPoint)
ifNotNil:
[:aNode |
Transcript
cr;
show: aNode getName]
grabActivity [activities]
| mouse previous current |
mouse := self sensor.
previous := current := mouse cursorPoint.
[mouse anyButtonPressed]
whileTrue:
[current := mouse cursorPoint.
previous = current
ifFalse:
[(self view)
scrollBy: current - previous;
displayOn: view graphicsContext.
previous := current]]
class methods:
SML メーリングリストの案内