window


window 은 HSP 에서 기본으로 제공하는 API로 별도의 설정 없이 사용 가능하다.

window 는 HSP 의 화면 단위인 Window 를 제어 하거나 다이얼로그 윈도우를 조정하는 등의 기능을 제공 하며 window 를 제어하기 위해서는 WindowParams 을 전달하여 Window 를 관리할 수 있으며 그 세부내용은 아래의 표를 참고 한다.

WindowParams Class

public class WindowParams {
   public String url;
   public String windowName;
   public Map<String, Object> params;
   public boolean animated;
   public final ResultCallback<Object> successCallback;
   public final ResultCallback<HspError> errorCallback;
}

WindowParams

필드설명비고M/O
urlWebWindow 일 경우 지정한 URL 을 Load 한다.비즈앱 경로의 경우 비즈앱 root폴더 기준 절대경로를 기입,
http 또는 https scheme이 있는 경우 웹 화면 경로로 인식
windowNameassets/config/window.json 에 설정해둔 Window 을 이용하여 화면에 표현 한다. 
paramsWindow 에 전달한 파라메터 값 
animated원도우 생성 및 종료시 애니메이션 실행 여부HSP 에 내장되어 있는 애니메이션 리소스를 통해 화면을 출력 한다.
리소스 변경 방법은 Window Animation 내용을 참조하면 된다.
O
successCallback결과 전달을 위한 콜백 M  
errorCallback에러 전달을 위한 콜백 
     

WindowParams 는 Builder 패턴 형태로 구성하고 있으며 아래와 같이 사용가능 하다.

Example

WindowParams.builder().params(params).windowName(windowName).build()

showWindow

showWindow는 4.2.8 버전 이상 부터 제공됩니다.

showWindow 는 사용자가 assets/config/window.json 에 설정해둔 윈도우를 이용해 화면에 내용을 출력하는 역할을 하며 생성되어 있는 경우 최상단으로 이동 후 보여준다.

현재 윈도우가 팝업 윈도우인 경우 새로운 팝업 윈도우 생성만 가능하다.
(일반 윈도우를 생성하거나 윈도우 간 이동 등 모두 불가함)

Example

val params = WindowParams.builder()
   .windowName("windowName")
   .url("/main/index.html")
   .successCallback {
        //ToDo
    }
   .errorCallback {
        //ToDo
    }
   .build()
       
DAPWindow.showWindow(params)
WindowParams params = WindowParams.builder()
    .windowName("windowName")
    .url("/main/index.html")
    .successCallback(result -> {
         //ToDo
     })
    .errorCallback(e->{
         //ToDo
     })
    .build();

DAPWindow.showWindow(params);

sendMessage

sendMessage는 4.2.8 버전 이상 부터 제공됩니다.

sendMessage은 assets/config/window.json 에 설정해둔 윈도우를 이용해 Map 형태의 메세지를 전달한다.

options

필드설명M/O
windowNameassets/config/window.json 에 설정해둔 윈도우 이름M
messageMap 형태의 메세지M
   

Example

val message: MutableMap<String, Any> = HashMap()
message["key"] = "value"

DAPWindow.sendMessage(this@MainActivity, "windowName", message, , {
   // TODO
}) {
   // TODO
}
Map<String, Object> message = new HashMap<>();
message.put("key", "value");

DAPWindow.sendMessage(MainActivity.this, "windowName", message, result -> {
       // TODO
   }, e -> {
       // TODO
   });

currentWindow

currentWindow는 4.5.12 버전 이상 부터 제공됩니다.

현재 윈도우 객체를 반환한다.

Example

val window = DAPWindow.currentWindow()
 WindowBase window = DAPWindow.currentWindow();

getWindow

getWindow는 4.5.12 버전 이상 부터 제공됩니다.

윈도우 아이디에 해당하는 윈도우가 객체를 반환한다.

객체가 없는 경우 null 을 반환한다. 

options

필드설명M/O
windowNameassets/config/window.json 에 설정해둔 윈도우 이름M
   

Example

val window = DAPWindow.getWindow("windowName")
WindowBase window = DAPWindow.getWindow("windowName");

hasWindow

hasWindow는 4.2.8 버전 이상 부터 제공됩니다.

윈도우가 이미 생생되었는지 여부를 확인한다.

options

필드설명M/O
windowNameassets/config/window.json 에 설정해둔 윈도우 이름M
   

Example

DAPWindow.hasWindow("windowName", {
   // TODO
}) {
   // TODO
}
DAPWindow.hasWindow("windowName", result -> {
       // TODO
   }, e -> {
       // TODO
   });

destroyWindow

