Author: fmui
Date: Wed Dec 19 19:58:55 2012
New Revision: 1424061

URL: http://svn.apache.org/viewvc?rev=1424061&view=rev
Log:
Workbench: added create Item dialog

Added:
    
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java
   (with props)
Modified:
    
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
    
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java

Modified: 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java?rev=1424061&r1=1424060&r2=1424061&view=diff
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
 (original)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
 Wed Dec 19 19:58:55 2012
@@ -61,11 +61,9 @@ public class ClientFrame extends JFrame 
     private static final int BUTTON_CHANGELOG = 4;
     private static final int BUTTON_CONSOLE = 5;
     private static final int BUTTON_TCK = 6;
-    private static final int BUTTON_CREATE_DOCUMENT = 7;
-    private static final int BUTTON_CREATE_FOLDER = 8;
-    private static final int BUTTON_CREATE_RELATIONSHIP = 9;
-    private static final int BUTTON_LOG = 10;
-    private static final int BUTTON_INFO = 11;
+    private static final int BUTTON_CREATE = 7;
+    private static final int BUTTON_LOG = 8;
+    private static final int BUTTON_INFO = 9;
 
     private static final String PREFS_X = "x";
     private static final String PREFS_Y = "y";
@@ -85,6 +83,11 @@ public class ClientFrame extends JFrame 
     private JToolBar toolBar;
     private JButton[] toolbarButton;
     private JPopupMenu toolbarConsolePopup;
+    private JPopupMenu toolbarCreatePopup;
+    private JMenuItem documentMenuItem;
+    private JMenuItem itemMenuItem;
+    private JMenuItem folderMenuItem;
+    private JMenuItem relationshipMenuItem;
 
     private JSplitPane split;
     private FolderPanel folderPanel;
@@ -147,7 +150,7 @@ public class ClientFrame extends JFrame 
 
         toolBar = new JToolBar("CMIS Toolbar", JToolBar.HORIZONTAL);
 
-        toolbarButton = new JButton[12];
+        toolbarButton = new JButton[10];
 
         toolbarButton[BUTTON_CONNECT] = new JButton("Connection", 
ClientHelper.getIcon("connect.png"));
         toolbarButton[BUTTON_CONNECT].addActionListener(new ActionListener() {
@@ -236,36 +239,56 @@ public class ClientFrame extends JFrame 
 
         toolBar.addSeparator();
 
-        toolbarButton[BUTTON_CREATE_DOCUMENT] = new JButton("Create Document", 
ClientHelper.getIcon("newdocument.png"));
-        toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(false);
-        toolbarButton[BUTTON_CREATE_DOCUMENT].addActionListener(new 
ActionListener() {
-            public void actionPerformed(ActionEvent e) {
+        toolbarCreatePopup = new JPopupMenu();
+        documentMenuItem = new JMenuItem("Document");
+        documentMenuItem.setEnabled(true);
+        toolbarCreatePopup.add(documentMenuItem);
+        documentMenuItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent event) {
                 new CreateDocumentDialog(thisFrame, model);
             }
         });
 
-        toolBar.add(toolbarButton[BUTTON_CREATE_DOCUMENT]);
+        itemMenuItem = new JMenuItem("Item");
+        itemMenuItem.setEnabled(false);
+        toolbarCreatePopup.add(itemMenuItem);
+        itemMenuItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent event) {
+                new CreateItemDialog(thisFrame, model);
+            }
+        });
 
-        toolbarButton[BUTTON_CREATE_FOLDER] = new JButton("Create Folder", 
ClientHelper.getIcon("newfolder.png"));
-        toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(false);
-        toolbarButton[BUTTON_CREATE_FOLDER].addActionListener(new 
ActionListener() {
-            public void actionPerformed(ActionEvent e) {
+        folderMenuItem = new JMenuItem("Folder");
+        folderMenuItem.setEnabled(true);
+        toolbarCreatePopup.add(folderMenuItem);
+        folderMenuItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent event) {
                 new CreateFolderDialog(thisFrame, model);
             }
         });
 
-        toolBar.add(toolbarButton[BUTTON_CREATE_FOLDER]);
+        relationshipMenuItem = new JMenuItem("Relationship");
+        relationshipMenuItem.setEnabled(false);
+        toolbarCreatePopup.add(relationshipMenuItem);
+        relationshipMenuItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent event) {
+                new CreateRelationshipDialog(thisFrame, model);
+            }
+        });
 
-        toolbarButton[BUTTON_CREATE_RELATIONSHIP] = new JButton("Create 
Relationship",
-                ClientHelper.getIcon("newrelationship.png"));
-        toolbarButton[BUTTON_CREATE_RELATIONSHIP].setEnabled(false);
-        toolbarButton[BUTTON_CREATE_RELATIONSHIP].addActionListener(new 
ActionListener() {
+        toolbarButton[BUTTON_CREATE] = new JButton("Create Object", 
ClientHelper.getIcon("newdocument.png"));
+        toolbarButton[BUTTON_CREATE].setEnabled(false);
+        toolbarButton[BUTTON_CREATE].addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
-                new CreateRelationshipDialog(thisFrame, model);
+                toolbarCreatePopup.show(toolbarButton[BUTTON_CREATE], 0, 
toolbarButton[BUTTON_CREATE].getHeight());
             }
         });
 
