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
.ILabelProvider
;
18 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
19 import org
.eclipse
.jface
.viewers
.StyledCellLabelProvider
;
20 import org
.eclipse
.jface
.viewers
.StyledString
;
21 import org
.eclipse
.jface
.viewers
.TreeViewer
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.jface
.viewers
.ViewerCell
;
24 import org
.eclipse
.swt
.SWT
;
25 import org
.eclipse
.swt
.custom
.SashForm
;
26 import org
.eclipse
.swt
.events
.SelectionAdapter
;
27 import org
.eclipse
.swt
.events
.SelectionEvent
;
28 import org
.eclipse
.swt
.graphics
.Image
;
29 import org
.eclipse
.swt
.layout
.GridData
;
30 import org
.eclipse
.swt
.layout
.GridLayout
;
31 import org
.eclipse
.swt
.widgets
.Button
;
32 import org
.eclipse
.swt
.widgets
.Composite
;
33 import org
.eclipse
.swt
.widgets
.Dialog
;
34 import org
.eclipse
.swt
.widgets
.Display
;
35 import org
.eclipse
.swt
.widgets
.Label
;
36 import org
.eclipse
.swt
.widgets
.Shell
;
37 import org
.eclipse
.swt
.widgets
.Text
;
38 import org
.eclipse
.ui
.dialogs
.FilteredTree
;
39 import org
.eclipse
.ui
.dialogs
.PatternFilter
;
40 import org
.eclipse
.wb
.swt
.SWTResourceManager
;
42 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmModelFieldPropertyFromClass
;
43 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.CdmRemoteCacheManager
;
44 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
;
45 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
.CdmEntityInfo
;
46 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySession
;
47 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
54 public class InspectSessionsDialog
extends Dialog
{
56 protected Object result
;
57 protected Shell shlInspectSessions
;
58 private Text txtDebugInfo
;
59 private Label lblDebugInformation
;
61 private final Cache cdmlibModelCache
;
63 private final ICdmEntitySession activeSession
;
65 private TreeViewer treeViewer
;
66 private Button btnClose
;
67 EntityCacherDebugResult ecdr
;
68 private SashForm sashForm
;
69 private Composite compositeDebug
;
75 public InspectSessionsDialog(Shell parent
, int style
) {
77 setText("Inspect Active Session");
78 cdmlibModelCache
= CdmRemoteCacheManager
.getInstance().getCdmModelGetMethodsCache();
79 activeSession
= CdmStore
.getCurrentSessionManager().getActiveSession();
80 ecdr
= activeSession
.debug();
87 public Object
open() {
91 treeViewer
.setContentProvider(new SessionsTreeContentProvider());
92 treeViewer
.setLabelProvider(new SessionsTreeLabelProvider());
93 treeViewer
.setInput(getRootElements());
94 shlInspectSessions
.open();
95 shlInspectSessions
.layout();
96 Display display
= getParent().getDisplay();
97 while (!shlInspectSessions
.isDisposed()) {
98 if (!display
.readAndDispatch()) {
106 * Create contents of the dialog.
108 private void createContents() {
109 shlInspectSessions
= new Shell(getParent(), SWT
.DIALOG_TRIM
| SWT
.RESIZE
);
110 shlInspectSessions
.setSize(641, 631);
111 shlInspectSessions
.setText("Inspect Sessions");
112 shlInspectSessions
.setLayout(new GridLayout(1, false));
114 sashForm
= new SashForm(shlInspectSessions
, SWT
.VERTICAL
);
115 sashForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
117 PatternFilter filter
= new PatternFilter();
118 FilteredTree tree
= new FilteredTree(sashForm
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.BORDER
119 | SWT
.V_SCROLL
, filter
, true);
120 treeViewer
= tree
.getViewer();
121 //treeViewer = new TreeViewer(sashForm, SWT.BORDER);
122 //Tree tree = treeViewer.getTree();
124 compositeDebug
= new Composite(sashForm
, SWT
.NONE
);
125 compositeDebug
.setLayout(new GridLayout(1, false));
127 lblDebugInformation
= new Label(compositeDebug
, SWT
.NONE
);
128 lblDebugInformation
.setAlignment(SWT
.CENTER
);
129 lblDebugInformation
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false, 1, 1));
130 lblDebugInformation
.setFont(SWTResourceManager
.getFont("Ubuntu", 10, SWT
.NORMAL
));
131 lblDebugInformation
.setText("Debug Information");
133 txtDebugInfo
= new Text(compositeDebug
, SWT
.BORDER
| SWT
.READ_ONLY
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.CANCEL
| SWT
.MULTI
);
134 txtDebugInfo
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
135 sashForm
.setWeights(new int[] {338, 184});
137 btnClose
= new Button(shlInspectSessions
, SWT
.NONE
);
138 btnClose
.addSelectionListener(new SelectionAdapter() {
140 public void widgetSelected(SelectionEvent e
) {
141 shlInspectSessions
.dispose();
144 GridData gd_btnClose
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 1, 1);
145 gd_btnClose
.widthHint
= 70;
146 btnClose
.setLayoutData(gd_btnClose
);
147 btnClose
.setText("Close");
151 private void setDebugInfoText() {
152 txtDebugInfo
.setText(ecdr
.toString());
154 private CdmEntityInfo
[] getRootElements() {
156 List
<CdmEntityInfo
> rootElemnts
= ecdr
.getRootElements();
157 return rootElemnts
.toArray(new CdmEntityInfo
[rootElemnts
.size()]);
160 class SessionsTreeContentProvider
implements ITreeContentProvider
{
165 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
168 public void dispose() {
173 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
176 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
182 * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
185 public Object
[] getElements(Object inputElement
) {
186 return (CdmEntityInfo
[])inputElement
;
190 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
193 public Object
[] getChildren(Object parentElement
) {
194 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)parentElement
).getChildren();
195 return children
.toArray();
199 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
202 public Object
getParent(Object element
) {
203 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
204 return cei
.getParent();
208 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
211 public boolean hasChildren(Object element
) {
212 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)element
).getChildren();
213 if(children
!= null && !children
.isEmpty()) {
220 public CdmModelFieldPropertyFromClass
getFromCdmlibModelCache(String className
) {
221 Element e
= cdmlibModelCache
.get(className
);
225 return (CdmModelFieldPropertyFromClass
) e
.getObjectValue();
231 class SessionsTreeLabelProvider
extends StyledCellLabelProvider
implements ILabelProvider
{
234 public void update(ViewerCell cell
) {
235 CdmEntityInfo cei
= (CdmEntityInfo
)cell
.getElement();
236 StyledString text
= new StyledString();
238 text
.append(cei
.getLabel());
240 cell
.setText(text
.toString());
241 cell
.setStyleRanges(text
.getStyleRanges());
246 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
249 public Image
getImage(Object element
) {
250 // TODO Auto-generated method stub
255 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
258 public String
getText(Object element
) {
259 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
260 return cei
.getLabel();