Container

FloatingLayer

컴포넌트 설명

요약

화면 안에 팝업 형태로 출력되는 새로운 창을 생성

기능 및 특징

  • 화면 최상위 층에 출력 (useModal)

  • 이동 제어 (movable)

주요 용도

  • 팝업 창

YouTube 동영상

FloatingLayer

주요 API

API

설명

useModal

  • useModal="true"로 설정정하면 FloatingLayer 컴포넌트는 항상 모든 컴포넌트보다 앞에 표시됨.

documentTitle

  • 브라우저 제목 지정. documentTitle="true"로 설정할 경우 title 속성에 설정한 제목을 브라우저 제목으로 사용 가능. FloatingLayer의 탭을 클릭하면 title 설정이 브라우저 제목으로 변경됨.

documentTitle="true" Vs. documentTitle="false"

닫기 버튼 표시

useCloseButton="true" 설정을 적용하면 우측 상단에 닫기 버튼을 표시할 수 있습니다.

닫기 버튼

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/FloatingLayer/useCloseButton_FloatingLayer.xml)

YouTube 동영상 (https://youtu.be/oWfHc9LwxGQ)

프레임 내부에서만 이동 허용

layerMoveType 속성을 사용하여 FloatingLayer를 드래깅할 때의 동작을 지정할 수 있습니다. layerMoveType="overflow" 속성 설정을 적용하면 FloatingLayer를 프레임 외부로도 이동할 수 있고, layerMoveType="restrict" 속성 설정을 적용하면 프레임 내부에서만 FloatingLayer를 드래깅하여 이동할 수 있습니다.

layerMoveType 속성 설정에 따른 FloatingLayer의 이동 범위

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/FloatingLayer/layerMoveType_FloatingLayer/)

YouTube 동영상 (https://youtu.be/j1AdS2AJ5kY)

Generator

컴포넌트 설명

요약

여러 컴포넌트로 구성된 컴포넌트 그룹을 한번에 생성하기 위한 컴포넌트

기능 및 특징

  • 여러 개의 컴포넌트로 구성된 컴포넌트 그룹을 동시에 생성

  • 반복 생성할 그룹에 동적으로 컴포넌트를 추가 및 삭제

  • API를 통해 그룹에 포함된 컴포넌트를 제어

주요 용도

여러 컴포넌트로 구성된 웹 UI를 생성하는 인터페이스 (예: 입력 상자 추가)

YouTube 동영상

Generator

주요 API

API

설명

getChild(index, id)

  • Generator의 index 번째 반복부에서 id에 해당하는 웹스퀘어 컴포넌트를 반환

getLength()

  • Generator가 몇 개의 반복부를 가지고 있는지를 반환

insert()

  • Generator의 반복부에 해당하는 부분을 맨 뒤에 하나 더 추가

removeAll()

  • Generator로 출력된 항목을 모두 삭제하고 초기화

아래 컴포넌트는 Generator를 통해 반복 생성할 수 없습니다.


Chart

GridView

Menu

Switch

TabControl

TreeView

WindowContainer

Repeat 컴포넌트와의 차이


Generator: 그룹을 구성하는 컴포넌트의 동적인 추가 및 삭제를 지원

Repeat: 컴포넌트 그룹을 정적으로 생성


웹 UI의 반복 생성이 필요한 대부분의 경우, Generator 사용을 권장합니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/Generator/insertChild_Generator.xml)

YouTube 동영상 (https://youtu.be/8xNf3eVmV84)

Group

컴포넌트 설명

요약

여러 컴포넌트를 그룹핑하는 컴포넌트.

기능 및 특징

  • 그룹에 속한 컴포넌트 전체를 초기화

  • 그룹에 속한 컴포넌트 전체에 대한 함수 호출

  • HTML5 tag 지정

주요 용도

  • 전체 레이아웃을 구성

  • 복잡한 계층 구조 구현

YouTube 동영상

주요 API

API

설명

init();

  • Group 컴포넌트 내에 있는 컴포넌트들의 값을 초기화

  • 사용 예: group1.init();

invoke();

  • Group 컴포넌트 하위의 모든 컴포넌트의 함수를 동일하게 호출

  • 사용 예: group1.invoke("setValue", "WebSquare");

내부 컴포넌트 비활성화

내부 컴포넌트 전체의 일괄 비활성화 및 활성화

setDisabled(true) 함수로 내부 컴포넌트들을 모두 비활성화할 수 있습니다. 이후 setDisabled(false) 함수를 실행하여 내부 컴포넌트들이 다시 활성화됩니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/Group/setDisabled_Group.xml)

YouTube 동영상 (https://youtu.be/QCcRWMtbYlA)

내부 컴포넌트의 비활성화 상태 유지

setDisabled(true) 함수로 내부 컴포넌트들을 비활성화한 후, setDisabled(false) 함수를 실행하여 내부 컴포넌트들을 다시 활성화 할 경우, 초기에 비활성화 상태인 컴포넌트는 비활성화 상태를 유지할 수 있습니다. 이 경우 keepDisabled="true" 속성 설정을 추가하십시오.

keepDisabled="false"

keepDisabled="true" (비활성화 상태가 유지됨)

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/Group/keepDisabled_setDisabled_Group.xml)

YouTube 동영상 (https://youtu.be/p0th8QQ66B4)

이벤트

onmouseleave & onmouseenter

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/Group/onmouseleave_onmouseenter_Group.xml)

YouTube 동영상 (https://youtu.be/F6d6zU6mmtU)

스타일링

여러 컴포넌트를 Group으로 감싼 후에, Group에 일괄적으로 스타일링을 적용할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/Group/styling_Group.xml)

