@VEWidget
Rich UI 또는 외부 유형 위젯을 작성하는 경우 복합 특성 @VEWidget을 지정할 수 있습니다. EGL 편집기는 팔레트를 새로 고칠 때 팔레트에 항목을 추가하여 작업공간에서 @VEWidget 특성의 세부사항을 사용합니다. 디자인 표면에서 팔레트 도구 새로 고치기를 클릭하여(“디자인 표면의 도구 사용” 참조) 팔레트를 새로 고칩니다.
@VEWidget 특성에는 다음 필드가 있습니다.
- category(STRING 유형)
- 팔레트에서 위젯이 나열되는 카테고리입니다. 카테고리는 알파벳순으로 나열됩니다.
해당 카테고리가 없는 경우 지정한 이름으로 새 카테고리가 작성됩니다. 카테고리는 Rich UI 단추 및 Dojo 단추와 같이 동일한 이름의 위젯을 구분하는 데 특히 유용합니다.
- description(STRING 유형)
- 팔레트에서 사용자가 위젯 항목 위에 마우스를 올리면 표시되는 설명입니다.
- displayName(STRING 유형).
- 팔레트에서 위젯 이름입니다. 이 이름은 카테고리에서 알파벳순으로 나열됩니다.
기본값은 RUIWidget 유형의 핸들러 또는 외부 유형의 이름입니다.
- template(STRING 유형)
- 위젯 이름(세미콜론 제외) 뒤에 오는 위젯 유형 선언 파트입니다.
이 예에서 선언에는 오류를 방지하기 위해 필요한 set-valuse 블록이 포함됩니다.
다음은 선언 예입니다.
myH3 my.package.H3{ text="The Heading Text" };EGL 시스템 코드에서 위젯 유형을 지정하고 규정자(예: my.package)를 포함하도록 하려면 필요한 경우에만 typeName 변수로 템플리트 문자열을 시작하십시오. 예를 들어 다음과 같습니다.template = "${typeName}{}"다음은 관련된 선언입니다. 이전에 표시된 위젯 유형이 선언을 받는 핸들러와 동일한 패키지에 있다고 가정합니다.myH3 H3{};다음은 다른 예입니다.template = "${typeName}{ text=\"The Heading Text\" }"다음은 관련된 선언입니다.myH3 H3{ text="The Heading Text" }; - smallIcon(STRING 유형)
- 팔레트에 표시 가능한 작은 아이콘을 포함하는 gif 파일의 경로입니다. 이 경로는 프로젝트 디렉토리의 상대 경로입니다. 예를 들어 프로젝트가 com.egl인 경우 이전에 나열된 gif 파일은 com.egl/icons에 있습니다.
- largeIcon(STRING 유형)
- 팔레트에 표시 가능한 큰 아이콘을 포함하는 gif 파일의 경로입니다. 이 경로는 프로젝트 디렉토리의 상대 경로입니다. 예를 들어 프로젝트가 com.egl인 경우 이전에 나열된 gif 파일은 com.egl/icons에 있습니다.
- container(@VEContainer 유형)
- 다음과 같이 container 필드를 지정하십시오.
container{@VEContainer{}}container가 있으면 다음과 같은 영향을 미칩니다.- 런타임 시 위젯이 다른 위젯을 포함할 수 있습니다.
- 개발 시 EGL 개발자가 정의하는 중인 위젯에 다른 위젯을 끌어서 놓을 수 있습니다.
- 위젯은 children 필드를 포함해야 합니다. children 필드는 Widget[] 유형이고 해당 필드에 대한 @EGLProperty 특성을 정의해야 합니다(나중에 설명됨).
또한 @VEWidget을 사용하면 특성 보기에 표시할
RUIWidget 특성과 이벤트(또한 외부 유형 특성과 이벤트)를 지정할 수 있습니다.
예를 들어 backgroundColor에 대해 표시되는 항목이
RUIWidget 유형의 핸들러(또는 외부 유형에서 제공하는 위젯)에 제공됩니다.
그러나 backgroundColor는 정의하는 중인 위젯에 적절하지 않습니다.
다음은 다른 경우에 기본적으로 표시되는 특성과 이벤트를 필터링하는 @VEWidget 특성 필드입니다.
- eventFilter(STRING[])
- eventFilterType 값에 따라 표시에 포함되거나 제외되는 이벤트 이름 배열(예: ["onClick", "OnScroll"])입니다.
- eventFilterType(INT 유형)
- 다음 값 중 하나입니다(정수 또는 관련 상수).
- ruiLib.EXCLUDE_ALL은 RUIWidget(egl.ui.rui.RUIWidget 유형)에 정의된 모든 이벤트를 제외합니다. 외부 유혀인 경우 Widget(egl.ui.rui.Widget 유형)에 정의된 이벤트를 제외합니다. 이 경우 eventFilter의 값은 무시됩니다.
- ruiLib.EXCLUDE_ALL_EXCEPT는 eventFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 제외합니다.
- ruiLib.INCLUDE_ALL은 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다. 이 경우 eventFilter의 값은 무시됩니다.
- ruiLib.INCLUDE_ALL_EXCEPT는 eventFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다.
- propertyFilter(STRING[])
- propertyFilterType 값에 따라 표시에 포함되거나 제외되는 특성 이름 배열(예: ["font", "fontSize"])입니다.
- propertyFilterType(INT 유형)
- 다음 값 중 하나입니다(정수 또는 관련 상수).
- ruiLib.EXCLUDE_ALL은 RUIWidget(egl.ui.rui.RUIWidget 유형)에 정의된 모든 특성을 제외합니다. 외부 유혀인 경우 Widget(egl.ui.rui.Widget 유형)에 정의된 이벤트를 제외합니다. 이 경우 propertyFilter의 값은 무시됩니다.
- ruiLib.EXCLUDE_ALL_EXCEPT는 propertyFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 특성을 제외합니다.
- ruiLib.INCLUDE_ALL은 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다. 이 경우 propertyFilter의 값은 무시됩니다.
- ruiLib.INCLUDE_ALL_EXCEPT는 propertyFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다.
다음은 표시되는 이벤트 유형이 onScroll과 onChange만이고
표시되는 특성이 color와 backgroundColor만인 외부 유형의 예입니다.
ExternalType DojoButton extends DojoBase type JavaScriptObject {
relativePath = "dojo/widgets",
javaScriptName = "DojoButton",
includeFile = "dojo/widgets/dojobutton.html",
@VEWidget{
category = "Dojo",
template = "dojo.widgets.DojoButton { text = \"Button\" }",
displayName = "Button",
smallIcon = "icons/ctool16/dijit_button_pal16.gif",
largeIcon = "",
propertyFilterType = ruiLib.EXCLUDE_ALL_EXCEPT,
propertyFilter = ["color", "backgroundColor"],
eventFilterType = ruiLib.EXCLUDE_ALL_EXCEPT,
eventFilterType = ["onScroll", "onChange"]
}