트리 위젯에서 노드를 선택할 경우에 기본적으로 나타나는 스타일은 span 의 dotted 속성 뿐이다.
따라서 각 노드에 클래스 지정을 한 경우 알아보기가 쉽지 않다. 더불어 이전 글에서 구현한 트리 탐색 기능의 경우 검색은 되었는데 도대체 뭔지 알아보는 것은 더 어렵다-_-;;
고로 이번엔 포커스가 잡힐 경우, 스타일을 변경하는 방법을 설명하고자 한다.
엄밀히 말하면 스타일을 변경하는 것이 아니라, 포커싱이 될 경우 스타일 클래스를 추가하고, 포커스 아웃(블러)가 될 경우, 추가한 클래스를 해제 시키는 것이다.
변경할 소스의 위치는 아래와 같다.
dojo/dijit/Tree.js
변경할 메써드는 dijit.Tree 클래스의 blurNode, _onTreeFocus 다.
.tundra .dijitTreeLabelFocused 스타일 클래스를 오버라이딩 하는것이다!
왜 진작에 스타일이 있을거라고 생각하지않고 소스를 탐색했는지.-_ㅜ;
3번의 글을 거쳐, 트리 위젯에 대해 소개 및 추가 기능을 구현해보았다.
더 필요한 기능이 있을려나..?
따라서 각 노드에 클래스 지정을 한 경우 알아보기가 쉽지 않다. 더불어 이전 글에서 구현한 트리 탐색 기능의 경우 검색은 되었는데 도대체 뭔지 알아보는 것은 더 어렵다-_-;;
고로 이번엔 포커스가 잡힐 경우, 스타일을 변경하는 방법을 설명하고자 한다.
엄밀히 말하면 스타일을 변경하는 것이 아니라, 포커싱이 될 경우 스타일 클래스를 추가하고, 포커스 아웃(블러)가 될 경우, 추가한 클래스를 해제 시키는 것이다.
변경할 소스의 위치는 아래와 같다.
dojo/dijit/Tree.js
변경할 메써드는 dijit.Tree 클래스의 blurNode, _onTreeFocus 다.
_onTreeFocus: function(evt){그러나. 이것보다 더 쉬운 방법은..
var node = dijit.getEnclosingWidget(evt.target);
if(node != this.lastFocused){
this.blurNode();
}
var labelNode = node.labelNode;
// set tabIndex so that the tab key can find this node
labelNode.setAttribute("tabIndex", "0");
dojo.addClass(labelNode, "dijitTreeLabelFocused"); // 이 스타일은 tundra.css 에 정의되어있다. tundra를 사용한다면..
dojo.addClass(labelNode, "treeEntryFocus"); // 이곳에 원하는 클래스를 지정한다.
this.lastFocused = node;
},
blurNode: function(){
// summary
// Removes focus from the currently focused node (which must be visible).
// Usually not called directly (just call focusNode() on another node instead)
var node = this.lastFocused;
if(!node){ return; }
var labelNode = node.labelNode;
dojo.removeClass(labelNode, "dijitTreeLabelFocused");
dojo.removeClass(labelNode, "treeEntryFocus"); // 이곳에 제거할 클래스를 지정한다.
labelNode.setAttribute("tabIndex", "-1");
this.lastFocused = null;
},
...
.tundra .dijitTreeLabelFocused 스타일 클래스를 오버라이딩 하는것이다!
왜 진작에 스타일이 있을거라고 생각하지않고 소스를 탐색했는지.-_ㅜ;
3번의 글을 거쳐, 트리 위젯에 대해 소개 및 추가 기능을 구현해보았다.
더 필요한 기능이 있을려나..?