+
+ }
+
+ public void removeUiProvider(CmsUiProvider uiProvider, Map<String, Object> properties) {
+ RankingKey partKey = new RankingKey(properties);
+// String servicePid = properties.get(Constants.SERVICE_PID);
+ uiProviders.remove(partKey);
+
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+
+ // Specific UI related events
+ ArgeoSuiteUi ui = getRelatedUi(event);
+ if (isTopic(event, SuiteEvent.refreshPart)) {
+ Node node = Jcr.getNodeById(ui.getSession(), get(event, SuiteEvent.NODE_ID));
+ ui.getTabbedArea().view(findUiProvider(DASHBOARD_PID, node), node);
+ } else if (isTopic(event, SuiteEvent.openNewPart)) {
+ Node node = Jcr.getNodeById(ui.getSession(), get(event, SuiteEvent.NODE_ID));
+ ui.getTabbedArea().open(findUiProvider(DASHBOARD_PID, node), node);
+ } else if (isTopic(event, SuiteEvent.switchLayer)) {
+ String layer = get(event, SuiteEvent.LAYER);
+ ui.switchToLayer(layer);
+ }
+
+ }
+
+ private ArgeoSuiteUi getRelatedUi(Event event) {
+ return managedUis.get(get(event, CMS_VIEW_UID_PROPERTY));
+ }
+
+ private static boolean isTopic(Event event, CmsEvent cmsEvent) {
+ return event.getTopic().equals(cmsEvent.topic());
+ }
+
+ private static String get(Event event, String key) {
+ Object value = event.getProperty(key);
+ if (value == null)
+ throw new IllegalArgumentException("Property " + key + " must be set");
+ return value.toString();
+
+ }
+
+// public void setHeaderPart(CmsUiProvider headerPart) {
+// this.headerPart = headerPart;
+// if (log.isDebugEnabled())
+// log.debug("Header set.");