destroyWindow는 4.2.8 버전 이상 부터 제공됩니다.

생성 된 윈도우를 삭제한다.

현재 윈도우가 팝업 윈도우인 경우 현재 윈도우만 삭제 가능하다.

options

필드설명M/O
windowNameassets/config/window.json 에 설정해둔 윈도우 이름M
   

Example

DAPWindow.destroyWindow("windowName")
DAPWindow.destroyWindow("windowName");

clearHistory

clearCache는 4.5.12 버전 이상 부터 제공됩니다.

현재 윈도우가 web 윈도우면 history 를 제거 한다

Example

DAPWindow.clearHistory(this@MainActivity)
DAPWindow.clearHistory(MainActivity.this)

clearCache

clearCache는 4.2.8 버전 이상 부터 제공됩니다.

캐시는 애플리케이션별로 이루어지므로 사용된 모든 WebView에 대한 캐시가 지워진다.

Example

DAPWindow.clearCache(this@MainActivity)
DAPWindow.clearCache(MainActivity.this)

goBack

현 윈도우가 Web 윈도우면 webview 의 history 에 따라 back 하게 되고 history 가 더 이상 존재하지 않으면 윈도우를 remove 한다.

Example

DAPWindow.goBack(this@MainActivity)
DAPWindow.goBack(MainActivity.this);

canGoBack

현재 윈도우가 web 윈도우면 webview 에 history 를 파악하여 back 이 가능한 지 유/무 를 전달 받는다

Example

DAPWindow.canGoBack(this@MainActivity, {
   // TODO
}) {
   // TODO
}
DAPWindow.canGoBack(MainActivity.this, result -> {
       // TODO
   }, e -> {
       // TODO
   });

goForward

goForward는 4.2.8 버전 이상 부터 제공됩니다.

현 윈도우가 Web 윈도우면 webview 의 history 에 따라 forward 가능한 경우 다음 페이지로 이동한다.

Example

DAPWindow.goForward(this@MainActivity)
DAPWindow.goForward(MainActivity.this);

canGoForward

canGoForward는 4.2.8 버전 이상 부터 제공됩니다.

현재 윈도우가 web 윈도우면 webview 에 history 를 파악하여 forward 가 가능한 지 유/무 를 전달 받는다.

Example

DAPWindow.canGoForward(this@MainActivity, {
   // TODO
}) {
   // TODO
}
DAPWindow.canGoForward(MainActivity.this, result -> {
       // TODO
   }, e -> {
       // TODO
   });

alert

경고창을 띄운다

경과창은 Dialog을 전달하여 띄울 수 있으며 그 세부내용은 아래의 표를 참고 한다.

Dialog Class

public final class Dialog implements Serializable {
  public final int type;
  public final View view;
  public final String title;
  public final String message;
  public final Object obj;
  public final String positiveText;
  public final String negativeText;
  public final boolean finish;
  public final boolean cancelable;
  public final boolean processKill;
  public final OnResultListener<DialogInterface> listener;
}

Dialog

필드설명
type다이얼로그 타입
view커스텀 뷰
title다이얼로그 타이틀
message다이얼로그 메시지
obj다이얼로그에 전달해야할 커스텀 객체
positiveTextpositive 버튼의 label text
negativeTextnegative 버튼의 label text
finishpositive 버튼 선택 후 앱을 종료 시킬지 유/무
cancelable다이얼로그가 show 된 상태에서 back 키에 의해 종료할지 유/무
processKillpositive 버튼 선택 후 앱을 강제 종료 시킬지 유/무
listenerpositive / negative 버튼 중 어느것으 선택 되었느지 결과
  

Example

DAPWindow.alert(this@MainActivity, Dialog.builder().title("alert title")
   .message("alert message")
   .build())
DAPWindow.alert(MainActivity.this, Dialog.builder().title("alert title")
   .message("alert message")
   .build());

confirm

확인창을 띄운다.

확인창은 Dialog을 전달하여 띄울 수 있으며 그 세부내용은 아래의 표를 참고 한다.

Dialog Class

public final class Dialog implements Serializable {
  public final int type;
  public final View view;
  public final String title;
  public final String message;
  public final Object obj;
  public final String positiveText;
  public final String negativeText;
  public final boolean finish;
  public final boolean cancelable;
  public final boolean processKill;
  public final OnResultListener<DialogInterface> listener;
}

Dialog

