2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.view
.sessions
;
11 import java
.util
.List
;
13 import net
.sf
.ehcache
.Cache
;
14 import net
.sf
.ehcache
.Element
;
16 import org
.eclipse
.jface
.viewers
.ILabelProvider
;
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
.graphics
.Image
;
28 import org
.eclipse
.swt
.layout
.GridData
;
29 import org
.eclipse
.swt
.layout
.GridLayout
;
30 import org
.eclipse
.swt
.widgets
.Button
;
31 import org
.eclipse
.swt
.widgets
.Composite
;
32 import org
.eclipse
.swt
.widgets
.Dialog
;
33 import org
.eclipse
.swt
.widgets
.Display
;
34 import org
.eclipse
.swt
.widgets
.Label
;
35 import org
.eclipse
.swt
.widgets
.Shell
;
36 import org
.eclipse
.swt
.widgets
.Text
;
37 import org
.eclipse
.ui
.dialogs
.FilteredTree
;
38 import org
.eclipse
.ui
.dialogs
.PatternFilter
;
39 import org
.eclipse
.wb
.swt
.SWTResourceManager
;
41 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmModelFieldPropertyFromClass
;
42 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmRemoteCacheManager
;
43 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
;
44 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
.CdmEntityInfo
;
45 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySession
;
46 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
53 public class InspectSessionsDialog
extends Dialog
{
55 protected Object result
;
56 protected Shell shlInspectSessions
;
57 private Text txtDebugInfo
;
58 private Label lblDebugInformation
;
60 private final Cache cdmlibModelCache
;
62 private final ICdmEntitySession activeSession
;
64 private TreeViewer treeViewer
;
65 private Button btnClose
;
66 EntityCacherDebugResult ecdr
;
67 private SashForm sashForm
;
68 private Composite compositeDebug
;
74 public InspectSessionsDialog(Shell parent
, int style
) {
76 setText("Inspect Active Session");
77 cdmlibModelCache
= CdmRemoteCacheManager
.getInstance().getCdmModelGetMethodsCache();
78 activeSession
= CdmStore
.getCurrentSessionManager().getActiveSession();
79 ecdr
= activeSession
.debug();
86 public Object
open() {
90 treeViewer
.setContentProvider(new SessionsTreeContentProvider());
91 treeViewer
.setLabelProvider(new SessionsTreeLabelProvider());
92 treeViewer
.setInput(getRootElements());
93 shlInspectSessions
.open();
94 shlInspectSessions
.layout();
95 Display display
= getParent().getDisplay();
96 while (!shlInspectSessions
.isDisposed()) {
97 if (!display
.readAndDispatch()) {
105 * Create contents of the dialog.
107 private void createContents() {
108 shlInspectSessions
= new Shell(getParent(), SWT
.DIALOG_TRIM
| SWT
.RESIZE
);
109 shlInspectSessions
.setSize(641, 631);
110 shlInspectSessions
.setText("Inspect Sessions");
111 shlInspectSessions
.setLayout(new GridLayout(1, false));
113 sashForm
= new SashForm(shlInspectSessions
, SWT
.VERTICAL
);
114 sashForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
116 PatternFilter filter
= new PatternFilter();
117 FilteredTree tree
= new FilteredTree(sashForm
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.BORDER
118 | SWT
.V_SCROLL
, filter
, true);
119 treeViewer
= tree
.getViewer();
120 //treeViewer = new TreeViewer(sashForm, SWT.BORDER);
121 //Tree tree = treeViewer.getTree();
123 compositeDebug
= new Composite(sashForm
, SWT
.NONE
);
124 compositeDebug
.setLayout(new GridLayout(1, false));
126 lblDebugInformation
= new Label(compositeDebug
, SWT
.NONE
);
127 lblDebugInformation
.setAlignment(SWT
.CENTER
);
128 lblDebugInformation
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false, 1, 1));
129 lblDebugInformation
.setFont(SWTResourceManager
.getFont("Ubuntu", 10, SWT
.NORMAL
));
130 lblDebugInformation
.setText("Debug Information");
132 txtDebugInfo
= new Text(compositeDebug
, SWT
.BORDER
| SWT
.READ_ONLY
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.CANCEL
| SWT
.MULTI
);
133 txtDebugInfo
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
134 sashForm
.setWeights(new int[] {338, 184});
136 btnClose
= new Button(shlInspectSessions
, SWT
.NONE
);
137 btnClose
.addSelectionListener(new SelectionAdapter() {
139 public void widgetSelected(SelectionEvent e
) {
140 shlInspectSessions
.dispose();
143 GridData gd_btnClose
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 1, 1);
144 gd_btnClose
.widthHint
= 70;
145 btnClose
.setLayoutData(gd_btnClose
);
146 btnClose
.setText("Close");
150 private void setDebugInfoText() {
151 txtDebugInfo
.setText(ecdr
.toString());
153 private CdmEntityInfo
[] getRootElements() {
155 List
<CdmEntityInfo
> rootElemnts
= ecdr
.getRootElements();
156 return rootElemnts
.toArray(new CdmEntityInfo
[rootElemnts
.size()]);
159 class SessionsTreeContentProvider
implements ITreeContentProvider
{
164 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
167 public void dispose() {
172 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
175 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
181 * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
184 public Object
[] getElements(Object inputElement
) {
185 return (CdmEntityInfo
[])inputElement
;
189 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
192 public Object
[] getChildren(Object parentElement
) {
193 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)parentElement
).getChildren();
194 return children
.toArray();
198 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
201 public Object
getParent(Object element
) {
202 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
203 return cei
.getParent();
207 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
210 public boolean hasChildren(Object element
) {
211 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)element
).getChildren();
212 if(children
!= null && !children
.isEmpty()) {
219 public CdmModelFieldPropertyFromClass
getFromCdmlibModelCache(String className
) {
220 Element e
= cdmlibModelCache
.get(className
);
224 return (CdmModelFieldPropertyFromClass
) e
.getObjectValue();
230 class SessionsTreeLabelProvider
extends StyledCellLabelProvider
implements ILabelProvider
{
233 public void update(ViewerCell cell
) {
234 CdmEntityInfo cei
= (CdmEntityInfo
)cell
.getElement();
235 StyledString text
= new StyledString();
237 text
.append(cei
.getLabel());
239 cell
.setText(text
.toString());
240 cell
.setStyleRanges(text
.getStyleRanges());
245 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
248 public Image
getImage(Object element
) {
249 // TODO Auto-generated method stub
254 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
257 public String
getText(Object element
) {
258 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
259 return cei
.getLabel();