-        toolBar.add(toolbarButton[BUTTON_CREATE_RELATIONSHIP]);
+        toolBar.add(toolbarButton[BUTTON_CREATE]);
 
         toolBar.addSeparator();
 
@@ -334,9 +357,10 @@ public class ClientFrame extends JFrame 
                 
toolbarButton[BUTTON_CHANGELOG].setEnabled(model.supportsChangeLog());
                 toolbarButton[BUTTON_CONSOLE].setEnabled(true);
                 toolbarButton[BUTTON_TCK].setEnabled(true);
-                toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(true);
-                toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(true);
-                
toolbarButton[BUTTON_CREATE_RELATIONSHIP].setEnabled(model.supportsRelationships());
+                toolbarButton[BUTTON_CREATE].setEnabled(true);
+
+                itemMenuItem.setEnabled(model.supportsItems());
+                relationshipMenuItem.setEnabled(model.supportsRelationships());
 
                 Object user = 
clientSession.getSessionParameters().get(SessionParameter.USER);
                 if (user != null) {
@@ -353,9 +377,7 @@ public class ClientFrame extends JFrame 
                 toolbarButton[BUTTON_CHANGELOG].setEnabled(false);
                 toolbarButton[BUTTON_CONSOLE].setEnabled(false);
                 toolbarButton[BUTTON_TCK].setEnabled(false);
-                toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(false);
-                toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(false);
-                toolbarButton[BUTTON_CREATE_RELATIONSHIP].setEnabled(false);
+                toolbarButton[BUTTON_CREATE].setEnabled(false);
 
                 ClientHelper.showError(null, ex);
 

Added: 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java?rev=1424061&view=auto
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java
 (added)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java
 Wed Dec 19 19:58:55 2012
@@ -0,0 +1,101 @@
+/*
+ * 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.workbench;
+
+import java.awt.Cursor;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+
+import org.apache.chemistry.opencmis.client.api.ObjectId;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.workbench.model.ClientModel;
+import org.apache.chemistry.opencmis.workbench.swing.CreateDialog;
+
+public class CreateItemDialog extends CreateDialog {
+
+    private static final long serialVersionUID = 1L;
+
+    private JTextField nameField;
+    private JComboBox typeBox;
+
+    public CreateItemDialog(Frame owner, ClientModel model) {
+        super(owner, "Create Item", model);
+        createGUI();
+    }
+
+    private void createGUI() {
+        final CreateItemDialog thisDialog = this;
+
+        nameField = new JTextField(60);
+        createRow("Name:", nameField, 0);
+
+        Object[] types = getTypes(BaseTypeId.CMIS_ITEM.value());
+        if (types.length == 0) {
+            JOptionPane.showMessageDialog(this, "No creatable type!", 
"Creatable Types", JOptionPane.ERROR_MESSAGE);
+            thisDialog.dispose();
+            return;
+        }
+
+        typeBox = new JComboBox(types);
+        typeBox.setSelectedIndex(0);
+        createRow("Type:", typeBox, 1);
+
+        JButton createButton = new JButton("Create Item", 
ClientHelper.getIcon("newfolder.png"));
+        createButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                String name = nameField.getText();
+                String type = ((ObjectTypeItem) 
typeBox.getSelectedItem()).getObjectType().getId();
+
+                try {
+                    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+
+                    ObjectId objectId = getClientModel().createItem(name, 
type);
+
+                    if (objectId != null) {
+                        getClientModel().loadObject(objectId.getId());
+                    }
+
+                    thisDialog.setVisible(false);
+                    thisDialog.dispose();
+                } catch (Exception e) {
+                    ClientHelper.showError(null, e);
+                } finally {
+                    
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+
+                    try {
+                        getClientModel().reloadFolder();
+                    } catch (Exception e) {
+                        ClientHelper.showError(null, e);
+                    }
+                }
+            }
+        });
+        createRow("", createButton, 3);
+
+        getRootPane().setDefaultButton(createButton);
+
+        showDialog();
+    }
+}

Propchange: 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/CreateItemDialog.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java?rev=1424061&r1=1424060&r2=1424061&view=diff
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java
 (original)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java
 Wed Dec 19 19:58:55 2012
@@ -134,6 +134,16 @@ public class ClientModel {
         }
     }
 
+    public synchronized boolean supportsItems() {
+        for (ObjectType type : 
clientSession.getSession().getTypeChildren(null, false)) {
+            if (type.getBaseTypeId() == BaseTypeId.CMIS_ITEM) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     public synchronized boolean supportsRelationships() {
         for (ObjectType type : 
clientSession.getSession().getTypeChildren(null, false)) {
             if (type.getBaseTypeId() == BaseTypeId.CMIS_RELATIONSHIP) {
@@ -292,6 +302,14 @@ public class ClientModel {
         }
     }
 
+    public synchronized ObjectId createItem(String name, String type) throws 
Exception {
+        Map<String, Object> properties = new HashMap<String, Object>();
+        properties.put(PropertyIds.NAME, name);
+        properties.put(PropertyIds.OBJECT_TYPE_ID, type);
+
+        return clientSession.getSession().createItem(properties, 
currentFolder, null, null, null);
+    }
+
     public synchronized ObjectId createFolder(String name, String type) throws 
Exception {
         Map<String, Object> properties = new HashMap<String, Object>();
         properties.put(PropertyIds.NAME, name);


Reply via email to