1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.framework.app;
35
36 import info.magnolia.ui.api.app.AppContext;
37 import info.magnolia.ui.api.app.SubApp;
38 import info.magnolia.ui.api.app.SubAppContext;
39 import info.magnolia.ui.api.app.SubAppDescriptor;
40 import info.magnolia.ui.api.overlay.OverlayCloser;
41 import info.magnolia.ui.api.view.View;
42 import info.magnolia.ui.framework.context.AbstractUIContext;
43 import info.magnolia.ui.api.location.Location;
44 import info.magnolia.ui.api.shell.Shell;
45 import info.magnolia.ui.framework.overlay.OverlayPresenter;
46
47
48
49
50
51 public class SubAppContextImpl extends AbstractUIContext implements SubAppContext {
52
53 private SubApp subApp;
54
55 private String instanceId;
56
57 private Location location;
58
59 private SubAppDescriptor subAppDescriptor;
60
61 private AppContext appContext;
62
63 private Shell shell;
64
65 public SubAppContextImpl(SubAppDescriptor subAppDescriptor, Shell shell) {
66 this.subAppDescriptor = subAppDescriptor;
67 this.shell = shell;
68 }
69
70 @Override
71 public SubAppDescriptor getSubAppDescriptor() {
72 return subAppDescriptor;
73 }
74
75 @Override
76 public AppContext getAppContext() {
77 return appContext;
78 }
79
80 @Override
81 public void setAppContext(AppContext appContext) {
82 this.appContext = appContext;
83 }
84
85 @Override
86 public SubApp getSubApp() {
87 return subApp;
88 }
89
90 @Override
91 public void setSubApp(SubApp subApp) {
92 this.subApp = subApp;
93 }
94
95 @Override
96 public String getSubAppId() {
97 return subAppDescriptor.getName();
98 }
99
100 @Override
101 public Location getLocation() {
102 return location;
103 }
104
105 @Override
106 public void setLocation(Location location) {
107 this.location = location;
108 }
109
110 @Override
111 public String getInstanceId() {
112 return instanceId;
113 }
114
115 @Override
116 public void setInstanceId(String instanceId) {
117 this.instanceId = instanceId;
118 }
119
120 @Override
121 public void close() {
122 appContext.closeSubApp(instanceId);
123 }
124
125 @Override
126 protected OverlayPresenter initializeOverlayPresenter() {
127 return new OverlayPresenter() {
128 @Override
129 public OverlayCloser openOverlay(View view, ModalityLevel modalityLevel) {
130
131 View overlayParent = getAppContext().getView().getSubAppViewContainer(instanceId);
132 return SubAppContextImpl.this.shell.openOverlayOnView(view, overlayParent, ModalityDomain.SUB_APP, modalityLevel);
133 }
134
135 };
136 }
137 }