1 package org
.argeo
.cms
.e4
.parts
;
3 import java
.util
.Observable
;
4 import java
.util
.Observer
;
6 import javax
.annotation
.PostConstruct
;
7 import javax
.annotation
.PreDestroy
;
8 import javax
.inject
.Inject
;
10 import javax
.jcr
.Repository
;
11 import javax
.jcr
.RepositoryException
;
12 import javax
.jcr
.Session
;
14 import org
.argeo
.cms
.CmsException
;
15 import org
.argeo
.cms
.CmsTypes
;
16 import org
.argeo
.cms
.text
.StandardTextEditor
;
17 import org
.argeo
.cms
.viewers
.JcrVersionCmsEditable
;
18 import org
.argeo
.jcr
.JcrUtils
;
19 import org
.eclipse
.e4
.ui
.di
.Persist
;
20 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.swt
.layout
.GridLayout
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
25 public class CmsTextEditor
implements Observer
{
27 Repository repository
;
33 JcrVersionCmsEditable cmsEditable
;
36 public void createUI(Composite parent
) {
38 parent
.setLayout(new GridLayout());
39 session
= repository
.login();
40 JcrUtils
.loginOrCreateWorkspace(repository
, "demo");
41 Node textNode
= JcrUtils
.getOrAdd(session
.getRootNode(), "text", CmsTypes
.CMS_TEXT
);
42 cmsEditable
= new JcrVersionCmsEditable(textNode
);
43 if (session
.hasPendingChanges())
45 cmsEditable
.addObserver(this);
46 StandardTextEditor textEditor
= new StandardTextEditor(parent
, SWT
.NONE
, textNode
, cmsEditable
);
47 mpart
.setDirty(cmsEditable
.isEditing());
48 } catch (RepositoryException e
) {
49 throw new CmsException("Cannot create text editor", e
);
54 public void dispose() {
55 JcrUtils
.logoutQuietly(session
);
60 cmsEditable
.stopEditing();
64 public void update(Observable o
, Object arg
) {
65 // CmsEditable cmsEditable = (CmsEditable) o;
66 mpart
.setDirty(isDirty());
70 return cmsEditable
.isEditing();