@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 유형)
다음 값 중 하나입니다(정수 또는 관련 상수).
  1. ruiLib.EXCLUDE_ALL은 RUIWidget(egl.ui.rui.RUIWidget 유형)에 정의된 모든 이벤트를 제외합니다. 외부 유혀인 경우 Widget(egl.ui.rui.Widget 유형)에 정의된 이벤트를 제외합니다. 이 경우 eventFilter의 값은 무시됩니다.
  2. ruiLib.EXCLUDE_ALL_EXCEPT는 eventFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 제외합니다.
  3. ruiLib.INCLUDE_ALL은 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다. 이 경우 eventFilter의 값은 무시됩니다.
  4. ruiLib.INCLUDE_ALL_EXCEPT는 eventFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다.
propertyFilter(STRING[])
propertyFilterType 값에 따라 표시에 포함되거나 제외되는 특성 이름 배열(예: ["font", "fontSize"])입니다.
propertyFilterType(INT 유형)
다음 값 중 하나입니다(정수 또는 관련 상수).
  1. ruiLib.EXCLUDE_ALL은 RUIWidget(egl.ui.rui.RUIWidget 유형)에 정의된 모든 특성을 제외합니다. 외부 유혀인 경우 Widget(egl.ui.rui.Widget 유형)에 정의된 이벤트를 제외합니다. 이 경우 propertyFilter의 값은 무시됩니다.
  2. ruiLib.EXCLUDE_ALL_EXCEPT는 propertyFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 특성을 제외합니다.
  3. ruiLib.INCLUDE_ALL은 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다. 이 경우 propertyFilter의 값은 무시됩니다.
  4. ruiLib.INCLUDE_ALL_EXCEPT는 propertyFilter 값에 지정된 경우를 제외하고 RUIWidget 및 Widget에 정의된 모든 이벤트를 포함합니다.
다음은 표시되는 이벤트 유형이 onScrollonChange만이고 표시되는 특성이 colorbackgroundColor만인 외부 유형의 예입니다.
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"]
    }