+ private void refreshPart(CmsUiProvider uiProvider, Composite part, Node context) {
+ for (Control child : part.getChildren())
+ child.dispose();
+ uiProvider.createUiPart(part, context);
+ }
+
+ private CmsUiProvider findUiProvider(String pid, Node context) {
+ if (pid != null) {
+ if (uiProviders.containsKey(pid))
+ return uiProviders.get(pid);
+ }
+
+ // nothing
+ return new CmsUiProvider() {
+
+ @Override
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
+ return parent;
+ }
+ };
+ }
+
+ @Override
+ public void setState(Composite parent, String state) {
+ CmsView cmsView = CmsView.getCmsView(parent);
+ // for the time being we systematically open a session, in order to make sure
+ // that home is initialised
+ Session session = null;
+ try {
+ if (state != null && state.startsWith("/")) {
+ String path = state.substring(1);
+ String workspace;
+ if (path.equals("")) {
+ workspace = null;
+ path = "/";
+ } else {
+ int index = path.indexOf('/');
+ if (index == 0) {
+ log.error("Cannot interpret // " + state);
+ cmsView.navigateTo("~");
+ return;
+ } else if (index > 0) {
+ workspace = path.substring(0, index);
+ path = path.substring(index);
+ } else {// index<0, assuming root node
+ workspace = path;
+ path = "/";
+ }
+ }
+ session = getRepository().login(workspace);
+
+ Node node = session.getNode(path);
+ refreshEntityUi(node);
+ }
+ } catch (RepositoryException e) {
+ log.error("Cannot load state " + state, e);
+ cmsView.navigateTo("~");
+ } finally {
+ JcrUtils.logoutQuietly(session);
+ }
+ }
+
+ private void refreshEntityUi(Node node) {
+
+ }
+
+ /*
+ * Dependency injection.
+ */
+