YouTube 동영상 (https://youtu.be/N7kfGHs-CR4)

ScrollView

컴포넌트 설명

요약

모바일 전용 터치 스크롤링을 제공.

기능 및 특징

Group 컴포넌트처럼 하위에 여러 컴포넌트를 포함.

ScrollView

SlideHide

컴포넌트 설명

요약

슬라이딩을 통한 숨김/표시 기능을 제공.

기능 및 특징

이벤트에 따라 특정 layer를 animation으로 표시하는 컴포넌트.

처음에는 정해진 크기(showSize)만큼만 표시.

이후 마우스 오버 등 특정 이벤트(slideEvent)가 발생할 경우, 정해진 방향(slideDirection)으로 정해진 크기(moveSize)만큼 이동하면서 내부 내용을 표시.

주요 용도

퀵 메뉴와 같이 마우스를 올리면 UI를 잠시 표시하는 상황에서 사용.

SlideHide

Switch

컴포넌트 설명

요약

여러 상황이 가능한 경우, 각 상황에 대한 화면을 구성하고 해당 상황에 맞는 화면을 출력

기능 및 특징

  • 각 상황 별 동적 화면 표시

  • 슬라이딩 효과

  • 기본 표시 화면 설정 가능

  • 드래그 앤 드롭 (브라우저)

  • 터치 (모바일)

주요 용도

  • 페이지 이동, 목록 이동 등

응용

  • 모바일 접근성

Switch

TabControl

TabControl

컴포넌트 설명

요약

Group 컴포넌트의tagname속성에 HTML5 태그(<colgroup>, <tr>, <td>, <th>)를 추가하여 <table> 태그로 묶음

기능 및 특징

  • 각 셀에 컴포넌트 추가 가능

  • 테이블 편집이 용이

주요 용도

  • 폼 양식 구성

YouTube 동영상

탭 생성 (addTab())

아래 예제와 같이 addTab() 함수를 사용하여 탭을 생성할 수 있습니다.

$r_title(addTab() 함수를 사용한 탭 생성)
tabControl1.addTab("tab_01", {
    "label": "New",
    "title": "dataObject",
    "openAction": "exist",
    "closable": "true"
}, {
    "src": "src.xml",
    "frameMode": "wframePreload", 
    "scope" : "true"
});

탭 프레임 종류 (frameMode)

addTab() 함수를 사용하여 탭을 생성할 경우 frameMode 옵션을 설정하여 탭 프레임 종류를 설정하십시오. 단, wframe 혹은 wframePreload 타입의 탭을 생성할 경우 scope 옵션을 "true"로 설정하십시오.

frameMode 설정

옵션

설명

frameMode="iframe"

  • IFrame으로 탭을 생성.

  • Scope 기능 사용할 수 없음.

frameMode="wframe"

  • WFrame으로 탭을 생성.

  • Scope 기능 지원.

frameMode="wframePreload"

  • WFrame으로 탭을 생성.

  • Scope 기능 지원.

wframe vs. wframePreload


alwaysDraw="false" 설정을 사용할 경우, 두 경우 모두 탭 활성화 시에만 해당 탭의 컨텐츠가 로딩되어 로딩 이벤트가 발생합니다.


단, 아래와 같은 차이가 있습니다.


frameMode="wframe"

(1) 탭 활성화 시에만 객체를 생성.

(2) 비활성화된 탭에 포함된 객체는 참조 불가능.


frameMode="wframePreload"

(1) src 속성으로 지정된 화면을 로딩하여 객체를 생성.

(2) 렌더링은 하지 않음. (즉, 배경색 변경 같은 렌더링 관련 API는 동작 불가.)

(3) 그 결과, 탭이 비활성화된 상태에서도 해당 탭에 포함된 객체 참조는 가능.

wframe vs. wframePreload (alwaysDraw="false")

항목

wframe

wframePreload

탭 로딩 및 화면 렌더링

첫번째 탭

  • 로딩: 초기

  • 렌더링: 초기

  • 로딩: 초기

  • 렌더링: 초기

나머지 탭

  • 로딩: 탭 선택 시

  • 렌더링: 탭 선택 시

  • 로딩: 초기

  • 렌더링: 탭 선택 시

탭에 포함된 객체 생성

탭이 활성화될 때.

탭 로딩 시.

탭에 포함된 객체 참조

활성화된 탭의 객체만 참조 가능.

비활성화된 탭의 객체도 참조 가능.

$r_title(사용 예)
// 아래는 단순 예제입니다 
// TabControl 내에서는 동일한 frameMode 사용을 권장합니다.

<w2:tabControl id="tabControl1">
	<w2:tabs label="tab_iframe" id="tabs1"></w2:tabs>
	<w2:tabs label="tab_wframe" id="tabs2"></w2:tabs>
	<w2:tabs label="tab_wframePreload" id="tabs3"></w2:tabs>
		<w2:content id="content1" alwaysDraw="false" src="sub.xml" 
			frameMode="iframe"></w2:content>
		<w2:content id="content2" alwaysDraw="false" src="sub2.xml" 
			frameMode="wframe" scope="true"></w2:content>
		<w2:content id="content3" alwaysDraw="false" src="sub3.xml" 
			frameMode="wframePreload" scope="true"></w2:content>
</w2:tabControl>

부모 WFrame의 Scope를 상속하는 탭으로 생성

WFrame을 포함하는 화면을 wframe 타입의 탭으로 생성할 경우, 탭이 포함한 WFrame의 소스(src) 화면에서 가장 가까운 부모의 WFrame(즉, wframe 타입의 탭)의 객체 및 영역에 접근하도록 허용할 수 있습니다.

addTab() 함수로 wframe 타입의 탭을 생성할 때 scopeInherit 옵션을 아래와 같이 설정하십시오.

$r_title(사용 예)
var contOpt = {
    frameMode: "wframe",
    src: "source.xml",
    scopeInherit: "all"
};
tabControl1.addTab(tabId, tabOpt, contOpt);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/addTab_scopeInherit_TabControl/)

scopeInherit="none"

scopeInherit="api"

scopeInherit="all"

scopeInherit="component"

탭 생성 시 dataObject를 통한 파라미터 전달

addTab() 함수로 추가하는 탭에 dataObject를 통해 파라미터를 전달할 수 있습니다. 생성된 탭에서는 $p.getParameter() 함수를 통해 전달받은 파라미터 확인 가능합니다.

$r_title(addTab() 함수로 탭을 생성할 때 파라미터 전달 (예시))
var rowJSON = {
  "Product Info": {
    "Origin": "Korea",
    "Manufacturer": "Inswave",
    "Type": "Software"
  },
  "Region": "Seoul",
  "Carrier": true
};

var dataObject = {
  "type": "json",
  "name": "param",
  "data": rowJSON
};

tabControl1.addTab("tab_01", {
  "label": "New",
  "title": "dataObject",
  "openAction": "exist",
  "closable": "true"
}, {
  "src": "src.xml",
  "frameMode": "wframePreload",
  "scope": "true",
  "dataObject": dataObject
});
$r_title(탭에서 전달받은 파라미터 확인 (예시))
var paramData = $p.getParameter("param");
var data = JSON.stringify(paramData);
alert(data);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/getParameter_$p_addTab_TabControl/)

YouTube 동영상 (https://youtu.be/Z2Mrdxt2uws)

탭의 src 변경

content에 지정된 페이지의 경로를 동적으로 바꿀 경우 getFrame API를 이용하십시오.

$r_title(예제)
tabControl1.getFrame("tab1").setSrc(
        "/ui/tab2.xml", {
            "dataObject": {
                "type": "json",
                "name": "pageParam",
                "data": {
                    "name": "WebSquare",
                    "addr": "서울시"
                }
            }
        );

탭 크기에 따른 적응형 디자인 적용

addTab() 함수를 사용하여 탭을 생성할 때 탭의 프레임 모드(frameMode)가 WFrame이고 탭의 소스(src) 화면이 적응형 디자인을 사용하는 경우, adaptiveFrame 옵션을 true로 지정하면 탭의 크기에 따라 소스 화면에 적응형 디자인을 적용할 수 있습니다. 즉, 탭의 크기에 따라 탭에 포함된 화면을 적응형으로 표시할 수 있습니다. 별도로 adaptiveFrame 옵션을 설정하지 않을 경우, 탭에 포함된 화면은 브라우저 크기에 따라 적응형으로 표시됩니다.

$r_title(사용 예)
tabControl1.addTab(1, {
    label: "Adaptive Tab",
    title: "Adaptive Tab",
    openAction: "exist",
    closable: "true"
}, {
    "src": "adaptive_adaptiveThreshold_TableLayout.xml",
    "frameMode": "wframe",
    "adaptiveFrame": "true"
});

다음은 동일한 너비의 TabControl에 적응형 디자인을 사용하는 소스(src) 화면으로 탭을 생성한 경우입니다. tabControl1에만 "adaptiveFrame": "true" 옵션 설정을 적용했고, 이 경우, tabControl1에 생성된 탭만 소스(src) 화면을 적응형 디자인으로 표시하는 것을 확인할 수 있습니다.

"adaptiveFrame": "true" vs. "adaptiveFrame": "false"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/addTab_adaptiveFrame_TabControl/)

탭 생성 후 서브미션 상태 창 표시

상태창 표시

WFrame으로 생성한 탭의 src 화면이 서브미션을 포함할 경우, 서브미션 실행 시 표시되는 상태창을 WFrame 탭 내부에 표시할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/processMsgFrame_TabControl/)

YouTube 동영상 (https://youtu.be/XH8obZkSyEo)

상태창 소스(src) 변경

config.xml 파일의 설정을 변경하여 해당 상태창의 소스를 변경할 수도 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/processMsgFrameURL_config_processMsgFrame_TabControl/)

