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 org
.eclipse
.jface
.viewers
.ILabelProvider
;
14 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
15 import org
.eclipse
.jface
.viewers
.StyledCellLabelProvider
;
16 import org
.eclipse
.jface
.viewers
.StyledString
;
17 import org
.eclipse
.jface
.viewers
.TreeViewer
;
18 import org
.eclipse
.jface
.viewers
.Viewer
;
19 import org
.eclipse
.jface
.viewers
.ViewerCell
;
20 import org
.eclipse
.swt
.SWT
;
21 import org
.eclipse
.swt
.custom
.SashForm
;
22 import org
.eclipse
.swt
.events
.SelectionAdapter
;
23 import org
.eclipse
.swt
.events
.SelectionEvent
;
24 import org
.eclipse
.swt
.graphics
.Image
;
25 import org
.eclipse
.swt
.layout
.GridData
;
26 import org
.eclipse
.swt
.layout
.GridLayout
;
27 import org
.eclipse
.swt
.widgets
.Button
;
28 import org
.eclipse
.swt
.widgets
.Composite
;
29 import org
.eclipse
.swt
.widgets
.Dialog
;
30 import org
.eclipse
.swt
.widgets
.Display
;
31 import org
.eclipse
.swt
.widgets
.Label
;
32 import org
.eclipse
.swt
.widgets
.Shell
;
33 import org
.eclipse
.swt
.widgets
.Text
;
34 import org
.eclipse
.ui
.dialogs
.FilteredTree
;
35 import org
.eclipse
.ui
.dialogs
.PatternFilter
;
36 import org
.eclipse
.wb
.swt
.SWTResourceManager
;
38 import eu
.etaxonomy
.cdm
.cache
.CdmModelFieldPropertyFromClass
;
39 import eu
.etaxonomy
.cdm
.cache
.CdmRemoteCacheManager
;
40 import eu
.etaxonomy
.cdm
.cache
.EntityCacherDebugResult
;
41 import eu
.etaxonomy
.cdm
.cache
.EntityCacherDebugResult
.CdmEntityInfo
;
42 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySession
;
43 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
44 import net
.sf
.ehcache
.Cache
;
45 import net
.sf
.ehcache
.Element
;
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
;
73 public InspectSessionsDialog(Shell parent
, int style
) {
75 setText("Inspect Active Session");
76 cdmlibModelCache
= CdmRemoteCacheManager
.getInstance().getCdmModelGetMethodsCache();
77 activeSession
= CdmStore
.getCurrentSessionManager().getActiveSession();
78 ecdr
= activeSession
.debug();
85 public Object
open() {
89 treeViewer
.setContentProvider(new SessionsTreeContentProvider());
90 treeViewer
.setLabelProvider(new SessionsTreeLabelProvider());
91 treeViewer
.setInput(getRootElements());
92 shlInspectSessions
.open();
93 shlInspectSessions
.layout();
94 Display display
= getParent().getDisplay();
95 while (!shlInspectSessions
.isDisposed()) {
96 if (!display
.readAndDispatch()) {
104 * Create contents of the dialog.
106 private void createContents() {
107 shlInspectSessions
= new Shell(getParent(), SWT
.DIALOG_TRIM
| SWT
.RESIZE
);
108 shlInspectSessions
.setSize(641, 631);
109 shlInspectSessions
.setText("Inspect Sessions");
110 shlInspectSessions
.setLayout(new GridLayout(1, false));
112 sashForm
= new SashForm(shlInspectSessions
, SWT
.VERTICAL
);
113 sashForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
115 PatternFilter filter
= new PatternFilter();
116 FilteredTree tree
= new FilteredTree(sashForm
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.BORDER
117 | SWT
.V_SCROLL
, filter
, true);
118 treeViewer
= tree
.getViewer();
119 //treeViewer = new TreeViewer(sashForm, SWT.BORDER);
120 //Tree tree = treeViewer.getTree();
122 compositeDebug
= new Composite(sashForm
, SWT
.NONE
);
123 compositeDebug
.setLayout(new GridLayout(1, false));
125 lblDebugInformation
= new Label(compositeDebug
, SWT
.NONE
);
126 lblDebugInformation
.setAlignment(SWT
.CENTER
);
127 lblDebugInformation
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false, 1, 1));
128 lblDebugInformation
.setFont(SWTResourceManager
.getFont("Ubuntu", 10, SWT
.NORMAL
));
129 lblDebugInformation
.setText("Debug Information");
131 txtDebugInfo
= new Text(compositeDebug
, SWT
.BORDER
| SWT
.READ_ONLY
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.CANCEL
| SWT
.MULTI
);
132 txtDebugInfo
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true, 1, 1));
133 sashForm
.setWeights(new int[] {338, 184});
135 btnClose
= new Button(shlInspectSessions
, SWT
.NONE
);
136 btnClose
.addSelectionListener(new SelectionAdapter() {
138 public void widgetSelected(SelectionEvent e
) {
139 shlInspectSessions
.dispose();
142 GridData gd_btnClose
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 1, 1);
143 gd_btnClose
.widthHint
= 70;
144 btnClose
.setLayoutData(gd_btnClose
);
145 btnClose
.setText("Close");
149 private void setDebugInfoText() {
150 txtDebugInfo
.setText(ecdr
.toString());
152 private CdmEntityInfo
[] getRootElements() {
154 List
<CdmEntityInfo
> rootElemnts
= ecdr
.getRootElements();
155 return rootElemnts
.toArray(new CdmEntityInfo
[rootElemnts
.size()]);
158 class SessionsTreeContentProvider
implements ITreeContentProvider
{
161 public void dispose() {
166 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {}
169 public Object
[] getElements(Object inputElement
) {
170 return (CdmEntityInfo
[])inputElement
;
174 public Object
[] getChildren(Object parentElement
) {
175 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)parentElement
).getChildren();
176 return children
.toArray();
180 public Object
getParent(Object element
) {
181 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
182 return cei
.getParent();
186 public boolean hasChildren(Object element
) {
187 List
<CdmEntityInfo
> children
= ((CdmEntityInfo
)element
).getChildren();
188 if(children
!= null && !children
.isEmpty()) {
195 public CdmModelFieldPropertyFromClass
getFromCdmlibModelCache(String className
) {
196 Element e
= cdmlibModelCache
.get(className
);
200 return (CdmModelFieldPropertyFromClass
) e
.getObjectValue();
205 class SessionsTreeLabelProvider
extends StyledCellLabelProvider
implements ILabelProvider
{
208 public void update(ViewerCell cell
) {
209 CdmEntityInfo cei
= (CdmEntityInfo
)cell
.getElement();
210 StyledString text
= new StyledString();
212 text
.append(cei
.getLabel());
214 cell
.setText(text
.toString());
215 cell
.setStyleRanges(text
.getStyleRanges());
220 public Image
getImage(Object element
) {
221 // TODO Auto-generated method stub
226 public String
getText(Object element
) {
227 CdmEntityInfo cei
= (CdmEntityInfo
)element
;
228 return cei
.getLabel();