X-Git-Url: http://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteApp.java;h=92382710353dd49a0bbf4d69ada4196ae94f73e5;hp=62e1a700a768356b444c35a42932c3cc5dcfc052;hb=daef461662700ec2df8a72f895623c889f9da946;hpb=5ed491dcefca5e0970865b0179602d65f748aff8 diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index 62e1a70..9238271 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -23,7 +23,6 @@ import org.argeo.cms.ui.AbstractCmsApp; import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.CmsView; -import org.argeo.cms.ui.MvcProvider; import org.argeo.cms.ui.dialogs.CmsFeedback; import org.argeo.cms.ui.util.CmsEvent; import org.argeo.cms.ui.util.CmsUiUtils; @@ -141,16 +140,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { SuiteLayer layer = layers.get(key).get(); ui.addLayer(key, layer); } - -// ui.addLayer(ArgeoSuiteUi.DASHBOARD_LAYER); -// ui.addLayer("documents"); -// ui.addLayer("locations"); -// ui.addLayer("people"); - // ui.switchToLayer(DASHBOARD_LAYER_PID, context); - -// refreshPart(findUiProvider(DASHBOARD_PID), ui.getTabbedArea().getCurrent(), context); refreshPart(findUiProvider(LEAD_PANE_PID), ui.getLeadPane(), context); -// refreshPart(findUiProvider(RECENT_ITEMS_PID), ui.getEntryArea(), context); } ui.layout(true, true); } catch (Exception e) { @@ -216,50 +206,6 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { throw new IllegalStateException(e); } } -// private CmsUiProvider findUiProvider(String pid, Node context) { -// CmsUiProvider found = null; -// if (pid != null) { -// SortedMap subMap = uiProvidersByPid.subMap(RankingKey.minPid(pid), -// RankingKey.maxPid(pid)); -// providers: for (RankingKey key : subMap.keySet()) { -// if (key.getPid() == null || !key.getPid().equals(pid)) -// break providers; -// found = subMap.get(key); -// } -// if (found != null) -// return found; -// } -// -// if (found == null && context != null) { -// SortedMap subMap = null; -// String dataType = null; -// if (Jcr.isNodeType(context, EntityTypes.ENTITY_ENTITY)) { -// dataType = Jcr.get(context, EntityNames.ENTITY_TYPE); -// subMap = uiProvidersByPid.subMap(RankingKey.minDataType(dataType), RankingKey.maxDataType(dataType)); -// } -// providers: for (RankingKey key : subMap.keySet()) { -// if (key.getDataType() == null || !key.getDataType().equals(dataType)) -// break providers; -// found = subMap.get(key); -// } -// if (found == null) -// found = uiProvidersByPid.get(new RankingKey(null, null, null, dataType, null)); -// if (found != null) -// return found; -// } -// -// // nothing -// if (log.isWarnEnabled()) -// log.warn("No UI provider found for" + (pid != null ? " pid " + pid : "") -// + (context != null ? " " + context : "")); -// return new CmsUiProvider() { -// -// @Override -// public Control createUi(Composite parent, Node context) throws RepositoryException { -// return parent; -// } -// }; -// } @Override public void setState(Composite parent, String state) { @@ -288,11 +234,11 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { path = "/"; } } - session = getRepository().login(workspace); + session = cmsView.doAs(() -> Jcr.login(getRepository(), workspace)); Node node = session.getNode(path); - refreshEntityUi(null, node); + cmsView.sendEvent(SuiteEvent.refreshPart.topic(), SuiteEvent.eventProperties(node)); } } catch (RepositoryException e) { log.error("Cannot load state " + state, e); @@ -302,7 +248,61 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { } } - private void refreshEntityUi(Composite parent, Node context) { + /* + * Events management + */ + + @Override + public void handleEvent(Event event) { + + // Specific UI related events + SuiteUi ui = getRelatedUi(event); + try { + String currentLayerId = ui.getCurrentLayerId(); + SuiteLayer layer = currentLayerId != null ? layers.get(currentLayerId).get() : null; + if (isTopic(event, SuiteEvent.refreshPart)) { + String nodePath = get(event, SuiteEvent.NODE_PATH); + String workspace = get(event, SuiteEvent.WORKSPACE); + Node node = Jcr.getNode(ui.getSession(workspace), nodePath); + CmsUiProvider uiProvider = findUiProvider(node); + layer.view(uiProvider, ui.getCurrentWorkArea(), node); + ui.getCmsView().stateChanged(nodeToState(node), Jcr.getTitle(node)); + } else if (isTopic(event, SuiteEvent.openNewPart)) { + String nodePath = get(event, SuiteEvent.NODE_PATH); + String workspace = get(event, SuiteEvent.WORKSPACE); + Node node = Jcr.getNode(ui.getSession(workspace), nodePath); + CmsUiProvider uiProvider = findUiProvider(node); + layer.open(uiProvider, ui.getCurrentWorkArea(), node); + ui.getCmsView().stateChanged(nodeToState(node), Jcr.getTitle(node)); + } else if (isTopic(event, SuiteEvent.switchLayer)) { + String layerId = get(event, SuiteEvent.LAYER); + ui.switchToLayer(layerId, Jcr.getRootNode(ui.getSession(null))); + } + } catch (Exception e) { + log.error("Cannot handle event " + event, e); +// CmsView.getCmsView(ui).exception(e); + } + + } + + private String nodeToState(Node node) { + return '/' + Jcr.getWorkspaceName(node) + Jcr.getPath(node); + } + + private SuiteUi 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(); + } /* @@ -374,50 +374,4 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { this.cmsUserManager = cmsUserManager; } - @Override - public void handleEvent(Event event) { - - // Specific UI related events - SuiteUi ui = getRelatedUi(event); - try { - String currentLayerId = ui.getCurrentLayerId(); - SuiteLayer layer = currentLayerId != null ? layers.get(currentLayerId).get() : null; - if (isTopic(event, SuiteEvent.refreshPart)) { - String nodeId = get(event, SuiteEvent.NODE_ID); - String workspace = get(event, SuiteEvent.WORKSPACE); - Node node = Jcr.getNodeById(ui.getSession(workspace), nodeId); - CmsUiProvider uiProvider = findUiProvider(node); - layer.view(uiProvider, ui.getCurrentWorkArea(), node); - } else if (isTopic(event, SuiteEvent.openNewPart)) { - String nodeId = get(event, SuiteEvent.NODE_ID); - String workspace = get(event, SuiteEvent.WORKSPACE); - Node node = Jcr.getNodeById(ui.getSession(workspace), nodeId); - CmsUiProvider uiProvider = findUiProvider(node); - layer.open(uiProvider, ui.getCurrentWorkArea(), node); - } else if (isTopic(event, SuiteEvent.switchLayer)) { - String layerId = get(event, SuiteEvent.LAYER); - ui.switchToLayer(layerId, Jcr.getRootNode(ui.getSession(null))); - } - } catch (Exception e) { - log.error("Cannot handle event " + event, e); -// CmsView.getCmsView(ui).exception(e); - } - - } - - private SuiteUi 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(); - - } }