YouTube 동영상 (https://youtu.be/BcEO_wVyTc8)

이벤트 로딩 순서

스크립트 실행 순서

화면

initScript

postScript

onpageload

ontabload

TabControl




4


Tab (WFrame)

1

3





화면 파일 (XML)



2


w2:content 속성 중 initScript/postScript는 deprecated 되었습니다.

Scope 참조

WFrame으로 생성한 탭은 getWindow$p.parent API를 통해 참조할 수 있습니다.

tab1의 scwin.test1(); 실행하기

스크립트 위치

접근 방법

main

tabControl1.getWindow("tab1").scwin.test();

wframe1

$p.parent().tabControl1.getWindow("tab1").scwin.test();

탭이 여러 개인 경우

탭 위치 지정 (tabPosition)

탭이 여러 개인 경우,화면 디자인에 따라 tabPosition 속성을 통해 탭을 표시할 위치를 설정하십시오.

tabPosition="top"

tabPosition="left"

tabPosition="right"

tabPosition="bottom"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabContrl/tabPosition_TabControl/)

YouTube 동영상 (https://youtu.be/HXLexQKZUTU)

스크롤 및 탭목록 버튼 표시 (tabScroll="true")

탭을 여러 개 생성할 경우 tabScroll="true" 설정을 추가하면 상단에 스크롤과 탭 목록을 표시할 수 있습니다.

tabScroll="false"

tabScroll="true"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/tabScroll_tabPosition_TabControl/)

YouTube 동영상 (https://youtu.be/G2NKZg9n_eM)

탭 스크롤 버튼을 통한 탭 활성화 (changeActiveTab="true")

tabScroll="true" 설정을 통해 탭 스크롤 버튼을 표시할 경우, 스크롤 버튼을 클릭하면 탭 목록만 스크롤 됩니다. 이 경우 changeActiveTab="true" 설정을 추가할 경우 스크롤 버튼을 통해 선택한 탭을 활성화할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/tabScroll_changeActiveTab_TabControl/)

YouTube 동영상 (https://youtu.be/srqwDbr70FM)

탭을 닫을 경우 남은 탭을 자동으로 앞으로 이동 (tabScrollAuto="true")

또한 tabScrollAuto="true" 설정을 추가할 경우 마지막 탭 닫은 자리를 앞의 탭으로 채워서 상단에 최대한 많은 탭을 표시할 수 있습니다.

tabScrollAuto="false"

tabScrollAuto="true"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabScroll/tabScroll_tabScrollAuto_TabControl/)

YouTube 동영상 (https://youtu.be/nt3DExi4iTs)

현재 선택된 탭의 선택 상태를 툴팁으로 표시

useTabTitleSelected="true" 설정을 추가할 경우, 선택된 탭의 툴팁으로 선택 상태를 표시하는 문구("선택됨" / "selected")를 추가할 수 있습니다.

useTabTitleSelected="false"

useTabTitleSelected="true"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/useTabTitleSelected_TabControl.xml)

YouTube 동영상 (https://youtu.be/iUZKEXx_XHE)

자식 탭의 비활성화 상태를 유지

keepDisabledTab="true" 설정을 추가할 경우 부모 탭의 활성화 여부에 상관없이 자식 탭의 비활성화 상태를 유지할 수 있습니다.

즉, 부모 TabControl의 탭이 또 다른 TabControl을 포함한 경우, 자식 TabControl의 탭 비활성화 상태를 부모 TabControl 탭의 활성화 상태에 상관없이 유지할 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/keepDisabledTab_TabControl/)

YouTube 동영상 (https://youtu.be/5BCe5c4avtM)

탭 닫기 버튼 표시

closable="true" 설정을 추가하면 사용자가 마우스를 가져다 댈 때 탭에 닫기 버튼을 표시하여 사용자가 탭을 닫을 수 있도록 할 수 있습니다.

closable="true"

추가로 alwaysShowCloseBtn="true" 설정까지 적용하면 탭에 마우스를 가져다 대지 않아도 항상 모든 탭에 닫기 버튼을 표시할 수 있습니다.

closable="true" alwaysShowCloseBtn="true"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabScroll/closable_alwaysShowCloseBtn_TabControl .xml)

YouTube 동영상 (https://youtu.be/pNuDxa8PJQI)

팝업

지정한 프레임 영역에만 모달 팝업 표시

frameMode="wframe" 혹은 frameMode="wframePreload"로 생성한 WFrame 탭에서 $open.popUp() 함수를 통해 팝업을 생성할 경우, 팝업을 표시한 프레임을 지정할 수 있습니다. $p.open.popUp() 함수의 options.frameModal 옵션을 사용하십시오.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/frameMode_tabControl_content_openPopup_frameModal_$p/)

YouTube 동영상 (https://youtu.be/dGoIpOaHJcA)

참고 자료

프레임 모달 팝업 (options.frameModal) 생성 참고.

부모 – 자식 팝업 닫기

$p.openPopup() 함수를 사용하여 탭 화면에서 팝업을 생성하고, 부모 팝업과 해당 부모에 속하는 모든 자식 팝업을 함께 닫을 수 있습니다.

  1. 단, WFrame 탭에서만 동작합니다. frameMode="wframe" 혹은 frameMode="wframePreload"로 탭을 생성하십시오.

  2. TabControl의 frameModal 속성을 "true"로 설정하십시오.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TabControl/frameModal_TabControl/)

YouTube 동영상 (https://youtu.be/eA6lQkcBGsY)

주요 API

주요 API

API

설명

useConfirmMessage

  • true로 설정하면 탭 추가 시 확인 창 출력 가능.

confirmTrueAction

  • '확인' 을 선택했을 때의 동작을 설정.

    • exist: 동일한 tab을 사용하여 표시

    • new : 항상 새로운 tab으로 표시

    • select : id가 동일한 tab이 있으면 그 tab을 선택

confirmFalseAction

  • '취소' 를 선택했을 때의 동작을 설정. (exist, new, select)

confirmMessage

  • 확인 메시지를 설정.

closable

  • 탭 닫기 기호를 표시 (true/false)

  • 전체 탭 혹은 개별 탭에 설정 가능

tabMove

tabMove="true" 설정을 통해 드래그-앤-드롭으로 탭 순서 변경 가능.

addTab()

  • id를 사용하여 탭을 추가하고, 생성된 탭의 id를 반환

deleteTab()

  • 지정한 인덱스의 탭을 삭제

enableTab()

  • 지정한 인덱스의 탭을 사용할 수 있게 허용

getSelectedTabID()

  • 선택된 탭의 ID를 반환

getSelectedTabIndex()

  • 선택된 탭의 인덱스를 반환

getTabIndex()

  • 탭 ID에 해당하는 인덱스를 반환

getWindow()

  • 탭 인덱스에 해당하는 window content를 반환. 인덱스가 없으면 현재 선택된 탭의 window content를 반환.

setSelectedTabIndex()

  • 지정한 인덱스에 해당하는 탭을 선택

deleteAllTabs()

  • 모든 탭을 한번에 닫음

onchange

  • 탭이 바뀐 경우 발생

ontabclick

  • 탭이 클릭된 경우 발생

ontabclose

  • 탭의 닫기 버튼이 클릭된 경우 발생

TableLayout

컴포넌트 설명

요약

Group 컴포넌트의tagname속성에 HTML5 태그(<colgroup>, <tr>, <td>, <th>)를 추가하여 <table> 태그로 묶음

기능 및 특징

  • 각 셀에 컴포넌트 추가 가능

  • 테이블 편집이 용이

주요 용도

  • 폼 양식 구성

YouTube 동영상

그리기

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TableLayout/introduction_TableLayout.xml)

YouTube 동영상 (https://youtu.be/FgJIBcSgqTI)

적응형 웹

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/TableLayout/adaptive_adaptiveThreshold_TableLayout.xml)

