You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/09/14 14:22:28 UTC

svn commit: r996864 - in /incubator/chemistry/opencmis-swingclient/trunk: pom.xml src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java

Author: fmui
Date: Tue Sep 14 12:22:28 2010
New Revision: 996864

URL: http://svn.apache.org/viewvc?rev=996864&view=rev
Log:
- switched Swing Client to OpenCMIS 0.2.0
- added extensions view tab

Added:
    incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java   (with props)
Modified:
    incubator/chemistry/opencmis-swingclient/trunk/pom.xml
    incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java

Modified: incubator/chemistry/opencmis-swingclient/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/pom.xml?rev=996864&r1=996863&r2=996864&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/pom.xml (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/pom.xml Tue Sep 14 12:22:28 2010
@@ -227,7 +227,7 @@
         <dependency>
             <groupId>org.apache.chemistry.opencmis</groupId>
             <artifactId>chemistry-opencmis-client-impl</artifactId>
-            <version>0.1.0-incubating-SNAPSHOT</version>
+            <version>0.2.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>log4j</groupId>

Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java?rev=996864&r1=996863&r2=996864&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/DetailsTabs.java Tue Sep 14 12:22:28 2010
@@ -25,43 +25,46 @@ import org.apache.chemistry.opencmis.swi
 
 public class DetailsTabs extends JTabbedPane {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private ClientModel model;
+    private ClientModel model;
 
-	private ObjectPanel objectPanel;
-	private ActionsPanel actionsPanel;
-	private PropertyTable propertyTable;
-	private RelationshipTable relationshipTable;
-	private RenditionTable renditionTable;
-	private ACLTable aclTable;
-	private PolicyTable policyTable;
-	private VersionTable versionTable;
-
-	public DetailsTabs(ClientModel model) {
-		super(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
-
-		this.model = model;
-		createGUI();
-	}
-
-	private void createGUI() {
-		objectPanel = new ObjectPanel(model);
-		actionsPanel = new ActionsPanel(model);
-		propertyTable = new PropertyTable(model);
-		relationshipTable = new RelationshipTable(model);
-		renditionTable = new RenditionTable(model);
-		aclTable = new ACLTable(model);
-		policyTable = new PolicyTable(model);
-		versionTable = new VersionTable(model);
-
-		addTab("Object", objectPanel);
-		addTab("Actions", new JScrollPane(actionsPanel));
-		addTab("Properties", new JScrollPane(propertyTable));
-		addTab("Relationships", new JScrollPane(relationshipTable));
-		addTab("Renditions", new JScrollPane(renditionTable));
-		addTab("ACL", new JScrollPane(aclTable));
-		addTab("Policies", new JScrollPane(policyTable));
-		addTab("Versions", new JScrollPane(versionTable));
-	}
+    private ObjectPanel objectPanel;
+    private ActionsPanel actionsPanel;
+    private PropertyTable propertyTable;
+    private RelationshipTable relationshipTable;
+    private RenditionTable renditionTable;
+    private ACLTable aclTable;
+    private PolicyTable policyTable;
+    private VersionTable versionTable;
+    private ExtensionsPanel extensionsPanel;
+
+    public DetailsTabs(ClientModel model) {
+        super(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
+
+        this.model = model;
+        createGUI();
+    }
+
+    private void createGUI() {
+        objectPanel = new ObjectPanel(model);
+        actionsPanel = new ActionsPanel(model);
+        propertyTable = new PropertyTable(model);
+        relationshipTable = new RelationshipTable(model);
+        renditionTable = new RenditionTable(model);
+        aclTable = new ACLTable(model);
+        policyTable = new PolicyTable(model);
+        versionTable = new VersionTable(model);
+        extensionsPanel = new ExtensionsPanel(model);
+
+        addTab("Object", objectPanel);
+        addTab("Actions", new JScrollPane(actionsPanel));
+        addTab("Properties", new JScrollPane(propertyTable));
+        addTab("Relationships", new JScrollPane(relationshipTable));
+        addTab("Renditions", new JScrollPane(renditionTable));
+        addTab("ACL", new JScrollPane(aclTable));
+        addTab("Policies", new JScrollPane(policyTable));
+        addTab("Versions", new JScrollPane(versionTable));
+        addTab("Extensions", new JScrollPane(extensionsPanel));
+    }
 }

Added: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java?rev=996864&view=auto
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java (added)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java Tue Sep 14 12:22:28 2010
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.swingclient.details;
+
+import java.awt.Color;
+import java.util.List;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeSelectionModel;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
+import org.apache.chemistry.opencmis.commons.enums.ExtensionLevel;
+import org.apache.chemistry.opencmis.swingclient.model.ClientModel;
+import org.apache.chemistry.opencmis.swingclient.model.ClientModelEvent;
+import org.apache.chemistry.opencmis.swingclient.model.ObjectListener;
+
+public class ExtensionsPanel extends JPanel implements ObjectListener {
+
+    private static final long serialVersionUID = 1L;
+
+    private ClientModel model;
+
+    private JTree extensionsTree;
+
+    public ExtensionsPanel(ClientModel model) {
+        super();
+
+        this.model = model;
+        model.addObjectListener(this);
+
+        createGUI();
+    }
+
+    @Override
+    public void objectLoaded(ClientModelEvent event) {
+        CmisObject object = model.getCurrentObject();
+
+        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
+
+        // object extensions
+        DefaultMutableTreeNode objectRootNode = new DefaultMutableTreeNode("Object");
+        addExtension(objectRootNode, object.getExtensions(ExtensionLevel.OBJECT));
+        rootNode.add(objectRootNode);
+
+        // property extensions
+        DefaultMutableTreeNode propertiesRootNode = new DefaultMutableTreeNode("Properties");
+        addExtension(propertiesRootNode, object.getExtensions(ExtensionLevel.PROPERTIES));
+        rootNode.add(propertiesRootNode);
+
+        // allowable actions extensions
+        DefaultMutableTreeNode allowableActionsRootNode = new DefaultMutableTreeNode("Allowable Actions");
+        addExtension(allowableActionsRootNode, object.getExtensions(ExtensionLevel.ALLOWABLE_ACTIONS));
+        rootNode.add(allowableActionsRootNode);
+
+        // ACL extensions
+        DefaultMutableTreeNode aclRootNode = new DefaultMutableTreeNode("ACL");
+        addExtension(aclRootNode, object.getExtensions(ExtensionLevel.ACL));
+        rootNode.add(aclRootNode);
+
+        // policies extensions
+        DefaultMutableTreeNode policiesRootNode = new DefaultMutableTreeNode("Policies");
+        addExtension(policiesRootNode, object.getExtensions(ExtensionLevel.POLICIES));
+        rootNode.add(policiesRootNode);
+
+        DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
+
+        extensionsTree.setModel(treeModel);
+    }
+
+    private void addExtension(DefaultMutableTreeNode parent, List<CmisExtensionElement> extensions) {
+        if ((extensions == null) || (extensions.isEmpty())) {
+            return;
+        }
+
+        for (CmisExtensionElement ext : extensions) {
+            DefaultMutableTreeNode node = new DefaultMutableTreeNode(new ExtensionNode(ext));
+            parent.add(node);
+
+            if (ext.getChildren().size() > 0) {
+                addExtension(node, ext.getChildren());
+            }
+        }
+    }
+
+    private void createGUI() {
+        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
+        setBorder(BorderFactory.createEmptyBorder());
+        setBackground(Color.WHITE);
+
+        extensionsTree = new JTree();
+        extensionsTree.setRootVisible(false);
+        extensionsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+        extensionsTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+        extensionsTree.setModel(new DefaultTreeModel(null));
+
+        JScrollPane pane = new JScrollPane(extensionsTree);
+        pane.setBorder(BorderFactory.createEmptyBorder());
+
+        add(pane);
+    }
+
+    static class ExtensionNode {
+        private CmisExtensionElement extension;
+
+        public ExtensionNode(CmisExtensionElement extension) {
+            this.extension = extension;
+        }
+
+        @Override
+        public String toString() {
+            return (extension.getNamespace() == null ? "" : "{" + extension.getNamespace() + "}") + extension.getName()
+                    + (!extension.getAttributes().isEmpty() ? " " + extension.getAttributes() : "")
+                    + (extension.getChildren().isEmpty() ? ": " + extension.getValue() : "");
+        }
+    }
+}

Propchange: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/details/ExtensionsPanel.java
------------------------------------------------------------------------------
    svn:eol-style = native