10.프로젝트 편집 | Environment, FDL, InitValueDefiniton

Edit

10.1Environment

Environment는 Application Information과 별도로 개별 화면을 처리하기 위한 설정을 정의합니다. ScreenDefinition, Variables, Cookies 항목을 지정하며 별도 스크립트를 작성할 수 있습니다.

10.1.1ScreenDefinition

프로젝트 생성 시 지정한 Screen 정보에 대한 신규 항목 추가, 기존 항목의 수정 및 삭제 기능을 제공합니다. 편집한 내용은 XML 파일로 저장합니다. [Preview relation with App] 영역에서는 Screen 정보와 Application이 어떻게 연결되어 있는지 직관적으로 확인할 수 있습니다.

각 스크린에서는 기본 속성을 Environment에서 지정한 속성값을 덮어쓸 수 있습니다. 스크린에서 지정한 속성이 우선적으로 적용됩니다.

Screen Refactoring

생성된 Screen의 id 속성값을 변경하면 기존 id로 참조 중인 Application을 찾아 변경된 값으로 변환해주는 Screen 리팩토링 기능을 제공합니다.

10.1.2Variables

Environment 설정에 포함할 변수를 추가, 수정, 삭제하는 기능을 제공합니다. 여기에서 설정한 변수는 Application Information과 상관없이 공통으로 사용할 수 있습니다.

스크립트에서 변수를 사용하거나 수정, 삭제할 때는 아래와 같이 사용합니다.

nexacro.getEnvironmentVariable("Env_Variable0");
nexacro.setEnvironmentVariable("Env_Variable0", 30);
nexacro.removeEnvironmentVariable("Env_Variable0");

10.1.3Cookies

Environment 설정에 포함할 쿠키를 추가, 수정, 삭제하는 기능을 제공합니다.

스크립트에서 쿠키를 사용할 때는 아래와 같이 사용합니다.

var vCookie0 = nexacro.getCookieVariable("Cookie0");
var vCookie1 = nexacro.getCookieVariable("Cookie2", true);

nexacro.setCookieVariable("Cookie0", "test");
nexacro.setCookieVariable("Cookie1", "test", true);

secure 속성값을 true로 설정한 쿠키는 HTTPS 프로토콜 상에서 암호화된 요청일 경우에만 전송됩니다.

10.1.4HTTP Header

Environment 설정에 포함할 HTTP Header를 추가, 수정, 삭제하는 기능을 제공합니다. HTTP 통신 시 Header 영역에 변수가 추가되어 처리됩니다.

스크립트에서는 아래와 같이 변수를 추가하거나 확인, 삭제할 수 있습니다.

nexacro.setHTTPHeaderVariable("Server", "nginx/1.4.6 (Ubuntu)");
nexacro.getHTTPHeaderVariable("Server");
nexacro.removeHTTPHeaderVariable( "Server" );

10.1.5Accessibility

앱에서 접근성 속성을 활성화하기 위해서는 Environment 속성 중에서 enableaccessibility 속성값을 true로 설정해주고 TypeDefinition 모듈 항목에 Accessibility.json 파일을 추가해주어야 합니다. enableaccessibility 속성값만 true로 지정한 상태에서 앱을 실행하면 Accessibility.json 파일을 추가해주어야 한다는 경고 메시지를 표시하고 접근성 속성이 활성화되지 않습니다.

10.2FDL (Form Definition Language)

FDL 편집기는 Project Explorer의 컨텍스트 메뉴에서 [Edit], [Edit Source], [Edit Script]를 선택하여 뷰로 열 수 있습니다.

10.2.1Design

컴포넌트를 디자인하고 속성을 편집하며, Data를 바인딩할 수 있습니다. 디자인 화면 오른쪽 하단에 화면 크기를 조절할 수 있는 기능을 제공합니다.

디자인 화면은 탭 위치에서 줌 기능을 지원합니다.

Component 툴바에서 [Move] 항목을 선택하면 Form의 기준 좌표를 이동할 수 있습니다. 예를 들어 Form 바깥 영역에 있는 컴포넌트를 표현하고자 한다면 [Move] 아이콘을 선택해 Form의 기준 좌표를 이동하고 원하는 위치에 컴포넌트를 배치할 수 있습니다. 기준 좌표를 이동하면 눈금자도 마이너스 좌표계를 표시합니다.

