GnuSmalltalkUsersGuide:AdditionalChapter1 12
- BLOX.BDropDown
BLOX.BDropDown
네임스페이스 BLOX에 정의됨
슈퍼클래스: BLOX.BExtended
범주: 그래픽-예제
- 이 클래스는 사전 정의된 목록에서 항목을 고를 수 있는 기능을 제공하는, 위젯에 대한 추상적 슈퍼클래스이다. 목록은 주로 숨겨져 있지만 위젯의 우측에 있는 버튼을 누르면 목록이 팝업된다. 따라서 해당 위젯은 세 가지 부분으로 구성된다: 명시되지 않은 텍스트 위젯 (버튼 좌측에 항상 표시됨), 버튼 위젯 (우측에 아래 화살표로 항상 표시됨), 팝업 리스트 위젯으로 구성된다.
BLOX.BDropDown: 접근하기
backgroundColor
위젯에 대한 backgroundColor 값을 응답하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다.
위젯을 표시할 때 사용할 일반 배경색을 명시한다.
backgroundColor: aColor
위젯에 대한 backgroundColor 값을 설정하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다.
위젯을 표시할 때 사용할 일반 배경색을 명시한다.
droppedRows
리스트박스에서 항상 표시되는 항목 수를 응답하라.
droppedRows: anInteger
리스트박스에서 항상 표시되는 항목 수를 설정하라.
font
위젯에 대한 폰트 옵션 값을 설정하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다. 위젯 내부에서 텍스트를 그릴 때 사용할 폰트를 명시한다. 폰트는 X 폰트명이나 Blox 폰트 설명 문자열로 주어질 수 있다. X 폰트명은 다수의 필드로서 주어지는데, 각 필드 앞에는 - 표시가 되어 있고, 기본값이 괜찮음을 나타내기 위해 각 -는 *로 대체될 수 있다: foundry, family, weight, slant, setwidth, addstyle, pixel size, point size (관습에 따라 픽셀 크기와 동일), horizontal resolution, vertical resolution, spacing, width, charset, character encoding.
Blox 폰트 설명 문자열은 3개의 필드로 구성되는데, 각 필드는 공백(space)으로 구분되어야 하나 첫 번째 공백만 의무적이다: 글꼴 집합(font family), 폰트의 포인트 크기 (음수값이 제공될 경우 픽셀로), 공백으로 구분된 스타일 수(유효한 스타일로는 보통, 굵게, 이탤릭체, 밑줄, 오버스트라이크가 있다). 유효한 폰트의 예로, "Helvetica 10 Bold", "Times -14", "Futura Bold Underline"가 있다. 두 개 이상의 단어로 이루어진 경우 글꼴 집합을 괄호로 닫아야 한다.
font: value
위젯에 대한 폰트 옵션 값을 설정하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다. 위젯 내부에서 텍스트를 그릴 때 사용할 폰트를 명시한다. 폰트는 X 폰트명이나 Blox 폰트 설명 문자열로 주어질 수 있다.
X 폰트명은 다수의 필드로서 주어지는데, 각 필드 앞에는 - 표시가 되어 있고, 기본값이 괜찮음을 나타내기 위해 각 -는 *로 대체될 수 있다: foundry, family, weight, slant, setwidth, addstyle, pixel size, point size (관습에 따라 픽셀 크기와 동일), horizontal resolution, vertical resolution, spacing, width, charset, character encoding.
Blox 폰트 설명 문자열은 3개의 필드로 구성되는데, 각 필드는 공백(space)으로 구분되어야 하나 첫 번째 공백만 의무적이다: 글꼴 집합(font family), 폰트의 포인트 크기 (음수값이 제공될 경우 픽셀로), 공백으로 구분된 스타일 수(유효한 스타일로는 보통, 굵게, 이탤릭체, 밑줄, 오버스트라이크가 있다). 유효한 폰트의 예로, "Helvetica 10 Bold", "Times -14", "Futura Bold Underline"가 있다. 두 개 이상의 단어로 이루어진 경우 글꼴 집합을 괄호로 닫아야 한다.
foregroundColor
위젯에 대한 foregroundColor의 값을 응답하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다.
위젯을 표시할 때 사용할 일반 전경색을 명시한다.
foregroundColor: aColor
위젯에 대한 foregroundColor의 값을 설정하되, 이 클래스에서는 리스트 위젯(즉, 팝업 위젯)에 대해서만 설정된다. 서브클래스는 이 메서드를 오버라이드하여 색상이 텍스트 위젯에 적절하게 설정되도록 해야 한다.
위젯을 표시할 때 사용할 일반 전경색을 명시한다.
highlightBackground
위젯에 대한 highlightBackground 옵션의 값을 응답하라.
선택된 항목을 리스트 위젯에 표시할 때 사용할 배경색을 명시한다.
highlightBackground: aColor
위젯에 대한 highlightBackground 옵션의 값을 설정하라.
선택된 항목을 리스트 위젯에 표시할 때 사용할 배경색을 명시한다.
highlightForeground
위젯에 대한 highlightForeground 옵션의 값을 응답하라.
선택된 항목을 리스트 위젯에 표시할 때 사용할 전경색을 명시한다.
highlightForeground: aColor
위젯에 대한 highlightForeground 옵션의 값을 설정하라.
선택된 항목을 리스트 위젯에 표시할 때 사용할 전경색을 명시한다.
BLOX.BDropDown: 콜백
callback
수신자를 클릭할 때 전송되는 DirectedMessage를 응답하고, 준비된 내용이 없을 경우 nil을 응답하라.
callback: aReceiver message: aSymbol
수신자를 클릭하면 aReceiver에 aSymbol 메시지(0-인자 또는 1-인자 선택자의 이름)가 전송되도록 준비하라. 메서드가 인자를 수락하면 수신자가 전달된다.
invokeCallback
종합적 콜백(synthetic callback)을 생성하라.
BLOX.BDropDown: 유연성
createList
'드롭다운 목록'에 사용될 팝업 위젯을 생성하라. 기본적으로 이는 BList지만 다른 어떤 유닛이든 사용 가능하며, 이러한 경우 필요 시 'list box accessing' 메서드를 오버라이드한다.
createTextWidget
리스트 박스에서 선택한 문자열을 보유할 위젯을 생성하여 응답하라. 위젯은 'self primitive'의 자식이어야 한다.
itemHeight
드롭다운 목록 내 항목의 높이를 응답하라. 기본 구현은 수신자가 #font를 이해한다고 가정하지만 원한다면 수정할 수 있다.
listCallback
리스트 박스의 항목을 강조할 때 호출된다. 기본적으로는 아무 일도 하지 않는다.
listSelectAt: aPoint
리스트 박스 내 주어진 위치에 있는 항목을 선택한다. 기본 구현은 리스트가 BList일 것으로 가정하지만 원한다면 수정할 수 있다.
listText
리스트 박스에서 현재 선택한 텍스트를 응답하라. 기본 구현은 리스트가 BList일 것으로 가정하지만 원한다면 수정할 수 있다.
text
사용자가 위젯에서 선택하고(또는) 컨트롤에서 입력한 텍스트를 응답하라 (이것은 추상 메서드이므로 텍스트가 입력된 방식 그대로 서브클래스에 의해 구축될 것이다).
text: aString
텍스트 위젯을 aString으로 설정하라.
BLOX.BDropDown: 리스트 박스 접근하기
add: anObject afterIndex: index
주어진 값으로 된 요소를 색인 매개변수에 색인이 포함된 요소 다음에 추가하라. 위젯에 표시된 라벨은 anObject의 displayString이다. anObject를 응답하라.
add: aString element: anObject afterIndex: index
aString 라벨로 된 요소를 색인 매개변수에 색인이 포함된 요소 다음에 추가하라. 이 메서드는 위젯이 표시할 라벨을 클라이언트가 자발적으로 선택하도록 해준다. anObject가 nil인 경우 문자열이 요소로서도 사용된다. aString이 nil인 경우 요소의 displayString이 라벨로 사용된다. anObject를 응답하고, nil인 경우 aString을 응답하라.
addLast: anObject
주어진 값으로 된 요소를 리스트박스 끝에 추가하라. 위젯에 표시되는 라벨은 anObject의 displayString이다. anObject를 응답하라.
addLast: aString element: anObject
주어진 값으로 된 요소를 리스트박스 끝에 추가하라. 이 메서드는 위젯이 표시할 라벨을 클라이언트가 자발적으로 선택하도록 해준다. anObject가 nil인 경우 문자열이 요소로서도 사용된다. aString이 nil인 경우 요소의 displayString이 라벨로 사용된다. anObject를 응답하고, nil인 경우 aString을 응답하라.
associationAt: anIndex
리스트박스 내 주어진 위치에 있는 항목을 키로 갖고, 그 항목을 표시하는 데 사용된 라벨을 값으로 가진 연관을 응답하라.
at: anIndex
리스트 박스 내 주어진 위치에 표시된 요소를 응답하라.
contents: stringCollection
리스트박스에 표시되는 요소를 설정하고, 라벨이 그들의 displayStrings가 되도록 설정하라.
contents: stringCollection elements: elementList
리스트박스에 표시되는 요소가 elementList의 요소들이 되도록 설정하고, 라벨은 stringCollection 내에서 그에 해당하는 요소가 되도록 설정하라. 두 개의 컬렉션은 크기가 같아야 한다.
do: aBlock
리스트박스의 각 요소마다 반복(iterate over)하여 이를 aBlock으로 전달하라.
elements: elementList
리스트박스에 표시되는 요소를 설정하고, 라벨이 그들의 displayStrings가 되도록 설정하라.
index: newIndex
리스트박스 내 주어진 위치에 있는 항목을 강조하고, 리스트 박스 내 텍스트를 텍스트 위젯으로 전송하라.
labelAt: anIndex
리스트 박스 내 주어진 위치에 표시된 라벨을 응답하라.
labelsDo: aBlock
리스트 위젯 내 라벨을 반복(iterate over)하고 각각을 aBlock으로 전달하라.
numberOfStrings
리스트 박스 내 항목 수를 응답하라.
would
removeAtIndex: index
리스트 박스 내 주어진 색인에 있는 항목을 제거하고, 그 요소에 연관된 객체를 응답하라 (예: #at: 가 주어진 색인에 대해 리턴할만한 값).
size
리스트 박스 내 항목 수를 응답하라.
BLOX.BDropDown: 위젯 프로토콜
dropRectangle
리스트 위젯이 팝업시킬 rectangle을 응답하라. 가능하다면 이는 드롭다운 위젯의 하단면 아래에 위치될 것이지만 그 곳에 화면 공간이 충분하지 않은 경우 드롭다운 위젯의 상단면 위에 위치할 수도 있다. 그 곳에도 화면 공간이 충분하지 않은 경우 팝업 위젯에서 가장 많은 행을 제공할 수 있는 면을 고를 것이다.
dropdown
강제로 팝업 리스트 위젯이 보이도록 한다.
isDropdownVisible
팝업 위젯이 보이는지 응답하라.
toggle
팝업 위젯의 표시 여부를 선택한다(toggle).
unmapList
팝업 위젯을 화면으로부터 매핑해제(unmap)하여 선택된 항목을 항상 표시되는 텍스트 위젯으로 전송하고 콜백을 생성한다.