This project has retired. For details please refer to its
Attic page.
ExtensionsPanel xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.workbench.details;
20
21 import java.awt.Color;
22 import java.util.List;
23
24 import javax.swing.BorderFactory;
25 import javax.swing.BoxLayout;
26 import javax.swing.JPanel;
27 import javax.swing.JScrollPane;
28 import javax.swing.JTree;
29 import javax.swing.tree.DefaultMutableTreeNode;
30 import javax.swing.tree.DefaultTreeModel;
31 import javax.swing.tree.TreeSelectionModel;
32
33 import org.apache.chemistry.opencmis.client.api.CmisObject;
34 import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
35 import org.apache.chemistry.opencmis.commons.enums.ExtensionLevel;
36 import org.apache.chemistry.opencmis.workbench.model.ClientModel;
37 import org.apache.chemistry.opencmis.workbench.model.ClientModelEvent;
38 import org.apache.chemistry.opencmis.workbench.model.ObjectListener;
39
40 public class ExtensionsPanel extends JPanel implements ObjectListener {
41
42 private static final long serialVersionUID = 1L;
43
44 private final ClientModel model;
45
46 private JTree extensionsTree;
47
48 public ExtensionsPanel(ClientModel model) {
49 super();
50
51 this.model = model;
52 model.addObjectListener(this);
53
54 createGUI();
55 }
56
57 @Override
58 public void objectLoaded(ClientModelEvent event) {
59 CmisObject object = model.getCurrentObject();
60
61 DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
62
63 if (object != null) {
64 List<CmisExtensionElement> extensions;
65
66
67 extensions = object.getExtensions(ExtensionLevel.OBJECT);
68 if ((extensions != null) && (!extensions.isEmpty())) {
69 DefaultMutableTreeNode objectRootNode = new DefaultMutableTreeNode("Object");
70 addExtension(objectRootNode, extensions);
71 rootNode.add(objectRootNode);
72 }
73
74
75 extensions = object.getExtensions(ExtensionLevel.PROPERTIES);
76 if ((extensions != null) && (!extensions.isEmpty())) {
77 DefaultMutableTreeNode propertiesRootNode = new DefaultMutableTreeNode("Properties");
78 addExtension(propertiesRootNode, extensions);
79 rootNode.add(propertiesRootNode);
80 }
81
82
83 extensions = object.getExtensions(ExtensionLevel.ALLOWABLE_ACTIONS);
84 if ((extensions != null) && (!extensions.isEmpty())) {
85 DefaultMutableTreeNode allowableActionsRootNode = new DefaultMutableTreeNode("Allowable Actions");
86 addExtension(allowableActionsRootNode, extensions);
87 rootNode.add(allowableActionsRootNode);
88 }
89
90
91 extensions = object.getExtensions(ExtensionLevel.ACL);
92 if ((extensions != null) && (!extensions.isEmpty())) {
93 DefaultMutableTreeNode aclRootNode = new DefaultMutableTreeNode("ACL");
94 addExtension(aclRootNode, extensions);
95 rootNode.add(aclRootNode);
96 }
97
98
99 extensions = object.getExtensions(ExtensionLevel.POLICIES);
100 if ((extensions != null) && (!extensions.isEmpty())) {
101 DefaultMutableTreeNode policiesRootNode = new DefaultMutableTreeNode("Policies");
102 addExtension(policiesRootNode, extensions);
103 rootNode.add(policiesRootNode);
104 }
105 }
106
107 DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
108
109 extensionsTree.setModel(treeModel);
110 }
111
112 private void addExtension(DefaultMutableTreeNode parent, List<CmisExtensionElement> extensions) {
113 if ((extensions == null) || (extensions.isEmpty())) {
114 return;
115 }
116
117 for (CmisExtensionElement ext : extensions) {
118 DefaultMutableTreeNode node = new DefaultMutableTreeNode(new ExtensionNode(ext));
119 parent.add(node);
120
121 if (ext.getChildren().size() > 0) {
122 addExtension(node, ext.getChildren());
123 }
124 }
125 }
126
127 private void createGUI() {
128 setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
129 setBorder(BorderFactory.createEmptyBorder());
130 setBackground(Color.WHITE);
131
132 extensionsTree = new JTree();
133 extensionsTree.setRootVisible(false);
134 extensionsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
135 extensionsTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
136
137 extensionsTree.setModel(new DefaultTreeModel(null));
138
139 JScrollPane pane = new JScrollPane(extensionsTree);
140 pane.setBorder(BorderFactory.createEmptyBorder());
141
142 add(pane);
143 }
144
145 static class ExtensionNode {
146 private final CmisExtensionElement extension;
147
148 public ExtensionNode(CmisExtensionElement extension) {
149 this.extension = extension;
150 }
151
152 @Override
153 public String toString() {
154 return (extension.getNamespace() == null ? "" : "{" + extension.getNamespace() + "}") + extension.getName()
155 + (!extension.getAttributes().isEmpty() ? " " + extension.getAttributes() : "")
156 + (extension.getChildren().isEmpty() ? ": " + extension.getValue() : "");
157 }
158 }
159 }