|
|
@@ -20,15 +20,16 @@ import kr.co.zumo.app.lifeplus.view.dialog.factory.IDialogFactory;
|
|
|
* @history 민효동 [2018-09-23] [최초 작성]
|
|
|
* @since 2018-09-23
|
|
|
*/
|
|
|
-public class DialogBuilder {
|
|
|
+public class DialogBuilder<T extends DialogBase, CL extends ICustomDialogListener> {
|
|
|
|
|
|
private IDialogFactory factory;
|
|
|
private int dialogId;
|
|
|
private FragmentManager manager;
|
|
|
- private IDialogResultListener listener;
|
|
|
- private IAttribute attribute;
|
|
|
+ private IDialogResultListener<T> listener;
|
|
|
+ private IAttribute<T> attribute;
|
|
|
+ private CL customListener;
|
|
|
|
|
|
- private DialogBuilder(@DialogID.ID int dialogId) {
|
|
|
+ public DialogBuilder(@DialogID.ID int dialogId) {
|
|
|
this.dialogId = dialogId;
|
|
|
}
|
|
|
|
|
|
@@ -71,11 +72,22 @@ public class DialogBuilder {
|
|
|
* @param listener IDialogResultListener
|
|
|
* @return DialogBuilder
|
|
|
*/
|
|
|
- public DialogBuilder listener(IDialogResultListener listener) {
|
|
|
+ public DialogBuilder listener(IDialogResultListener<T> listener) {
|
|
|
this.listener = listener;
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 다이얼로그 별로 사용할 수 있는 CustomListener 등록
|
|
|
+ *
|
|
|
+ * @param listener ICustomDialogListener
|
|
|
+ * @return DialogBuilder
|
|
|
+ */
|
|
|
+ public DialogBuilder listener(CL listener) {
|
|
|
+ this.customListener = listener;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 다이얼로그 show 이전에 속성(메서드)를 지정한다.
|
|
|
*
|
|
|
@@ -92,18 +104,19 @@ public class DialogBuilder {
|
|
|
*
|
|
|
* @return DialogBase
|
|
|
*/
|
|
|
- public DialogBase build() {
|
|
|
+ public T build() {
|
|
|
if (null == factory) {
|
|
|
- factory = new BasicDialogFactory();
|
|
|
+ factory = new BasicDialogFactory<T>();
|
|
|
}
|
|
|
if (null == manager) {
|
|
|
manager = DialogHelper.getInstance().getFragmentManager();
|
|
|
}
|
|
|
- DialogBase dialog = factory.getDialogById(dialogId);
|
|
|
+ T dialog = (T)factory.getDialogById(dialogId);
|
|
|
if (null != attribute) {
|
|
|
attribute.onAttribute(dialog);
|
|
|
}
|
|
|
dialog.setResultListener(listener);
|
|
|
+ dialog.setCustomListener(customListener);
|
|
|
|
|
|
return dialog;
|
|
|
}
|
|
|
@@ -113,8 +126,8 @@ public class DialogBuilder {
|
|
|
*
|
|
|
* @return DialogBase
|
|
|
*/
|
|
|
- public DialogBase show() {
|
|
|
- DialogBase dialog = build();
|
|
|
+ public T show() {
|
|
|
+ T dialog = build();
|
|
|
try {
|
|
|
// fixme 백그라운드에서 팝업을 열려고 시도할 경우, commit 오류가 발생한다.
|
|
|
// -> 1. 백그라운드에서는 팝업을 열려는 시도 자체를 하지 못하도록 함 (observable dispose 등)
|