YouTube 동영상 (https://youtu.be/q8tQ06AF3G8)

DataCollection 바인딩 및 컴포넌트 자동 추가

  1. TableLayout을 생성합니다.

  1. 아래와 같이 DataMap을 생성합니다.

DataMap

  1. Output 탭의 DataMap 키를 Design 탭 상의 TableLayout 셀로 드래깅합니다.

  2. 아래와 같은 팝업 창이 나오는지 확인합니다.

  1. DataMap을 바인딩할 컴포넌트 종류를 선택합니다.

컴포넌트 선택

  1. 아래는 각 셀에 컴포넌트를 바인딩한 모습입니다. 컴포넌트 키 값(Name, Nationality, 등)이 자동 입력되며, DataMap의 데이터가 자동 표시됩니다.

바인딩 후

WidgetContainer

컴포넌트 설명

요약

  • 여러 개의 웹 위젯을 한 화면에서 화면에서 제공하는 컴포넌트.

  • 서버 통신 등을 포함한 업무 화면을 웹 위젯으로 사용.

  • 업무 화면 및 유틸리티 사용 환경을 개인화.

기능

  • 좌표계를 바탕으로 위젯 위치 결정 (cols, unitHeightPixel)

  • 동적 위젯 생성/추가 (addWidgets())

  • 위젯 위치 및 크기 제어 (이동, 고정, 리사이징, 최대화/최소화)

  • 위젯 추가/내보내기

    • importWidgets()

    • exportWidgets()

    • importWidget()

    • exportWidget()

기능 및 특징

  • 각 위젯은 서로 다른 URL을 통해 관리.

  • 사용자가 원하는 컨텐츠만 한 화면에 배치 가능.

  • 위젯 이동, 리사이징, 최대화/최소화 가능.

  • WFrame 사용으로 SPA 구현 및 효율적인 리소스 관리 가능.

관련 컴포넌트

  • WFrame

YouTube 동영상

위젯의 기본 구조는 아래와 같습니다. content 영역은 WFrame으로 구성되며 위젯을 추가할 때 지정한 XML 페이지(src 옵션)가 표시됩니다.

위젯 구조

좌표계

WidgetContainer는 colsunitHeight 속성을 기준으로 2차원 좌표계를 생성하고, 모든 위젯의 위치 및 크기는 좌표계를 기준으로 결정됩니다.

cols="4" unitHeightPixel="300"

좌표계 상에 위젯 생성

YouTube 동영상 (https://youtu.be/dlKWj8jXlTY)

위젯 생성

위젯은 WidgetContainer의 addWidgets() 함수를 통해서만 동적으로 생성할 수 있습니다. (XML 상에서 위젯을 추가할 수 없습니다.)

관련 함수

addWidgets( optionsArr ) : 생성하려는 위젯을 options 객체 혹은 배열로 지정하여 해당 위젯을 생성.

optionsArr 설명

Property

설명

필수

unitHeight

좌표 상의 위젯 높이

O

unitWidth

좌표 상의 위젯 너비

O

x

위젯의 좌표 (x 값)

O

y

위젯의 좌표 (y 값)

O

buttonFormatter

위젯 타일틀 버튼을 설정.

  • useDefault: 설정된 경우 기본 버튼을 사용. (기본 버튼은 고정, 최소화, 최대화, 닫기 기능을 제공.)

  • id, className, useAPI, isCustom: useDefault가 설정되지 않은 경우 해당 ID(id)와 클래스(className)의 버튼이 생성되어 버튼을 클릭할 경우 useAPI에 지정한 함수를 실행. isCustom="true"인 경우 WidgetContainer에 onclickcustombtn 이벤트가 생성되어 개발자는 실행할 동작을 정의 가능.


fixed

위젯의 고정 여부. (기본 값: false)

고정된 위젯은 그 위치나 크기를 변경할 수 없다.


hasTitleBar

위젯의 타이틀바 생성 여부.

  • true: 생성.

  • false: 생성하지 않음. 타이틀바가 없기 때문에 타이틀바를 통한 이동 및 버튼을 사용할 수 없음. 또한 setTitle() 또는 getTitle()을 통한 접근도 불가능.


id

위젯 ID.

WidgetContainer 내부의 위젯들은 모두 고유한 ID를 가져야 함. 단, scope="true"인 경우 '_'는 사용 불가.

ID를 설정하지 않을 경우 WidgetContainer가 ID를 부여.


maximized

위젯의 최대화 여부.

maximizeFormatter가 반환한 설정에 따라 최대화 수행.

최대화된 위젯은 고정 상태로 전환하여 다른 위젯들 위에 표시. 이 경우, 최대화된 위젯과 덮인 위젯들은 서로 상호 작용할 수 없음.


maximizeFormatter

위젯의 최대화 설정을 반환할 함수 또는 함수의 이름.

최대화 설정 형식은 'top', 'bottom', 'left', 'right' 라는 속성을 가진 객체로 각각의 속성값은 해당 방향으로 늘어날 칸 수를 의미. 단, 속성값이 설정되어 있지 않거나 -1이라면, 해당 방향으로 최대 확장.

주어진 속성값이 해당 방향의 경계를 초과할 경우, 초과분만큼 반대쪽으로 확장

(기본 값: {top: -1, bottom: -1, left: -1, right: -1})


maximizeonfixed

true인 경우, fixed: true로 설정된 경우에도 우측 상단 버튼을 통한 화면 최대화가 가능


minimized

위젯의 최소화 여부.

최소화할 경우 타이틀만 표시됨.


minimizeonfixed

true인 경우, fixed: true로 설정된 경우에도 우측 상단 버튼을 통한 화면 최소화가 가능.


params

위젯 객체에 저장할 사용자 정의 데이터. (기본 값: undefined)

export 시에 같이 추출되어 후에 import 할 때 다른 위젯 설정들과 함께 복구됨.


scope

위젯 내부 WFrame의 scope 속성.

(기본 값: false)


src

위젯 내부 WFrame에 표시할 내용. (XML 파일)

값을 지정하지 않을 경우 빈 화면이 표시됨.


title

위젯의 타이틀


titleClass

위젯의 타이틀의 스타일 제어를 위한 클래스 명


$r_title(사용 예)
widgetContainer.addWidgets({
    id: "001",
    title: "Widget_Added",
    src : "widget.xml",
    scope: true,
    x: 0,
    y: 0,
    unitWidth: 1,
    unitHeight: 1
});

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WidgetContainer/addWidgets_WidgetContainer/)

YouTube 동영상 (https://youtu.be/TkJHyMY6jSc)

CSS 클래스를 적용하여 위젯 생성

addWidgets() 함수를 통해 위젯을 추가할 때 CSS 클래스를 정의하고 titleClass 속성에 정의한 CSS 클래스를 지정하여 각 위젯 별로 서로 다른 스타일을 적용할 수 있습니다.

$r_title(타이틀 스타일 적용 (예))
<head>
...
<script type="text/javascript"><![CDATA[
	widgetContainer1.addWidgets({
        	title : "위젯  0",
			...
			titleClass : "w2widget_red",
	});

	widgetContainer1.addWidgets({
		title : "위젯  1",
		...
		titleClass : "w2widget_red",
	});

	widgetContainer1.addWidgets({
		title : "위젯  2",
		...
		titleClass : "w2widget_red",
	});

 ]]></script>
</head>
<style>
	.w2widget_red{
		background-color: red;
		height: 50px;
		font-size: 30px;
		color: white;
	}
	
	.w2widget_orange{
		background-color: orange;
	}
	
	.w2widget_green{
		background-color: green;
	}
</style>

스타일 적용 후

타이틀 아이콘 이미지를 추가하여 위젯 생성

addWidgets() 함수를 사용하여 위젯을 추가할 때 위젯의 타이틀 아이콘 이미지를 동적으로 추가할 수 있습니다.

$r_title(클래스 지정 (예))
.w2widget_title_imageIcon1 {
    background-image: url("http://static.image.net/image_on.gif");
    background-repeat: no-repeat;
    width: 20px;
    height: 20px;
}
$r_title(사용 예)
ui_wgc_main.addWidgets({
    id: "widget" + scwin.count,
    title: "위젯" + scwin.count,
    src: "WidgetContainer_sub1.xml",
    scope: true,
    x: 0,
    y: 0,
    unitWidth: 1,
    unitHeight: 1,
    userIconClass: "w2widget_title_imageIcon1" // 타이틀 아이콘 이미지 
});

위젯의 타이틀 바를 표시하거나 숨긴 채로 위젯 생성

아래의 API를 사용하여 WidgetContainer에 포함된 전체 및 개별 위젯의 타이틀 표시 여부를 제어할 수 있습니다.

$r_title(개별 위젯 정적 제어)
addWidgets([{
    ...
    hasTitleBar: false,
    ...
}]);
$r_title(개별 위젯 동적 제어)
showTitle();
$r_title(전체 위젯 동적 제어)



enableWidgetTitle();

부모 WFrame의 Scope를 상속하는 위젯으로 생성

WFrame을 포함하는 화면을 WFrame 타입의 위젯으로 생성할 경우, 위젯이 포함한 WFrame의 소스(src) 화면에서 가장 가까운 부모의 WFrame(즉, WFrame 위젯)의 객체 및 영역에 접근하도록 허용할 수 있습니다.

addWidgets() 함수로 위젯을 생성할 때 options.scopeInherit 옵션을 아래와 같이 설정하십시오.

$r_title(사용 예)
var options = {
    id: "widget1",
    title: "widget1",
    titleClass: "w2widget_blue",
    src: null,
    scope: true,
    x: 0,
    y: 1,
    unitWidth: 1,
    unitHeight: 1,
    scopeInherit: "all"
};

widgetContainer1.addWidgets(options);

scopeInherit="none"

scopeInherit="api"

scopeInherit="all"

scopeInherit="component"

위젯 생성 후 서브미션 상태 창 표시

addWidgets() 함수로 생성한 WFrame 위젯의 src 화면이 서브미션을 포함할 경우, 서브미션 실행 시 표시되는 상태창을 위젯 내부에 표시할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WidgetContainer/processMsgFrame_WidgetContainer/)

YouTube 동영상 (https://youtu.be/rzhAmSBddS4)

위젯 버튼

위젯 상단의 버튼을 잉요하여 위젯을 이동하거나 크기를 변경할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WidgetContainer/move_resize_widgets_WidgetContainer.xml)

YouTube 동영상 (https://youtu.be/57_mj1K0qy0)

Import, Export, 삭제

전체 위젯

importWidgets() & exportWidgets()

현재 존재하는 위젯 전체를 export하거나, 새로운 위젯 여러 개를 추가할 수 있습니다.

관련 함수

importWidgets(): 현재 존재하지 않는 여러 개의 위젯을 WidgetContainer에 추가.

exportWidgets(): 현재 WidgetContainer에 포함된 모든 위젯을 내보냄.

$r_title(export)

var jsonArr = widgetContainer1.exportWidgets();

exportWidgets() & removeWidgetsAll()

exportWidgets();removeWidgetsAll(); 함수를 사용하여 현재 생성된 모든 위젯을 반환하거나 삭제할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WidgetContainer/exportWidgets_removeWidgetsAll_WidgetContainer.xml)

YouTube 동영상 (https://youtu.be/5NzApu6W4kA)

개별 위젯

기존에 존재하는 위젯 한 개를 export하거나 역시 이미 존재하는 위젯 한 개를 import할 수도 있습니다.

관련 함수

exportWidget() : 해당 ID의 위젯을 내보냄.

importWidget(): 현재 존재하는 위젯 ID와 위젯의 정보를 JSON으로 받아 WidgetContainer에 추가.

$r_title(사용 예)
widgetContainer.importWidget('widget1',  { 
	id: 'widget1',
	src:"widget.xml",
	scope:true,
	x:0,
	y:0,
	title:"개별 import",
	}
);

접근

개별 접근

관련 함수

getWidgetById() : ID에 해당하는 위젯을 반환. (존재하지 않은 경우 null을 반환.)

getWidgetByTitle() : Title에 해당하는 위젯을 반환. (존재하지 않은 경우 null을 반환.)

$r_title(사용 예)
var widget0 = widgetContainer1.getWidgetById('widget0');
$r_title(사용 예)
var widget0 = widgetContainer1.getWidgetByTitle('위젯0');

위젯 내부 객체에 접근

아래의 위젯 함수를 사용하여 위젯 내부 객체에 접근할 수 있습니다.

관련 함수

setSrc()

getObj()

getObjList()

사용법은 아래와 같습니다.

$r_title(사용 예)

var widget0 = widgetContainer1.getWidgetById('widget0');
widget0.setSrc('other_page.xml');
var myObj = widget0.getObj('myObj');
var objList = widget0.getObjList();
console.log(myObj);
console.log(objList);

상호 참조

WFrame의 scope="true" 설정을 사용할 경우 WidgetContainer 및 포함된 위젯 간의 상호 참조가 가능합니다.

$p.widget() 객체는 위젯을 위한 전용 함수입니다. 위젯으로 사용되는 화면에 대해서만 이 객체가 존재하며 아래 함수를 통해 위젯으로 사용된 화면의 정보를 얻을 수 있습니다.

관련 함수

$p.widget.getWidgetId(): 화면이 위젯으로 사용된 경우 사용된 위젯 ID를 반환.

$p.widget.getWidgetContainerId(): 해당 위젯을 관리하는 WidgetContainer의 ID를 반환.

$p.widget.getWidgetContainer(): 해당 위젯을 관리하는 WidgetContainer 객체를 반환.

if($p.widget) {
        dataMap1.set( "key1" , $p.widget.getWidgetId() );
    } else {
        dataMap1.set( "key1" , "widget아님" );
    }
자주 사용하는 함수

$p: Utility 성격의 기능 제공.

$p.data(): DataCollection을 제어.

아래는 WFrame의 scope="true" 설정을 사용할 때 위젯 내에서 Submission을 실행하는 예제입니다. 즉, $p.xxx 형태의 함수를 사용하십시오. $p.xxx 형태의 함수를 사용하면 메인 영역에서 submission을 탐색합니다.

$r_title(위젯 내부의 Submission 실행 (예))
scwin.startInit = function() {
    $p.executeSubmission("submission1");
};

scwin.submission1_submitdone = function(e) {
    alert('done');
};

scwin.startInit();

위젯 제어

타이틀 텍스트를 동적으로 변경

아래의 함수를 사용하여 위젯 타이틀의 텍스트를 동적으로 변경할 수 있습니다.

관련 함수

getTitle()

setTitle()

$r_title(사용 예)
var widget0 = widgetContainer1.getWidgetByTitle('widget0');
var title = widget0.getTitle();  // 'widget0'
title += '_MODIFIED';
widget0.setTitle(title);  // 'widget0_MODIFIED'

위젯 최대화/최소화

각 위젯의 타이틀을 더블 클릭할 경우 화면이 최대화되거나 최소화됩니다. 단, 고정핀이 활성화된 위젯의 크기는 변경되지 않습니다.

위젯 최대화 금지

preventMaximizeByTitle="true" 속성 설정을 추가하면, 사용자가 타이들을 더블-클릭할 때 위젯이 최대화되는 것을 방지할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WidgetContainer/preventMaximizeByTitle_WidgetContainer.xml)

YouTube 동영상 (https://youtu.be/nQ-JJe8ku9U)

타이틀 표시 & 이동 & 리사이징

WidgetContainer에 포함된 모든 위젯의 이동 여부를 제어할 수 있습니다.

관련 API


개별 위젯

WidgetContainer 내 전체 위젯

정적 제어

N/A

widgetMove

동적 제어

N/A

enableWidgetMove()

아래의 API를 사용하여 WidgetContainer에 포함된 전체 및 개별 위젯의 리사이징 허용 여부를 결정할 수 있습니다.

관련 API


개별 위젯

WidgetContainer 내 전체 위젯

정적 제어

N/A

widgetResize

동적 제어

setResizable()

enableWodgetResize()

YouTube 동영상 (https://youtu.be/2-K7dD7OVHs)

예제

  1. 위젯을 추가하기 전 WidgetContainer의 ID를 지정하고, 좌표계를 생성하기 위해 colsunitHeightPixel을 정의하십시오.

$r_title(WidgetContainer 정의 (예))
<w2:widgetContainer id="widgetContainer1" minUnitWidth="1" widgetMove="" cols="8" horizontalMargin="0" verticalMargin="0" params="false" widgetResize=""mode="pushpull"threshold="null"style="width:100%;height:100%;margin: 20px;" unitHeightPixel="200"></w2:widgetContainer>

cols="8" & unitHeightPixel="200"인 경우 아래와 같은 좌표계가 생성됩니다.

생성된 좌표계 (cols="8" & unitHeightPixel="200")

  1. <script> 탭에 아래와 같은 스크립트를 작성하여 위젯을 추가합니다.

$r_title(추가 예)

<script type="text/javascript">
	<![CDATA[
        widgetContainer1.addWidgets({
            	id : "widget0",
                title : "위젯 0",
                src : "widget0.xml",
                scope : true,
                x : 0,
                y : 0,
                unitWidth : 2,
                unitHeight : 1
            });

            widgetContainer1.addWidgets({
            	id : "widget1",
                title : "위젯  1",
                src : null,
                scope : true,
                x : 1,
                y : 1,
                unitWidth : 1,
                unitHeight : 1
            });

            widgetContainer1.addWidgets({
            	id : "widget2",
                title : "위젯  2",
                 src : "widget.xml",
                scope : true,
                x : 3,
                y : 0,
                unitWidth : 2,
                unitHeight : 2
            });
	]]>
</script>
  1. 저장 후 브라우저를 갱신하여 위젯이 추가되는지 확인하십시오.

WidgetContainer 생성 결과 (세 개의 위젯 포함)

  1. 각 위젯 우측 상단의 버튼을 이용하여 아래와 같은 위제 제어 동작이 가능한지 확인합니다.

WindowContainer

WindowContainer

컴포넌트 설명

요약

툴바를 이용하여 여러 개의 윈도우를 제어

기능 및 특징

  • 하나의 부모 윈도우가 여러 개의 자식 윈도우가 포함하고, 윈도우간 계층 구조를 갖는 MDI(Multiple Document Interface)를 지원

YouTube 동영상

윈도우 생성

아래 예제와 같이 createWindow() 함수를 사용하여 윈도우를 생성할 수 있습니다.

$r_title(윈도우 생성 예시)
windowContainer1.createWindow({
    "title": "Red",
    "src": "sub_red.xml",
    "windowId": "window1",
    "frameMode": "wframe"
});

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/createWindow_WindowContainer/)

YouTube 동영상 (https://youtu.be/eVVuQtrCb0I)

윈도우 프레임 종류 (frameMode)

createWindow() 함수를 사용하여 새 창을 생성할 경우 아래와 같이 frameMode 옵션을 통해 새로 지정하는 창의 프레임 종류를 결정할 수 있습니다.

사용 형식

  • createWindow( title , iconUrl , src , windowTitle , windowId ,

openAction , closeAction , windowTooltip, frameMode );

설명

새 창 생성 시 사용할 프레임 종류 지정 (frameMode)

  • iframe

  • wframe

frameMode 설정

옵션

설명

frameMode="iframe"

  • IFrame으로 window를 생성.

  • Scope 기능 사용할 수 없음.

frameMode="wframe"

  • WFrame으로 window를 생성.

  • Scope 기능 지원. (window는 scope로 분리되어 생성됨.)

윈도우 생성 및 고정

윈도우 생성 및 고정

항목

설명

관련 함수

  • 생성: createWindow()

  • 고정: fixWindow()

  • 고정 취소: unfixWindow()

  • 고정한 채로 생성: createWindow()options.fixed="true"

YouTube 동영상 (https://youtu.be/60Az2lCc_10)

dataObject 옵션에 JSON 객체를 지정하여 Window 생성시 호출할 페이지의 파라미터를 전달할 수 있습니다. 호출된 페이지는 $p.getParameter()로 반환할 수 있습니다. 아래 예제의 경우 $p.getParameter() 함수를 사용하여 호출된 페이지를 반환할 수 있습니다.

$r_title(동적 Window 생성)
var obj = {
    "title": "wframeWindow1",
    "windowId": "window1",
    "src": "/ui/window1.xml",
    "frameMode": "wframe",
    "dataObject": {
        "type": "json",
        "name": "pageParam",
        "data": {
            "name": "WebSquare",
            "addr": "서울시"
        }
    }
};
windowContainer1.createWindow(obj);

부모 WFrame의 Scope를 상속하는 윈도우로 생성

WFrame을 포함하는 화면을 wframe 윈도우로 생성할 경우, 윈도우가 포함한 WFrame의 소스(src) 화면에서 가장 가까운 부모의 WFrame(즉, wframe 윈도우의) 객체 및 영역에 접근하도록 허용할 수 있습니다.

createWindow() 함수로 wframe 윈도우를 생성할 때 scopeInherit 옵션을 아래와 같이 설정하십시오.

$r_title(사용 예)
var winObj = {
    title: "window",
    src: "source.xml",
    windowTitle: "Title",
    windowId: "001",
    frameMode: "wframe",
    defaultWidth: "400",
    defaultHeight: "300",
    scopeInherit: "all"
}
windowContainer1.createWindow(winObj);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/createWindow_scopeInherit_WindowContainer/)

scopeInherit="none"

scopeInherit="api"

scopeInherit="all"

scopeInherit="component"

윈도우 기본 크기 지정

createWindow() 함수를 사용하여 윈도우를 생성할 경우, defaultWidth 옵션 및 defaultHeight 옵션을 사용하여 기본 너비 빛 높이를 지정할 수 있습니다.

$r_title(사용 예)
var winObj = {
    ...
    defaultWidth: "600",
    defaultHeight: "300",
    ...
}
windowContainer1.createWindow(winObj);

처음 윈도우를 생성할 경우, 아래와 같이 최대 크기의 윈도우가 생성됩니다.

초기 생성 시

윈도우 크기 복원 아이콘을 클릭할 경우, 아래와 같이 defaultWidthdefaultHeight 옵션으로 지정한 크기로 조정됩니다.

윈도우 크기 복원 아이콘 클릭 후

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/createWindow_defaultWidth_defaultHeight_WindowContainer/)

YouTube 동영상 (https://youtu.be/gx3a9cI8WRg)

윈도우 크기에 따른 적응형 디자인 적용

createWindow() 함수를 사용하여 팝업을 생성할 때 윈도우의 프레임 모드(frameMode)가 WFrame이고 윈도우의 소스(src) 화면이 적응형 디자인을 사용하는 경우, adaptiveFrame 옵션을 true로 지정하면 윈도우의 크기에 따라 소스 화면에 적응형 디자인을 적용할 수 있습니다. 즉, 윈도우의 크기를 변경할 경우, 윈도우의 크기에 따라 팝업에 포함된 화면을 적응형으로 표시할 수 있습니다. 별도로 adaptiveFrame 옵션을 설정하지 않을 경우, 윈도우에 포함된 화면은 브라우저 크기에 따라 적응형으로 표시됩니다.

$r_title(사용 예)
var winObj = {
    title: "window",
    src: "adaptive_adaptiveThreshold_TableLayout.xml",
    windowTitle: "Title",
    windowId: "001",
    frameMode: "wframe",
    defaultWidth: "400",
    defaultHeight: "300",
    adaptiveFrame: true
}
windowContainer1.createWindow(winObj);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/createWindow_adaptiveFrame_WindowContainer/)

YouTube 동영상 (https://youtu.be/fFm-oDSJxxk)

윈도우 생성 시 dataObject를 통한 파라미터 전달

createWindow() 함수를 통해 추가하는 윈도우에 dataObject를 통해 파라미터를 전달할 수 있습니다. 생성된 윈도우에서는 $p.getParameter() 함수를 통해 전달받은 파라미터 확인 가능합니다.

$r_title(createWindow() 함수로 윈도우를 생성할 때 파라미터 전달 (예시))
var rowJSON = {
  "Product Info": {
    "Origin": "Korea",
    "Manufacturer": "Inswave",
    "Type": "Software"
  },
  "Region": "Seoul",
  "Carrier": true
};

var dataObject = {
  "type": "json",
  "name": "param",
  "data": rowJSON
};

var obj = {
  "title": "Test",
  "windowID": "001",
  "frameMode": "wframe",
  "src": "src.xml",
  "dataObject": dataObject
};

windowContainer1.createWindow(obj);
$r_title(윈도우에서 전달받은 파라미터 확인 (예시))
var paramData = $p.getParameter("param");
var data = JSON.stringify(paramData);
alert(data);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/getParameter_$p_createWindow_WindowContainer/)

YouTube 동영상 (https://youtu.be/XYuqgVugfEo)

윈도우 생성 후 서브미션 상태 창 표시

상태창 표시

WFrame으로 생성한 윈도우의 src 화면이 서브미션을 포함할 경우, 서브미션 실행 시 표시되는 상태창을 WFrame 탭 내부에 표시할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/processMsgFrame_WindowContainer/)

YouTube 동영상 (https://youtu.be/9_SgibAMgw4)

상태창 소스 변경

Config.xml 파일의 <processMsgFrameURL> 항목 설정을 변경하여 해당 상태창의 소스를 변경할 수도 있습니다.

$r_title(config.xml 설정 예)
<WebSquare>
  ...
      <processMsgFrameURL value="/message/processMsg.xml"/> 
  ... 
</WebSquare>

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/processMsgFrameURL_config_processMsgFrame_WindowContainer/)

YouTube 동영상 (https://youtu.be/PBFSg8Kpqzk)

윈도우 표시

정렬 (setArrangeWindows())

setArrangeWindows() 함수를 사용하여 윈도우를 네 가지(vertical, horizontal, cascade, sequential) 방법으로 정렬할 수 있습니다.

$r_title(사용 예)
// (예제 1) 
// 세로로 window1, window3, window2가 하나씩 열림
windowContainer1.setArrangeWindows("vertical", ["window1", "window3", "window2"]);


// (예제 2) 
// 가로로 window2, window1, window3가 하나씩 열림
windowContainer1.setArrangeWindows("horizontal", ["window2", "window1", "window3"]);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/setArrangeWindows_WindowContainer/)

YouTube 동영상 (https://youtu.be/J0qlR_D3pWI)

자동 정렬 (autoArrange)

WindowContainer에서 여러 개의 윈도우를 정렬해서 표시한 후 특정 윈도우를 닫을 경우, 남아 있는 윈도우를 다시 정렬할 수 있습니다. autoArange 속성을 사용하십시오.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/autoArrange_WindowContainer/)

YouTube 동영상 (https://youtu.be/ZuPDYmLdMM0)

정렬 아이콘 위치 설정 (controlIconPosition)

controlIconPosition 속성을 사용하여 윈도우 정렬 아이콘의 표시 위치를 결정할 수 있습니다. 단, controlIconPosition 속성을 사용할 경우, useNameContainer="true" 설정을 추가해야 합니다.

controlIconPosition

"left" (기본 값) : 스크롤링 화살표는 양 옆에, 정렬 아이콘은 왼쪽에 표시.

"right" : 스크롤링 화살표는 양 옆에, 정렬 아이콘은 오른쪽에 표시.

"allright" : 스크롤링 화살표 모두 오른쪽에, 정렬 아이콘 역시 모두 오른쪽에 표시.

윈도우 정렬 아이콘 (controlIconPosition="allright")

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/controlIconPosition_useNameContainer_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/UX4YEp2obi8)

최대 윈도우 수 동적 변경 (setWindowMaxNum())

setWindowMaxNum함수를 이용하면 WindowContainer에서 열 수 있는 최대 윈도우 개수를 동적으로 변경할 수 있습니다.

윈도우를 항상 열린 상태로 유지 (stopMinimizeOnNameLayer)

stopMinimizeOnNameLayer="true" 설정을 적용하면, 네임레이어 클릭에 상관 없이 윈도우를 항상 열린 상태로 유지할 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/stopMinimizeOnNameLayer_WindowContainer/)

YouTube 동영상 (https://youtu.be/2TI-A0_cbog)

윈도우 최대화

WindowContainer에서 생성한 윈도우는 최대화 버튼을 클릭하거나 윈도우 타일을 더블-클릭하여 최대화할 수 있습니다.

최대화 버튼 및 윈도우 타일

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/window_maximization_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/HlxA08cFll4)

윈도우 최소화

WindowContainer에서 생성한 윈도우는 최소화 버튼을 클릭하거나 네임 레이어를 클릭하여 최소화할 수 있습니다.

최소화 버튼 및 네임 레이어

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/window_minimization_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/5VsjK7ob3qI)

