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.vaadin.gwt.client.applauncher.widget;
35
36 import info.magnolia.ui.vaadin.gwt.client.applauncher.event.AppActivationEvent;
37 import info.magnolia.ui.vaadin.gwt.client.applauncher.shared.AppGroup;
38 import info.magnolia.ui.vaadin.gwt.client.applauncher.shared.AppTile;
39
40 import java.util.HashMap;
41 import java.util.Map;
42 import java.util.Map.Entry;
43
44 import com.google.gwt.user.client.ui.FlowPanel;
45 import com.google.web.bindery.event.shared.EventBus;
46
47
48
49
50 public class AppLauncherViewImpl extends FlowPanel implements AppLauncherView, AppActivationEvent.Handler {
51
52 private final Map<String, VAppTileGroup> groups = new HashMap<String, VAppTileGroup>();
53
54 private final VTemporaryAppGroupBar temporarySectionsBar = new VTemporaryAppGroupBar();
55
56 private final EventBus eventBus;
57
58 private Presenter presenter;
59
60 public AppLauncherViewImpl(final EventBus eventBus) {
61 super();
62 this.eventBus = eventBus;
63 add(temporarySectionsBar);
64 this.eventBus.addHandler(AppActivationEvent.TYPE, this);
65 }
66
67 @Override
68 public void addAppGroup(AppGroup group) {
69 if (group.isPermanent()) {
70 addPermanentAppGroup(group);
71 } else {
72 addTemporaryAppGroup(group);
73 }
74 }
75
76 public void addTemporaryAppGroup(AppGroup groupParams) {
77 final VAppTileGroup group = new VTemporaryAppTileGroup(groupParams.getBackgroundColor());
78 group.setClientGroup(groupParams.isClientGroup());
79 groups.put(groupParams.getName(), group);
80 temporarySectionsBar.addGroup(groupParams.getCaption(), group);
81 add(group);
82 }
83
84 public void addPermanentAppGroup(AppGroup groupParams) {
85 final VPermanentAppTileGroup group = new VPermanentAppTileGroup(groupParams.getCaption(), groupParams.getBackgroundColor());
86 group.setClientGroup(groupParams.isClientGroup());
87 groups.put(groupParams.getName(), group);
88 add(group);
89 }
90
91 @Override
92 public void onAppActivated(AppActivationEvent event) {
93 presenter.activateApp(event.getAppName());
94 }
95
96 @Override
97 public void setPresenter(Presenter presenter) {
98 this.presenter = presenter;
99 }
100
101 @Override
102 public void setAppActive(String appName, boolean isActive) {
103 for (Entry<String, VAppTileGroup> entry : groups.entrySet()) {
104 if (entry.getValue().hasApp(appName)) {
105 AppTileWidget tile = entry.getValue().getAppTile(appName);
106 tile.setActiveState(isActive);
107 }
108 }
109 }
110
111 @Override
112 public void addAppTile(AppTile tileData, AppGroup groupData) {
113 AppTileWidget tile = new AppTileWidget(eventBus, tileData);
114 VAppTileGroup group = groups.get(groupData.getName());
115 if (group != null) {
116 group.addAppTile(tile);
117 }
118 }
119
120 @Override
121 public void clear() {
122 temporarySectionsBar.clear();
123 for (final VAppTileGroup group : groups.values()) {
124 remove(group);
125 }
126 groups.clear();
127 }
128
129 }