1 package org
.argeo
.eclipse
.ui
.jcr
.browser
;
3 import javax
.jcr
.Repository
;
4 import javax
.jcr
.RepositoryException
;
5 import javax
.jcr
.Session
;
6 import javax
.jcr
.observation
.EventIterator
;
7 import javax
.jcr
.observation
.EventListener
;
9 import org
.argeo
.ArgeoException
;
10 import org
.argeo
.eclipse
.ui
.TreeParent
;
11 import org
.argeo
.eclipse
.ui
.jcr
.JcrUiPlugin
;
12 import org
.eclipse
.swt
.graphics
.Image
;
14 public class WorkspaceNode
extends TreeParent
implements EventListener
{
15 private final String name
;
16 private final Repository repository
;
17 private Session session
= null;
18 public final static Image WORKSPACE_DISCONNECTED
= JcrUiPlugin
19 .getImageDescriptor("icons/workspace_disconnected.png")
21 public final static Image WORKSPACE_CONNECTED
= JcrUiPlugin
22 .getImageDescriptor("icons/workspace_connected.png").createImage();
24 public WorkspaceNode(Repository repository
, String name
) {
25 this(repository
, name
, null);
28 public WorkspaceNode(Repository repository
, String name
, Session session
) {
31 this.repository
= repository
;
32 this.session
= session
;
34 processNewSession(session
);
37 public Session
getSession() {
44 session
= repository
.login(name
);
45 processNewSession(session
);
46 } catch (RepositoryException e
) {
47 throw new ArgeoException("Cannot connect to repository " + name
, e
);
51 public void logout() {
53 if (session
!= null && session
.isLive()) {
54 session
.getWorkspace().getObservationManager()
55 .removeEventListener(this);
58 } catch (RepositoryException e
) {
59 throw new ArgeoException("Cannot connect to repository " + name
, e
);
63 public void onEvent(final EventIterator events
) {
64 // if (session == null)
66 // Display.getDefault().syncExec(new Runnable() {
67 // public void run() {
68 // while (events.hasNext()) {
69 // Event event = events.nextEvent();
71 // String path = event.getPath();
72 // String parentPath = path.substring(0,
73 // path.lastIndexOf('/'));
74 // final Object parent;
75 // if (parentPath.equals("/") || parentPath.equals(""))
77 // else if (session.itemExists(parentPath)){
78 // parent = session.getItem(parentPath);
79 // ((Item)parent).refresh(false);
83 // if (parent != null) {
84 // nodesViewer.refresh(parent);
87 // } catch (RepositoryException e) {
88 // log.warn("Error processing event " + event, e);
95 protected void processNewSession(Session session
) {
97 // ObservationManager observationManager = session.getWorkspace()
98 // .getObservationManager();
99 // observationManager.addEventListener(this, Event.NODE_ADDED
100 // | Event.NODE_REMOVED, "/", true, null, null, false);
101 // } catch (RepositoryException e) {
102 // throw new ArgeoException("Cannot process new session "