윈도우 드래깅 시 윈도우 표시 (windowMoveType)

windowMoveType="overflow"인 경우, WindowContainer 밖으로 윈도우를 드래깅 하고 마우스 커서 위치에 따라 윈도우를 표시할 수 있습니다. 혹은, windowMoveType="restrict" 설정을 사용할 경우, WindowContainer 내에서만 윈도우를 드래깅할 수 있습니다.

windowMoveType

구분

마우스 드래깅을 통해 윈도우가 WindowContainer 밖으로 나갈 때, 드래깅된 윈도우의 위치를 결정.

설명

  • "restrict" (기본 값) : 영역 밖으로 나가지 않고 영역 안쪽으로 제한.

  • "overflow" : 영역 밖의 위치로 이동.

windowMoveType="overflow"

windowMoveType="restrict"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/windowMoveType_WindowContainer/)

YouTube 동영상 (https://youtu.be/bRaPG5A6s9U)

현재 선택된 윈도우 구분

w2window_selected 스타일 클래스를 지정하여 선택된 윈도우를 나머지 윈도우로부터 구분하는 스타일을 지정할 수 있습니다.

$r_title(사용 예)
<style>.w2window_selected {border: solid 2px green;}</style>

위의 스타일을 적용하면 아래와 같이 선택한 윈도우가 초록색 선으로 구분됩니다.

사용 예 – .w2window_selected {border: solid 2px green;}

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/w2window_selected_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/IwIiNZJvo1c)

