aboutsummaryrefslogtreecommitdiff
path: root/files/ko/places/views/index.html
blob: 7f4233cc5a6fa092d05142b3146eeb7ab8a90b2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
---
title: Views
slug: Places/Views
tags:
  - Places
---
<p>뷰는 nsINavHistoryResult 개체를 사용자에게 표시하는 방법입니다. 뷰는 <a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsINavHistoryService.idl" rel="custom">nsINavHistoryService.idl</a>에 정의된 nsINavHistoryResultViewer 인터페이스를 구현합니다.</p>

<p>대부분의 애플리케이션에서 내장 뷰를 포함한 플레이스 콘트롤 중의 하나를 사용하면 충분하고 자신의 뷰를 사용하는 복잡함을 피할 수 있습니다. 더 자세한 사항은 <a href="ko/Places/Instantiating_Views">Instantiating Views</a>를 참고하시기 바랍니다.</p>

<h3 id=".EB.B7.B0_.EB.93.B1.EB.A1.9D.ED.95.98.EA.B8.B0" name=".EB.B7.B0_.EB.93.B1.EB.A1.9D.ED.95.98.EA.B8.B0">뷰 등록하기</h3>

<p>nsINavHistoryResult에 <code>viewer</code> 속성을 지정하여 뷰를 등록합니다. 이 때, 결과는 주어진 뷰의 <code>result</code> 속성을 지정하게 됩니다.<em>뷰의 결과 속성을 명시적으로 지정하면 안됩니다.</em> 뷰를 초기화하려면 <code>viewer</code> 속성을 <code>null</code>로 지정합니다. 이는 뷰의 결과 속성 또한 <code>null</code>로 지정하게 합니다.</p>

<p>참조 고리에 대해 주의하십시오. 뷰와 결과는 모두 서로에 대한 참조를 가지고 있습니다. 이 개체들을 삭제하려면 <code>result.viewer</code><code>null</code>로 지정하여 이 고리를 없애야 합니다. 내장 트리 뷰(아래를 참고하십시오)는 이를 자동으로 처리합니다. 트리가 소멸되거나 다른 nsITreeView가 트리와 결합하면 트리는 <code>nsITreeView.tree = null</code>를 호출합니다. 뷰어는 이 경우를 감지하고 자신을 결과에서 분리합니다.</p>

<h5 id=".EB.82.B4.EC.9E.A5_.ED.8A.B8.EB.A6.AC_.EB.B7.B0" name=".EB.82.B4.EC.9E.A5_.ED.8A.B8.EB.A6.AC_.EB.B7.B0">내장 트리 뷰</h5>

<p>가장 흔한 형식의 뷰는 트리 콘트롤이지만 이는 구현하기가 상대적으로 어려운 콘트롤이기도 합니다. 그러므로, 플레이스는 여러분이 결과를 트리 뷰에 표시하기를 원하는 경우를 위하여 내장 뷰 개체를 제공합니다. 이는 <code><a href="https://dxr.mozilla.org/mozilla-central/source/browser/components/places/content/treeView.js" rel="custom">browser/components/places/content/treeView.js</a></code>에 구현되어 있습니다.</p>

<p>이 개체는 nsINavHistoryResultViewer와 <a href="https://dxr.mozilla.org/mozilla-central/source//layout/xul/base/src/tree/public/nsITreeView.idl" rel="custom">nsITreeView</a>를 모두 구현합니다. 그러므로 이 개체를 사용하면 결과(<a href="ko/Places/Query_System">플레이스 질의 시스템</a> 참고)와 트리 사이를 중개할 수 있습니다.</p>

<pre>var result = historyService.executeQuery(...); // your places query result
var tree = document.getElementById("mytree"); // your tree control

var showRootNodeInTree = true;
var treeviewer = new PlacesTreeView(showRootNodeInTree);

result.viewer = treeviewer;
tree.view = treeviewer.QueryInterface(Components.interfaces.nsITreeView);
</pre>

<p>내장 트리 뷰는 (<a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsINavHistoryService.idl" rel="custom">nsINavHistoryService.idl</a>에 선언된) nsINavHistoryResultViewObserver를 구현한 관찰자(observer) 인터페이스를 붙일 수도 있습니다. 이 관찰자 인터페이스를 이용하면 외부 콤포넌트는 어떤 일이 발생하는지 확인하고 적절한 동작을 취할 수 있습니다. 예를 들어, 플레이스 트리에서는 콘트롤러가 붙어서 무엇인가 트리에 드래그 앤 드롭되는지 알아차릴 수 있습니다. 그리고 나서 적절한 동작을 취합니다.</p>

<h3 id=".EB.B7.B0_.EA.B5.AC.ED.98.84.ED.95.98.EA.B8.B0" name=".EB.B7.B0_.EA.B5.AC.ED.98.84.ED.95.98.EA.B8.B0">뷰 구현하기</h3>

<p>사용자 정의 트리 뷰가 필요할 때는 여러분 자신의 클래스 안에 nsINavHistoryResultTreeViewer를 둘러싸는 것이 가장 쉽습니다. 예를 들어, 특별한 첫 번째 행을 구현하려면 여러분의 개체는 첫 번째 행에 대한 nsITreeView 응답을 제공하고 다른 모든 메시지는 하나 이동한 색인과 함께 내장 트리 뷰에 전달하면 됩니다.</p>

<p><code>nsINavHistoryResultNode.viewIndex</code> 속성은 뷰에 사용하기 위하여 명시적으로 제공됩니다. 이 값은 각 노드가 생성될 때 -1로 초기화됩니다. 이 값을 사용하여 보이는 노드는 추적할 수 있습니다. 내장 트리 뷰어는 노드가 켜진 행의 색인을 보관하기 위하여 이 속성을 사용합니다.</p>

<p>nsINavHistoryResultViewer 또한 관찰자 인터페이스를 가지고 있어서 nsINavHistoryResultViewObserver가 변화를 관찰할 수 있도록 합니다. 그러나 이 관찰자 인터페이스는 트리만을 위한 것입니다. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=337638" title="Make nsINavHistoryResultViewObserver only for nsINavHistoryResultTreeViewer">bug 337638</a>는 이를 nsINavHistoryResultTreeViewer 개체로 옮기기 위한 것입니다. nsINavHistoryResultViewer의 다른 구현은 자신의 관찰자를 이용해야 합니다.</p>

<div class="noinclude"></div>