3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.view
.sessions
;
12 import java
.util
.List
;
14 import net
.sf
.ehcache
.Cache
;
15 import net
.sf
.ehcache
.Element
;
17 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
18 import org
.eclipse
.jface
.viewers
.StyledCellLabelProvider
;
19 import org
.eclipse
.jface
.viewers
.StyledString
;
20 import org
.eclipse
.jface
.viewers
.TreeViewer
;
21 import org
.eclipse
.jface
.viewers
.Viewer
;
22 import org
.eclipse
.jface
.viewers
.ViewerCell
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.custom
.SashForm
;
25 import org
.eclipse
.swt
.events
.SelectionAdapter
;
26 import org
.eclipse
.swt
.events
.SelectionEvent
;
27 import org
.eclipse
.swt
.layout
.GridData
;
28 import org
.eclipse
.swt
.layout
.GridLayout
;
29 import org
.eclipse
.swt
.widgets
.Button
;
30 import org
.eclipse
.swt
.widgets
.Composite
;
31 import org
.eclipse
.swt
.widgets
.Dialog
;
32 import org
.eclipse
.swt
.widgets
.Display
;
33 import org
.eclipse
.swt
.widgets
.Label
;
34 import org
.eclipse
.swt
.widgets
.Shell
;
35 import org
.eclipse
.swt
.widgets
.Text
;
36 import org
.eclipse
.swt
.widgets
.Tree
;
37 import org
.eclipse
.wb
.swt
.SWTResourceManager
;
39 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmModelFieldPropertyFromClass
;
40 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmRemoteCacheManager
;
41 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
;
42 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
.CdmEntityInfo
;
43 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySession
;
44 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
51 public class InspectSessionsDialog
extends Dialog
{
53 protected Object result
;
54 protected Shell shlInspectSessions
;
55 private Text txtDebugInfo
;
56 private Label lblDebugInformation
;
58 private final Cache cdmlibModelCache
;
60 private final ICdmEntitySession activeSession
;
62 private TreeViewer treeViewer
;
63 private Button btnClose
;
64 EntityCacherDebugResult ecdr
;
65 private SashForm sashForm
;
66 private Composite compositeDebug
;
72 public InspectSessionsDialog(Shell parent
, int style
) {
74 setText("Inspect Active Session");
75 cdmlibModelCache
= CdmRemoteCacheManager
.getInstance().getCdmModelGetMethodsCache();
76 activeSession
= CdmStore
.getCurrentSessionManager().getActiveSession();
77 ecdr
= activeSession
.debug();
84 public Object
open() {
88 treeViewer
.setContentProvider(new SessionsTreeContentProvider());
89 treeViewer
.setLabelProvider(new SessionsTreeLabelProvider());
90 treeViewer
.setInput(getRootElements());
91 shlInspectSessions
.open();
92 shlInspectSessions
.layout();
93 Display display
= getParent().getDisplay();
94 while (!shlInspectSessions
.isDisposed()) {
95 if (!display
.readAndDispatch()) {
103 * Create contents of the dialog.
105 private void createContents() {
106 shlInspectSessions
= new Shell(getParent(), SWT
.DIALOG_TRIM
| SWT
.RESIZE
);
107 shlInspectSessions
.setSize(641, 631);
108 shlInspectSessions
.setText("Inspect Sessions");
109 shlInspectSessions
.setLayout(new GridLayout(1, false));
111 sashForm
= new SashForm(shlInspectSessions
, SWT
.VERTICAL
);
112 sashForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
114 treeViewer
= new TreeViewer(sashForm
, SWT
.BORDER
);
115 Tree tree
= treeViewer
.getTree();
117 compositeDebug
= new Composite(sashForm
, SWT
.NONE
);
118 compositeDebug
.setLayout(new GridLayout(1, false));
120 lblDebugInformation
= new Label(compositeDebug
, SWT
.NONE
);
121 lblDebugInformation
.setAlignment(SWT
.CENTER
);
122 lblDebugInformation
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false, 1, 1));
123 lblDebugInformation
.setFont(SWTResourceManager
.getFont("Ubuntu", 10, SWT
.NORMAL
));
124 lblDebugInformation
.setText("Debug Information");
126 txtDebugInfo
= new Text(compositeDebug
, SWT
.BORDER
| SWT
.READ_ONLY
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.CANCEL
| SWT
.MULTI
);
127 txtDebugInfo
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
128 sashForm
.setWeights(new int[] {338, 184});
130 btnClose
= new Button(shlInspectSessions
, SWT
.NONE
);
131 btnClose
.addSelectionListener(new SelectionAdapter() {
133 public void widgetSelected(SelectionEvent e
) {
134 shlInspectSessions
.dispose();
137 GridData gd_btnClose
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 1, 1);
138 gd_btnClose
.widthHint
= 70;
139 btnClose
.setLayoutData(gd_btnClose
);
140 btnClose
.setText("Close");
144 private void setDebugInfoText() {
145 txtDebugInfo
.setText(ecdr
.toString());
147 private CdmEntityInfo
[] getRootElements() {
149 List
<CdmEntityInfo
> rootElemnts
= ecdr
.getRootElements();
150 return rootElemnts
.toArray(new CdmEntityInfo
[rootElemnts
.size()]);
153 class SessionsTreeContentProvider
implements ITreeContentProvider
{
158 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
161 public void dispose() {
166 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
169 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
175 * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
178 public Object
[] getElements(Object inputElement
) {
179 return (CdmEntityInfo
[])inputElement
;
183 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
186 public Object
[] getChildren(Object parentElement
) {
187 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)parentElement
).getChildren();
188 return children
.toArray();
192 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
195 public Object
getParent(Object element
) {
196 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
197 return cei
.getParent();
201 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
204 public boolean hasChildren(Object element
) {
205 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)element
).getChildren();
206 if(children
!= null && !children
.isEmpty()) {
213 public CdmModelFieldPropertyFromClass
getFromCdmlibModelCache(String className
) {
214 Element e
= cdmlibModelCache
.get(className
);
218 return (CdmModelFieldPropertyFromClass
) e
.getObjectValue();
224 class SessionsTreeLabelProvider
extends StyledCellLabelProvider
{
227 public void update(ViewerCell cell
) {
228 CdmEntityInfo cei
= (CdmEntityInfo
)cell
.getElement();
229 StyledString text
= new StyledString();
231 text
.append(cei
.getLabel());
233 cell
.setText(text
.toString());
234 cell
.setStyleRanges(text
.getStyleRanges());