필드설명
type다이얼로그 타입
view커스텀 뷰
title다이얼로그 타이틀
message다이얼로그 메시지
obj다이얼로그에 전달해야할 커스텀 객체
positiveTextpositive 버튼의 label text
negativeTextnegative 버튼의 label text
finishpositive 버튼 선택 후 앱을 종료 시킬지 유/무
cancelable다이얼로그가 show 된 상태에서 back 키에 의해 종료할지 유/무
processKillpositive 버튼 선택 후 앱을 강제 종료 시킬지 유/무
listenerpositive / negative 버튼 중 어느것으 선택 되었느지 결과
  

Example

DAPWindow.confirm(this@MainActivity, Dialog.builder().title("confirm title")
   .message("confirm msg")
   .listener { result, value ->  
        when (result) {
            OnResultListener.TRUE -> {
               // TODO
           }
           else -> {
               // TODO
           }
       }
   }.build())
DAPWindow.confirm(MainActivity.this, Dialog.builder().title("confirm title")
   .message("confirm msg")
   .listener((result, value) -> {
       switch (result) {
           case OnResultListener.TRUE:
               // TODO
               break;
           default:
               // TODO
               break;
       }
   }).build());

showLoadingScreen

로딩 다이얼로그를 띄운다

로딩 다이얼로그은 Dialog을 전달하여 띄울 수 있으며 그 세부내용은 아래의 표를 참고 한다.

LoadingDialog Class

public final class LoadingDialog implements Serializable {
  public final int type;
  public final int style;
  public final long max;
  public final View view;
  public final String message;
  public final boolean secondProgress;
}

LoadingDialog

필드설명
type다이얼로그 타입
style다이얼로그 스타일
max프로그래스 최대 값
view다이얼로그 화면에 대신 보여질 커스텀 뷰
message다이얼로그 메시지
secondProgress두 번째 프로그래스 바 사용 유/무
  

Example

DAPWindow.showLoadingScreen(this@MainActivity, LoadingDialog.builder().message("hello world").build())
DAPWindow.showLoadingScreen(MainActivity.this, LoadingDialog.builder().message("hello world").build());

hideLoadingScreen

로딩 다이얼로그를 닫는다

Example

DAPWindow.hideLoadingScreen(this@MainActivity)
DAPWindow.hideLoadingScreen(MainActivity.this);

fullscreen

fullscreen는 3.0.0 버전 이상 부터 제공됩니다.

전체 화면으로 변경하거나 복구한다

options

필드설명M/O
fullscreen
  • true : 전체화면으로 설정
  • false : 일반화면으로 설정
M
   

Example

DAPWindow.fullscreen(this@MAinActivity, true)
DAPWindow.fullscreen(MainActivity.this, true);

isFullscreen

isFullscreen는 3.0.0 버전 이상 부터 제공됩니다.

현재 화면이 전체 화면인지 유/무 를 반환 한다

Example

DAPWindow.isFullscreen(this@MainActivity, {
   // TODO
}) {
   // TODO
}
DAPWindow.isFullscreen(MainActivity.this, result -> {
       // TODO
   }, e -> {
       // TODO
   });

orientation

orientation는 3.0.0 버전 이상 부터 제공됩니다.

단말의 orientation 정보를 반환 한다

Example

DAPWindow.orientation(this@MainActivity, {
   // TODO
}) {
   // TODO
}
DAPWindow.orientation(MainActivity.this, result -> {
       // TODO
   }, e -> {
       // TODO
   });

exitApp

앱을 종료 한다

Example

DAPWindow.exitApp(this@MainActivity)
DAPWindow.exitApp(MainActivity.this);

Error Code

CodeCauseComment
E11500파라메터 값이 잘못되어 있을 경우 
E11501전달된 액션 값이 알 수 없는 액션일 경우 
E11502윈도우 이름이 잘못되어 있을 경우 
E11503Fullscreen 설정을 위한 값이 잘못되어 있을 경우 
E11504윈도우 간에 메시지 전송을 위한 값이 잘못되어 있을 경우 
E11550실행 중 오류가 발생 되었을 경우 
E11551assets/config/window.json 에 설정해둔 Window 가 존재하지 않는 경우 
E11552윈도우 생성에 실패한 경우 
E11553윈도우 삭제 시 생성된 윈도우가 존재하지 않는 경우 
E11554윈도우 생성 및 이동시 현재 윈도우가 팝업 윈도우인 경우 
E11555윈도우 간에 메시지가 전달되지 않는 경우 
E11556설치 된 비즈앱이 존재하지 않은 경우 
E11557요청한 비즈앱 경로의 페이지를 찾을 수 없는 경우 
E11558요청한 비즈앱의 경로가 비즈앱이 설치 된 경로 외 파일에 접근을 할 경우 
E11599알 수 없는 오류가 발생 되었을 경우