네임 레이어

윈도우 순서 변경 (nameLayerMove)

네임레이어 이동

항목

설명

관련 속성

  • nameLayerMove="false" (기본 값) : 네임 레이어 상의 윈도우 순서 변경 불가능.

  • nameLayerMove="true" : 네임 레이어 상의 윈도우 순서 변경 가능.

YouTube 동영상 (https://youtu.be/Cnp_VCf7WN8)

윈도우 고정 (nameLayerMove & nameLayerRearrange)

nameLayerMove="true"nameLayerRearrange="true" 설정을 추가할 경우, 핀 버튼(useFixButton="true")으로 고정한 윈도우를 네임레이어의 맨 앞으로 이동할 수 있습니다.

윈도우를 고정하지 않은 상태에서는 아래와 같이 "aaa" "bbb" "ccc" 순서로 윈도우 타이틀이 표시됩니다.

고정된 윈도우가 없는 경우

위의 사태에서 "bbb" 윈도우를 핀으로 고정하면 "bbb" 윈도우 타이틀이 네임레이어 상에서 제일 앞으로 이동합니다.

"bbb" 윈도우를 핀으로 고정한 경우

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/useFixButton_nameLayerRearrange_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/BX23wkAgGtQ)

스크롤 버튼을 통한 윈도우 활성화 (changeActiveWindow="true")

