|
5th
|
2004-04-27 18:36:34, Á¶È¸ : 2,701, Ãßõ : 280 |
- Download #1 : tree_2.zip (9.8 KB), Download : 94

[Æ®¸®±¸Á¶ ¸¸µé±â#2]
À̹ø °Á¿¡¼´Â,
1. °¢ Ŭ·¡½ºµéÀ» ÆÄÀÏ·Î ºÐ¸®.
– ÀÌÀü °Á ÆÄÀÏÀÇ ¼¼ ºÎºÐÀ» ±×´ë·Î ÆÄÀÏ Çϳª¾¿ ºÐ¸®ÇÏ¿´½À´Ï´Ù.
- (1) TTreeNode class --> TTreeNode.scurl
- (2) TTreeCotrol class --> TTreeControl.scurl
- (3) value --> start.curl
2. TTreeNode °´Ã¼ »ý¼º½Ã, ÁßøµÈ TTreeNode¸¦ »ç¿ë.
3. ¡°+ / -¡° ±âÈ£ ´ë½Å ±×¸²À» »ðÀÔ.
µîÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù.
------------------------------------------------------------------------
<°á°ú>

========================================================================
¼Ò½º #1 – start.curl
------------------------------------------------------------------------
{curl 3.0 applet}
{curl-file-attributes character-encoding = "euc-kr"}
{applet manifest = "manifest.mcurl"}
{document-style PlainDocument}
{include "TTreeNode.scurl"}
{include "TTreeControl.scurl"}
{value
let tn : TTreeNode =
{TTreeNode "root",
{TTreeNode "AAA",
{TTreeNode "aaa"},
{TTreeNode "bbb"}
},
{TTreeNode "BBB"},
{TTreeNode "CCC",
{TTreeNode "111"},
{TTreeNode "222"},
{TTreeNode "333"}
}
}
{VBox
{Fill height=3px},
{TTreeControl tn=tn,
width={make-elastic}, height={make-elastic}
}
}
}
------------------------------------------------------------------------
{document-style PlainDocument} :
VBox¿¡¼ make-elasticÀ» »ç¿ëÇÒ °æ¿ì, make-elasticÀº ÀüÃ¼È¸é ¸ðµÎ ±× ¿µ¿ªÀ» Â÷ÁöÇÏ·Á°í Çϴµ¥,
VBox Ư¼º»ó Àüüȸé Å©±â¸¦ ¾Ë¼ö ¾ø¾î ¹«ÇÑ´ë¿¡ ºüÁ®¹ö¸³´Ï´Ù.
°á±¹, ȸ鿡 ¾Æ¹«°Íµµ ³ªÅ¸³ªÁö ¾Ê±â ¶§¹®¿¡ ÇöÀç ȸ鸸À» Àüü Å©±â·Î Àâ´Â´Ù´Â ¼³Á¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
{include "TTreeNode.scurl"}, {include "TTreeControl.scurl"} :
µÎ Ŭ·¡½º¸¦ °¢°¢ ÆÄÀÏ·Î ºÐ¸® Ç߱⠶§¹®¿¡, ÀÌ ÆÄÀϵéÀ» ÇöÀç ½ÇÇàµÇ´Â ÆÄÀÏ¿¡ Æ÷ÇÔ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù.
TTreeNode °´Ã¼ ¾È¿¡, ¿©·¯ °³ÀÇ TTreeNode¸¦ °è¼Ó Áßø½ÃÄÑ °´Ã¼¸¦ »ý¼ºÇÏ¿´½À´Ï´Ù.
ÀÌ·¸°Ô °´Ã¼¸¦ »ý¼º½ÃŰ¸é ¼Ò½º ÄÚµå º¸±â°¡ ÆíÇØÁö¹Ç·Î, ÈÄ¿¡ ³ëµåÀÇ ¼öÁ¤ÀÌ ½¬¿öÁý´Ï´Ù.
ÇÏÁö¸¸, ÀÌ·¯ÇÑ ÁßøµÈ TTreeNode¸¦ °ü¸®ÇÒ¼ö ÀÖ´Â Äڵ尡 TTreeNode¿¡ Ãß°¡·Î ÇÊ¿äÇÕ´Ï´Ù.
========================================================================
¼Ò½º #2 – TTreeNode.scurl
------------------------------------------------------------------------
{curl-file-attributes character-encoding = "euc-kr"}
{define-class public open TTreeNode
field protected flabel : String
field public parent : #TTreeNode
field public items : {Array-of TTreeNode} = {{Array-of TTreeNode}}
field public status : String
{constructor public {default
label : String,
parent : #TTreeNode = null,
status : String = "+",
...
}
set self.flabel = label
set self.parent = parent
set self.status = status
{for element : any in ... do
{if element isa TTreeNode then
{self.append element}
}
}
{construct-super ...}
}
{setter public open {label label:String}:void
set self.flabel = label
}
{getter public open {label}:String
{return self.flabel}
}
{getter public open {size}:int
{return self.items.size}
}
{getter public open {has-child?}:bool
{if (self.items.size>0) then
{return true}
else
{return false}
}
}
{method public open {append tn:TTreeNode}:void
set tn.parent = self
{self.items.append tn}
}
}
------------------------------------------------------------------------
À§¿¡¼ ¾ð±ÞÇßµíÀÌ, start.curl¿¡¼ TTreeNode¸¦ Áßø½ÃÄÑ °´Ã¼¸¦ ¹ß»ý½ÃÄ×½À´Ï´Ù.
ÀÌ ÁßøµÈ °´Ã¼¸¦ »ý¼ºÀÚ¿¡¼ ¹Þ¾ÆµéÀ̱â À§ÇØ,
¿©·¯°¡Áö °æ¿ì¿¡ ´ëÇØ »ó°ü¾øÀÌ ¹Þ¾ÆµéÀÌ´Â rest argument·Î ¡°...¡±À» »ç¿ëÇÏ¿´½À´Ï´Ù.
{for element : any in ... do
{if element isa TTreeNode then
{self.append element}
}
}
¡°...¡±À¸·Î ¹Þ¾ÆµéÀÎ °´Ã¼ÀÇ data typeÀ» ¾Ë¼ö ¾øÀ¸¹Ç·Î for ¹®¿¡¼ element¸¦ any·Î ¼±¾ðÇϰí,
¹Þ¾ÆµéÀÎ °´Ã¼µéÀ» element¿¡ Çϳª¾¿ ÇÒ´çÇÕ´Ï´Ù.
µé¾î¿Â °´Ã¼°¡ TTreeNode ŸÀÔÀ̸é element¸¦ Çö ³ëµåÀÇ ÇÏÀ§³ëµå·Î Ãß°¡½Ãŵ´Ï´Ù.
========================================================================
¼Ò½º #3 – TTreeControl.scurl
------------------------------------------------------------------------
{curl-file-attributes character-encoding = "euc-kr"}
{define-class public open TTreeControl {inherits Frame}
field protected fvb : VBox = {VBox width={make-elastic}, height={make-elastic},
spacing=2px}
field protected ftn : #TTreeNode
{constructor public {default
tn : #TTreeNode = null,
...
}
set self.ftn = tn
{construct-super ...}
{self.refresh-controls}
{self.add self.fvb}
}
{method public open {refresh-controls}:void
{self.fvb.clear}
{if self.ftn != null then
{self.make-tree self.ftn, 0}
}
{self.fvb.add {Fill}}
}
{method public open {make-tree tn : #TTreeNode, indent : int} : void
{if tn == null then
{return}
}
let fr : Frame = {Frame width=17px, halign="center"}
{if tn.has-child? then
||-- {fr.add tn.status}
{if tn.status=="+" then
{fr.add {image source={url "images/plus.gif"}}}
elseif tn.status=="-" then
{fr.add {image source={url "images/minus.gif"}}}
}
set fr.cursor=cursor-hand
{fr.add-event-handler
{on PointerPress do
{if tn.status=="+" then
set tn.status="-"
{self.refresh-controls}
elseif tn.status=="-" then
set tn.status="+"
{self.refresh-controls}
}
}
}
}
let fr2 : Frame = {Frame width=17px}
{if tn.status=="+" then
{fr2.add {image source={url "images/folder-close.gif"}}}
elseif tn.status=="-" then
{fr2.add {image source={url "images/folder-open.gif"}}}
}
{self.fvb.add
{HBox valign="center", font-size=9pt,
{Fill width=17px * indent},
fr,
fr2,
tn.label
}
}
{if tn.status == "-" then
{for i:int = 0 below tn.size do
let tn_temp:TTreeNode=tn.items[i]
{self.make-tree tn_temp, indent+1}
}
}
}
}
------------------------------------------------------------------------
¡°+ / -¡° ±âÈ£¸¦ ±×¸²À¸·Î »ðÀÔÇÏ´Â ÄÚµå´Â ºñ±³Àû °£´ÜÇÕ´Ï´Ù.
¿ì¼±, ÇÁ·¹ÀÓ¿¡ ¡°+ / -¡°¸¦ Ãß°¡ÇÏ´Â ÄÚµå {fr.add tn.status}´Â ÁÖ¼®Ã³¸®Çϰí,
±× ÀÚ¸®¿¡ ´ÙÀ½ÀÇ Äڵ带 »ðÀÔÇÕ´Ï´Ù.
{if tn.status=="+" then
{fr.add {image source={url "images/plus.gif"}}}
elseif tn.status=="-" then
{fr.add {image source={url "images/minus.gif"}}}
}
status¿¡ µû¶ó »ðÀԵǴ ±×¸²µµ ´Ù¸£¹Ç·Î, Á¶°Ç¹® if°¡ »ç¿ëµÇ¾ú½À´Ï´Ù.
´ÙÀ½¿¡, ¡°+ / -¡°¿Í ¶È°°ÀÌ µ¿ÀÛÇϹǷΠū Àǹ̴ ¾øÁö¸¸, Æú´õ ¸ð¾çÀÇ ±×¸²À» Ãß°¡ÇÏ¿´½À´Ï´Ù.
let fr2 : Frame = {Frame width=17px}
{if tn.status=="+" then
{fr2.add {image source={url "images/folder-close.gif"}}}
elseif tn.status=="-" then
{fr2.add {image source={url "images/folder-open.gif"}}}
}
Æú´õ ¸ð¾ç ±×¸²À» ´ã±âÀ§ÇÑ ÇÁ·¹ÀÓ fr2¸¦ ¸¸µé°í,
¸¶Âù°¡Áö·Î status¿¡ µû¶ó »ðÀԵǴ ±×¸²µµ ´Ù¸£¹Ç·Î, Á¶°Ç¹® if¸¦ »ç¿ëÇÏ¿© ÆÇº°ÇÏ¿© ÁÝ´Ï´Ï´Ù.
------------------------------------------------------------------------
ÀÌ ¿Ü¿¡µµ ÀÌÀü °Á¿ʹ ´Ù¸£°Ô {Fill}À̶óµçÁö {make-elastic}µî ¿©·¯ ¿É¼ÇÀÌ »ç¿ëµÇ¾ú´Âµ¥,
ÀÌ ºÎºÐÀº ¸ðµÎ Á÷Á¢ Çϳª¾¿ Ã¼Å©ÇØº¸½Ã¸é ÁÁÀ» °Í °°½À´Ï´Ù.
Á»´õ ±ò²ûÇÑ È¸éÀ» ¸¸µé±â À§Çؼ´Â Á÷Á¢ ºÎµúÃļ ÇØº¸´Â°Ô °¡Àå ÁÁÀº ¹æ¹ýÀ̶ó°í »ý°¢µË´Ï´Ù.
³Ê¹« ÀÚ¼¼ÇÏ°Ô ¾²´À¶ó ±ÛÀÌ ±æ¾îÁ®¼ Á» Áö·çÇϼÌÀ»°Í °°³×¿ä..
±×·³, ÀÌ»óÀ¸·Î Æ®¸®±¸Á¶ ¸¸µé±â °Á¸¦ ¸¶Ä¡°Ú½À´Ï´Ù.
- 5th - |
|
|