Register TypeDefinition

다른 프로젝트에 있는 Form을 가져와 열어보는 경우 특정 컴포넌트가 현재 프로젝트의 TypeDefinition에 등록되어 있지 않을 수 있습니다. 그런 경우에는 해당 컴포넌트가 TypeDefinition에 등록되지 않은 상태를 표시해주고 바로 등록할 수 있도록 기능을 제공합니다.

화면에 표시되는 컴포넌트인 경우에는 "undefined"라는 문구와 함께 컴포넌트명이 붉은색으로 표시됩니다. 이때 컴포넌트를 선택할 수 있지만 관련 속성을 보여주지 않고 크기를 변경할 수 없습니다.

[Invisible Object] 영역에 표시되는 오브젝트인 경우에는 물음표 아이콘이 표시되며 선택 시 속성창에 관련 속성을 보여주지 않습니다.

TypeDefinition에 등록되지 않은 컴포넌트를 마우스 오른쪽 버튼으로 클릭하면 Register TypeDefinition이라는 팝업 메뉴가 나타납니다. 해당 항목을 선택하고 나타나는 팝업창에서 ClassName을 선택하면 TypeDefinition 등록이 처리됩니다.

10.2.2Source

FDL 파일의 소스를 확인할 수 있으며, 직접 편집할 수 있습니다.

10.2.3Script

FDL 파일의 스크립트를 확인할 수 있으며, 직접 편집할 수 있습니다.

Go to Declaration

스크립트 편집창에서 컴포넌트나 오브젝트의 메소드 위에 커서를 놓고 오른쪽 마우스를 클릭하면 컨텍스트 메뉴 항목 중 [Go to Declaration]이라는 항목을 확인할 수 있습니다.

메뉴에서 해당 기능을 선택하면 연결된 함수 위치로 이동하거나 include 한 스크립트 내에 있는 함수인 경우에는 해당 파일을 열고 해당 위치로 이동합니다. 혹 같은 이름의 함수가 중복되어 발견된 경우에는 해당 함수를 정의한 파일 목록을 표시합니다.

목록 중에서 확인하고자 하는 코드를 선택하면 해당 코드를 넥사크로 스튜디오에서 확인할 수 있습니다.

함수가 아닌 속성을 선택한 경우에는 아래와 같은 경고 메시지가 나타납니다.


Open Include File

스크립트 내 include 문을 사용해 다른 스크립트를 참조하는 경우에는 해당 스크립트 파일을 바로 열어주는 기능을 제공합니다. include 문 위치에서 오른쪽 마우스를 클릭해 컨텍스트 메뉴를 실행하고 [Open Include File - XX.xjs] 항목을 선택합니다.

10.3InitValueDefiniton

InitValueDefiniton 파일은 앱 내에서 오브젝트 속성값에 대한 최초값을 설정합니다. 파일은 XML 형식으로 제공됩니다. InitValue 편집기는 Resource Explorer에서 InitValueDefiniton 파일을 선택하고 컨텍스트 메뉴에서 [Edit]를 선택해 열 수 있습니다.

TypeDefinition 파일에 등록된 오브젝트 목록이 좌측에 표시됩니다. 오브젝트를 선택하고 컨텍스트 메뉴에서 [Add] 항목을 선택해 InitValue를 추가할 수 있습니다. 추가된 InitValue를 선택하면 오른쪽 편집기에서 값을 지정합니다.

추가된 InitValue 항목은 XML 형태의 파일로 저장됩니다. [Source]탭을 선택하면 작성된 파일을 확인해볼 수 있습니다.

설정한 InitValue를 적용하려면 먼저 Environment 속성 중 initvaluefileid 속성값을 지정합니다.

InitValue를 적용할 컴포넌트를 선택하고 속성창에서 initvalueid 속성값을 지정합니다. 속성값이 적용되면 해당하는 속성값에 InitValue가 적용됩니다. 적용된 값은 이탤릭체로 표기합니다.