changeActiveWindow="true" 속성 설정을 적용하면 네임 레이어 상의 스크롤 버튼을 클릭하여 윈도우를 선택하고 활성화할 수 있습니다.

네임 레이어 상의 스크롤 버튼

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/changeActiveWindow_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/Qcdc1Xg2Gx8)

윈도우 순서 변경

setWindowTabOrder() 함수를 사용하여 네임 레이어 상의 윈도우 탭 순서를 변경할 수 있습니다.

$r_title(사용 예)
// 윈도우 탭의 순서를 인덱스가 2, 1, 0 차례로 변경.
wdc_main.setWindowTabOrder([2,1,0]);

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/setWindowTabOrder_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/I-eHy0fIXIA)

윈도우 닫기

전체 윈도우 닫기

항목

설명

관련 속성

  • closeType: 전체 창 닫기를 할 경우 고정된 창은 제외하고 전체 닫기를 수행.

  • useFixButton: 고정핀 생성.

YouTube 동영상 (https://youtu.be/8Hx2sBDwxRE)

특정 윈도우를 제외한 나머지 윈도우 닫기 (closeOthers())

closeOthers() 함수를 사용하여 현재 활성화된 윈도우, 혹은 주어진 windowIDuniqueID에 해당하는 윈도우를 제외한 모든 윈도우를 닫을 수 있습니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/closeOthers_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/456lXCr-O0Y)

윈도우 닫기 방지

useFixButton="true" 설정을 사용할 경우 네임 레이어에 표시되는 각 창의 이름 옆에 창 닫기 방지 버튼을 표시할 수 있습니다.

또한 useFixbutton="true"closeType="noneFixedWindow" 속성과 함께 사용할 경우, 전체 창닫기 버튼을 통해 창 닫는 방법을 설정할 수 있습니다. 즉, 전체 창닫기 버튼을 클릭해도 닫히지 않을 창을 창 닫기 받지 버튼으로 설정할 수 있습니다.

fixWindow()unfixWindow()함수를 사용할 경우, 창 닫기 방지 버튼을 동적으로 활성화/비화성화할 수 있습니다.

소스(src) 화면 변경

호출할 페이지의 경로를 동적으로 바꿀 경우 getFrame() API를 이용하십시오.

$r_title(예제)
windowContainer1.getFrame("window1").setSrc(
        "/ui/tab2.xml", {
            "dataObject": {
                "type": "json",
                "name": "pageParam",
                "data": {
                    "name": "WebSquare",
                    "addr": "서울시"
                }
            }
        );

IFrame 윈도우의 뒤로가기(History) 제어

WindowContainer가 IFrame을 포함할 경우, IFrame 화면의 뒤로가기를 제어할 수 있습니다. spaReplaceHistory="true"로 설정할 경우 뒤로 가기 버튼을 클릭하면 각 IFrame에 담긴 화면이 아닌 브라우저 전체가 이젠 페이지를 표시합니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/frameMode_spaReplaceHistory_WindowContainer/)

YouTube 동영상 (https://youtu.be/OfsxRRlZ8cI)

다른 윈도우 참조

WFrame으로 생성한 window는 getWindow() (기존의 getWindowbyWindowID()와 동일) 및 $p.parent() API를 통해 참조할 수 있습니다.

window1의 scwin.test1(); 실행하기

스크립트 위치

접근 방법

main

windowContainer1.getWindow("window1").scwin.test();

wframe1

$p.parent().windowContainer1.getWindow("window1").scwin.test();

윈도우 인덱스 확인

getSelectedIndex() 함수를 사용하면 선택한 윈도우의 인덱스를 확인할 수 있습니다. createWindow() 함수를 이용하여 윈도우를 생성할 경우, 윈도우를 생성할 때마다 인덱스가 "1"씩 증가하고, 윈도우를 닫으면 인덱스가 초기화됩니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/getSelectedIndex_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/AteLPAoIYK8)

특정 윈도우에 포커스 주기

setFocus() 함수를 사용하면 윈도우 ID나 윈도우 인덱스를 파라미터로 지정하여, 해당 윈도우에 포커스를 줄 수 있습니다. 윈도우 ID 및 윈도우의 인덱스는 getSelectedWindowId() 함수와 getSelectedIndex() 함수를 사용하여 확인할 수 있습니다.

$r_title(사용 예)
// index="0" 윈도우에 포커스 주기
windowContainer1.setFocus(0);

// windowId="window_1" 윈도우에 포커스 주기
windowContainer1.setFocus("window_1");

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/setFocus_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/Q7pDyJzoClY)

팝업

지정한 프레임 영역에 팝업 표시

frameMode="wframe"로 생성한 WFrame 윈도우에서 $p.pen.popUp() 함수를 통해 팝업을 생성할 경우, 팝업을 표시한 프레임을 지정할 수 있습니다. $open.popUp() 함수의 options.frameModal 옵션을 사용하십시오.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/frameMode_windowContainer_window_openPopup_frameModal_$p/)

YouTube 동영상 (https://youtu.be/Ch-k_-Vo8Kk)

참고 자료

프레임 모달 팝업 (options.frameModal) 생성 참고.

부모 – 자식 팝업 닫기

$p.openPopup() 함수를 사용하여 탭 화면에서 팝업을 생성하고, 부모 팝업을 속하는 모든 자식 팝업과 함께 닫을 수 있습니다.

  1. 단, WFrame 윈도우에서만 동작합니다.

  2. 윈도우 생성 시 frameMode="wframe"으로 생성하십시오.

  3. 윈도우의 frameModal 속성을 "true"로 설정하십시오.

$r_title(WFrame 윈도우 생성 예)
windowContainer1.createWindow({
    "title": "PopUp Closing",
    "windowTitle": "PopUp Closing",
    "src": "01_wframe_frameModal.xml",
    "windowId": "window01",
    "frameMode": "wframe",
    "frameModal": "true"
});

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/createWindow_frameModal_WindowContainer/)

YouTube 동영상 (https://youtu.be/kTIlquVF8yw)

툴바

윈도우 목록 확인용 버튼 (useWindowScrollButton)

useWindowScrollButton 속성을 사용하여 현재 윈도우 목록을 확인할 수 있는 버튼을 툴바에 표시할 수 있습니다. 또한, useWindowScrollButton="true" 설정을 통해 목록을 표시할 경우, windowScrollVisibleRowNum 속성을 통해 목록에 표시할 항목 수를 지정할 수 있습니다

useWindowScrollButton="true" windowScrollVisibleRowNum="4"

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/useWindowScrollButton_windowScrollVisibleRowNum_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/woovMy277dg)

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/useWindowScrollButton_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/QyALhNlbbWk)

이벤트

이벤트 로딩 순서

WindowContainer는 onwindowloadonwindowunload 이벤트를 지정할 수 있습니다. WindowContainer의 onwindowload 이벤트는 window 화면의 initScriptpostScript 호출 이후에 발생합니다.

ondragstart & ondragend

윈도우 드래깅 시작할 때 ondragstart 이벤트가 발생하고, 드래깅이 종료될 때 ondragend 이벤트가 발생합니다. 두 이벤트 모두 발생할 때 드래깅되는 윈도우의 ID를 반환합니다.

예제 파일


인터넷에서 다운로드 혹은

WEBSQUARE_DEV_PACK의 GUIDE 프로젝트에서 보기

(/WindowContainer/ondragstart_ondragend_WindowContainer.xml)

YouTube 동영상 (https://youtu.be/yPEr8hbp158)