Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,328 @@
+/*
+ * 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.model;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.swing.event.EventListenerList;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.ItemIterable;
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.client.api.OperationContext;
+import org.apache.chemistry.opencmis.client.api.QueryResult;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.client.api.Tree;
+import org.apache.chemistry.opencmis.client.runtime.OperationContextImpl;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.data.ContentStream;
+import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+
+public class ClientModel {
+
+       private static final Set<String> PROPERTY_SET = new HashSet<String>();
+       static {
+               PROPERTY_SET.add(PropertyIds.OBJECT_ID);
+               PROPERTY_SET.add(PropertyIds.OBJECT_TYPE_ID);
+               PROPERTY_SET.add(PropertyIds.NAME);
+               PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_MIME_TYPE);
+               PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_LENGTH);
+               PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_FILE_NAME);
+               PROPERTY_SET.add(PropertyIds.CREATED_BY);
+               PROPERTY_SET.add(PropertyIds.CREATION_DATE);
+               PROPERTY_SET.add(PropertyIds.LAST_MODIFIED_BY);
+               PROPERTY_SET.add(PropertyIds.LAST_MODIFICATION_DATE);
+       }
+
+       private static OperationContext FOLDER_OC = null;
+
+       private static final OperationContext OBJECT_OC = new 
OperationContextImpl(
+                       Collections.singleton("*"), true, true, true,
+                       IncludeRelationships.BOTH, Collections.singleton("*"), 
false, null,
+                       true, 1000);
+
+       // object details must not be older than 60 seconds
+       private static final long OLD = 60 * 1000;
+
+       private ClientSession clientSession;
+
+       private Folder currentFolder = null;
+       private List<CmisObject> currentChildren = Collections.emptyList();
+       private CmisObject currentObject = null;
+
+       private EventListenerList listenerList = new EventListenerList();
+
+       public ClientModel() {
+
+       }
+
+       public void addFolderListener(FolderListener listener) {
+               listenerList.add(FolderListener.class, listener);
+       }
+
+       public void removeFolderListener(FolderListener listener) {
+               listenerList.remove(FolderListener.class, listener);
+       }
+
+       public void addObjectListener(ObjectListener listener) {
+               listenerList.add(ObjectListener.class, listener);
+       }
+
+       public void removeObjectListener(ObjectListener listener) {
+               listenerList.remove(ObjectListener.class, listener);
+       }
+
+       public synchronized void setClientSession(ClientSession clientSession) {
+               this.clientSession = clientSession;
+               FOLDER_OC = createFolderOperationContext();
+       }
+
+       public synchronized RepositoryInfo getRepositoryInfo() throws Exception 
{
+               Session session = clientSession.getSession();
+               return session.getRepositoryInfo();
+       }
+
+       public synchronized String getRepositoryName() {
+               try {
+                       return getRepositoryInfo().getName();
+               } catch (Exception e) {
+                       return "?";
+               }
+       }
+
+       public synchronized boolean supportsQuery() {
+               try {
+                       RepositoryCapabilities cap = 
getRepositoryInfo().getCapabilities();
+                       if (cap == null) {
+                               return true;
+                       }
+
+                       return (cap.getQueryCapability() != null)
+                                       && (cap.getQueryCapability() != 
CapabilityQuery.NONE);
+               } catch (Exception e) {
+                       return false;
+               }
+       }
+
+       public synchronized void loadFolder(String folderId, boolean byPath)
+                       throws Exception {
+               try {
+                       Session session = clientSession.getSession();
+                       CmisObject folderObject = null;
+
+                       if (byPath) {
+                               folderObject = 
session.getObjectByPath(folderId);
+                       } else {
+                               folderObject = session.getObject(session
+                                               .createObjectId(folderId));
+                       }
+
+                       if (!(folderObject instanceof Folder)) {
+                               throw new Exception("Not a folder!");
+                       }
+
+                       List<CmisObject> children = new ArrayList<CmisObject>();
+                       ItemIterable<CmisObject> iter = ((Folder) folderObject)
+                                       .getChildren(FOLDER_OC);
+                       for (CmisObject child : iter) {
+                               children.add(child);
+                       }
+
+                       setCurrentFolder((Folder) folderObject, children);
+               } catch (Exception ex) {
+                       setCurrentFolder(null, new ArrayList<CmisObject>(0));
+                       throw ex;
+               }
+       }
+
+       public synchronized void reloadFolder() throws Exception {
+               loadFolder(currentFolder.getId(), false);
+       }
+
+       public synchronized void loadObject(String objectId) throws Exception {
+               try {
+                       Session session = clientSession.getSession();
+                       CmisObject object = session.getObject(session
+                                       .createObjectId(objectId), OBJECT_OC);
+                       object.refreshIfOld(OLD);
+
+                       setObjectFolder(object);
+               } catch (Exception ex) {
+                       setObjectFolder(null);
+                       throw ex;
+               }
+       }
+
+       public synchronized ItemIterable<QueryResult> query(String q,
+                       boolean searchAllVersions, int maxHits) throws 
Exception {
+               OperationContext queryContext = new OperationContextImpl(null, 
false,
+                               false, false, IncludeRelationships.NONE, null, 
false, null,
+                               false, maxHits);
+
+               Session session = clientSession.getSession();
+               return session.query(q, searchAllVersions, queryContext);
+       }
+
+       public synchronized List<Tree<ObjectType>> getTypeDescendants()
+                       throws Exception {
+               Session session = clientSession.getSession();
+               return session.getTypeDescendants(null, -1, true);
+       }
+
+       public ContentStream createContentStream(String filename) throws 
Exception {
+               ContentStream content = null;
+               if ((filename != null) && (filename.length() > 0)) {
+                       File file = new File(filename);
+                       InputStream stream = new FileInputStream(file);
+
+                       content = clientSession.getSession().getObjectFactory()
+                                       .createContentStream(file.getName(), 
file.length(),
+                                                       
MIMETypes.getMIMEType(file), stream);
+               }
+
+               return content;
+       }
+
+       public synchronized void createDocument(String name, String type,
+                       String filename, VersioningState versioningState) 
throws Exception {
+               Map<String, Object> properties = new HashMap<String, Object>();
+               properties.put(PropertyIds.NAME, name);
+               properties.put(PropertyIds.OBJECT_TYPE_ID, type);
+
+               ContentStream content = createContentStream(filename);
+               clientSession.getSession().createDocument(properties, 
currentFolder,
+                               content, versioningState, null, null, null);
+       }
+
+       public synchronized void createFolder(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);
+
+               clientSession.getSession().createFolder(properties, 
currentFolder,
+                               null, null, null);
+       }
+
+       public synchronized List<ObjectType> getCreateableTypes(String 
rootTypeId) {
+               List<ObjectType> result = new ArrayList<ObjectType>();
+
+               List<Tree<ObjectType>> types = clientSession.getSession()
+                               .getTypeDescendants(rootTypeId, -1, false);
+               addType(types, result);
+
+               ObjectType rootType = 
clientSession.getSession().getTypeDefinition(
+                               rootTypeId);
+               boolean isCreatable = (rootType.isCreatable() == null ? true : 
rootType
+                               .isCreatable().booleanValue());
+               if (isCreatable) {
+                       result.add(rootType);
+               }
+
+               Collections.sort(result, new Comparator<ObjectType>() {
+                       public int compare(ObjectType ot1, ObjectType ot2) {
+                               return 
ot1.getDisplayName().compareTo(ot2.getDisplayName());
+                       }
+               });
+
+               return result;
+       }
+
+       private void addType(List<Tree<ObjectType>> types,
+                       List<ObjectType> resultList) {
+               for (Tree<ObjectType> tt : types) {
+                       if (tt.getItem() != null) {
+                               boolean isCreatable = 
(tt.getItem().isCreatable() == null ? true
+                                               : 
tt.getItem().isCreatable().booleanValue());
+
+                               if (isCreatable) {
+                                       resultList.add(tt.getItem());
+                               }
+
+                               addType(tt.getChildren(), resultList);
+                       }
+               }
+       }
+
+       public synchronized Folder getCurrentFolder() {
+               return currentFolder;
+       }
+
+       public synchronized List<CmisObject> getCurrentChildren() {
+               return currentChildren;
+       }
+
+       private synchronized void setCurrentFolder(Folder folder,
+                       List<CmisObject> children) {
+               currentFolder = folder;
+               currentChildren = children;
+
+               for (FolderListener fl : listenerList
+                               .getListeners(FolderListener.class)) {
+                       fl.folderLoaded(new ClientModelEvent(this));
+               }
+       }
+
+       public synchronized CmisObject getCurrentObject() {
+               return currentObject;
+       }
+
+       private synchronized void setObjectFolder(CmisObject object) {
+               currentObject = object;
+
+               for (ObjectListener ol : listenerList
+                               .getListeners(ObjectListener.class)) {
+                       ol.objectLoaded(new ClientModelEvent(this));
+               }
+       }
+
+       private synchronized OperationContext createFolderOperationContext() {
+               ObjectType type = clientSession.getSession().getTypeDefinition(
+                               BaseTypeId.CMIS_DOCUMENT.value());
+
+               Set<String> filter = new HashSet<String>();
+               for (String propId : PROPERTY_SET) {
+                       PropertyDefinition<?> propDef = 
type.getPropertyDefinitions().get(
+                                       propId);
+                       if (propDef != null) {
+                               filter.add(propDef.getQueryName());
+                       }
+               }
+
+               return new OperationContextImpl(filter, false, true, false,
+                               IncludeRelationships.NONE, null, false, null, 
false, 1000);
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModelEvent.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModelEvent.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModelEvent.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModelEvent.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,38 @@
+/*
+ * 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.model;
+
+import java.util.EventObject;
+
+public class ClientModelEvent extends EventObject {
+
+       private static final long serialVersionUID = 1L;
+
+       public ClientModelEvent(Object source) {
+               super(source);
+       }
+
+       public ClientModel getClientModel() {
+               if (getSource() instanceof ClientModel) {
+                       return (ClientModel) getSource();
+               }
+
+               return null;
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientSession.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientSession.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientSession.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientSession.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,93 @@
+/*
+ * 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.model;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Repository;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.enums.BindingType;
+
+public class ClientSession {
+
+       private List<Repository> repositories;
+       private Session session;
+
+       public ClientSession(String url, BindingType binding, String username,
+                       String password) {
+               Map<String, String> parameters = new HashMap<String, String>();
+
+               if (binding == BindingType.WEBSERVICES) {
+                       parameters.put(SessionParameter.BINDING_TYPE,
+                                       BindingType.WEBSERVICES.value());
+                       parameters
+                                       
.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE, url);
+                       parameters
+                                       
.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE, url);
+                       
parameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE, url);
+                       parameters
+                                       
.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE, url);
+                       
parameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE, url);
+                       
parameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,
+                                       url);
+                       
parameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE,
+                                       url);
+                       
parameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE, url);
+                       
parameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE, url);
+               } else {
+                       parameters.put(SessionParameter.BINDING_TYPE, 
BindingType.ATOMPUB
+                                       .value());
+                       parameters.put(SessionParameter.ATOMPUB_URL, url);
+               }
+               parameters.put(SessionParameter.USER, username);
+               parameters.put(SessionParameter.PASSWORD, password);
+
+               connect(parameters);
+       }
+
+       public ClientSession(Map<String, String> sessionParameters) {
+               if (sessionParameters == null) {
+                       throw new IllegalArgumentException("Parameters must not 
be null!");
+               }
+
+               connect(sessionParameters);
+       }
+
+       private void connect(Map<String, String> sessionParameters) {
+               repositories = SessionFactoryImpl.newInstance().getRepositories(
+                               sessionParameters);
+       }
+
+       public List<Repository> getRepositories() {
+               return repositories;
+       }
+
+       public Session createSession(int index) {
+               session = repositories.get(index).createSession();
+               return getSession();
+       }
+
+       public Session getSession() {
+               return session;
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/FolderListener.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/FolderListener.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/FolderListener.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/FolderListener.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,26 @@
+/*
+ * 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.model;
+
+import java.util.EventListener;
+
+public interface FolderListener extends EventListener {
+
+       void folderLoaded(ClientModelEvent event);
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/MIMETypes.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/MIMETypes.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/MIMETypes.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/MIMETypes.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,253 @@
+/*
+ * 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.model;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MIMETypes {
+
+       private static Map<String, String> EXT2MIME = new HashMap<String, 
String>();
+
+       static {
+               EXT2MIME.put("", "application/octet-stream");
+               EXT2MIME.put("ai", "application/postscript");
+               EXT2MIME.put("aif", "audio/x-aiff");
+               EXT2MIME.put("aifc", "audio/x-aiff");
+               EXT2MIME.put("aiff", "audio/x-aiff");
+               EXT2MIME.put("asf", "video/x-ms-asf");
+               EXT2MIME.put("asr", "video/x-ms-asf");
+               EXT2MIME.put("asx", "video/x-ms-asf");
+               EXT2MIME.put("au", "audio/basic");
+               EXT2MIME.put("avi", "video/x-msvideo");
+               EXT2MIME.put("axs", "application/olescript");
+               EXT2MIME.put("bas", "text/plain");
+               EXT2MIME.put("bmp", "image/bmp");
+               EXT2MIME.put("c", "text/plain");
+               EXT2MIME.put("cat", "application/vnd.ms-pkiseccat");
+               EXT2MIME.put("cdf", "application/x-cdf");
+               EXT2MIME.put("cer", "application/x-x509-ca-cert");
+               EXT2MIME.put("clp", "application/x-msclip");
+               EXT2MIME.put("cmx", "image/x-cmx");
+               EXT2MIME.put("cod", "image/cis-cod");
+               EXT2MIME.put("cpio", "application/x-cpio");
+               EXT2MIME.put("crd", "application/x-mscardfile");
+               EXT2MIME.put("crl", "application/pkix-crl");
+               EXT2MIME.put("crt", "application/x-x509-ca-cert");
+               EXT2MIME.put("csh", "application/x-csh");
+               EXT2MIME.put("css", "text/css");
+               EXT2MIME.put("dll", "application/x-msdownload");
+               EXT2MIME.put("doc", "application/msword");
+               EXT2MIME
+                               .put("docx",
+                                               
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+               EXT2MIME
+                               .put("doct",
+                                               
"application/vnd.openxmlformats-officedocument.wordprocessingml.template");
+               EXT2MIME.put("dot", "application/msword");
+               EXT2MIME.put("dvi", "application/x-dvi");
+               EXT2MIME.put("dxr", "application/x-director");
+               EXT2MIME.put("eps", "application/postscript");
+               EXT2MIME.put("etx", "text/x-setext");
+               EXT2MIME.put("evy", "application/envoy");
+               EXT2MIME.put("fif", "application/fractals");
+               EXT2MIME.put("flr", "x-world/x-vrml");
+               EXT2MIME.put("gif", "image/gif");
+               EXT2MIME.put("gtar", "application/x-gtar");
+               EXT2MIME.put("gz", "application/x-gzip");
+               EXT2MIME.put("h", "text/plain");
+               EXT2MIME.put("hdf", "application/x-hdf");
+               EXT2MIME.put("hlp", "application/winhlp");
+               EXT2MIME.put("hqx", "application/mac-binhex40");
+               EXT2MIME.put("hta", "application/hta");
+               EXT2MIME.put("htc", "text/x-component");
+               EXT2MIME.put("htm", "text/html");
+               EXT2MIME.put("html", "text/html");
+               EXT2MIME.put("htt", "text/webviewhtml");
+               EXT2MIME.put("ico", "image/x-icon");
+               EXT2MIME.put("ief", "image/ief");
+               EXT2MIME.put("iii", "application/x-iphone");
+               EXT2MIME.put("isp", "application/x-internet-signup");
+               EXT2MIME.put("jfif", "image/pipeg");
+               EXT2MIME.put("jpe", "image/jpeg");
+               EXT2MIME.put("jpeg", "image/jpeg");
+               EXT2MIME.put("jpg", "image/jpeg");
+               EXT2MIME.put("js", "application/x-javascript");
+               EXT2MIME.put("latex", "application/x-latex");
+               EXT2MIME.put("lsf", "video/x-la-asf");
+               EXT2MIME.put("lsx", "video/x-la-asf");
+               EXT2MIME.put("m3u", "audio/x-mpegurl");
+               EXT2MIME.put("man", "application/x-troff-man");
+               EXT2MIME.put("mdb", "application/x-msaccess");
+               EXT2MIME.put("me", "application/x-troff-me");
+               EXT2MIME.put("mhtv", "message/rfc822");
+               EXT2MIME.put("mhtml", "message/rfc822");
+               EXT2MIME.put("mid", "audio/mid");
+               EXT2MIME.put("mov", "video/quicktime");
+               EXT2MIME.put("movie", "video/x-sgi-movie");
+               EXT2MIME.put("mp2", "video/mpeg");
+               EXT2MIME.put("mp3", "audio/mpeg");
+               EXT2MIME.put("mpa", "video/mpeg");
+               EXT2MIME.put("mpe", "video/mpegv");
+               EXT2MIME.put("mpeg", "video/mpeg");
+               EXT2MIME.put("mpg", "video/mpegv");
+               EXT2MIME.put("mpp", "application/vnd.ms-project");
+               EXT2MIME.put("mpv2", "video/mpeg");
+               EXT2MIME.put("ms", "application/x-troff-ms");
+               EXT2MIME.put("mvb", "application/x-msmediaview");
+               EXT2MIME.put("nws", "message/rfc822");
+               EXT2MIME.put("oda", "application/oda");
+               EXT2MIME.put("p10", "application/pkcs10");
+               EXT2MIME.put("p12", "application/x-pkcs12v");
+               EXT2MIME.put("p7b", "application/x-pkcs7-certificates");
+               EXT2MIME.put("p7c", "application/x-pkcs7-mime");
+               EXT2MIME.put("p7m", "application/x-pkcs7-mime");
+               EXT2MIME.put("p7r", "application/x-pkcs7-certreqresp");
+               EXT2MIME.put("p7s", "application/x-pkcs7-signature");
+               EXT2MIME.put("pbm", "image/x-portable-bitmap");
+               EXT2MIME.put("pdf", "application/pdf");
+               EXT2MIME.put("pfx", "application/x-pkcs12");
+               EXT2MIME.put("pgm", "image/x-portable-graymap");
+               EXT2MIME.put("vpko", "application/ynd.ms-pkipko");
+               EXT2MIME.put("pma", "application/x-perfmon");
+               EXT2MIME.put("pmc", "application/x-perfmon");
+               EXT2MIME.put("pml", "application/x-perfmon");
+               EXT2MIME.put("pmr", "application/x-perfmon");
+               EXT2MIME.put("pmw", "application/x-perfmon");
+               EXT2MIME.put("png", "image/png");
+               EXT2MIME.put("pnm", "image/x-portable-anymap");
+               EXT2MIME.put("pot", "application/vnd.ms-powerpoint");
+               EXT2MIME.put("ppm", "image/x-portable-pixmap");
+               EXT2MIME.put("pps", "application/vnd.ms-powerpoint");
+               EXT2MIME.put("ppt", "application/vnd.ms-powerpoint");
+               EXT2MIME
+                               .put("pptx",
+                                               
"application/vnd.openxmlformats-officedocument.presentationml.presentation");
+               EXT2MIME
+                               .put("ppsx",
+                                               
"application/vnd.openxmlformats-officedocument.presentationml.slideshow");
+               EXT2MIME
+                               .put("potx",
+                                               
"application/vnd.openxmlformats-officedocument.presentationml.template");
+               EXT2MIME.put("prf", "application/pics-rules");
+               EXT2MIME.put("ps", "application/postscript");
+               EXT2MIME.put("pub", "application/x-mspublisher");
+               EXT2MIME.put("qt", "video/quicktime");
+               EXT2MIME.put("ra", "audio/x-pn-realaudio");
+               EXT2MIME.put("ram", "audio/x-pn-realaudio");
+               EXT2MIME.put("ras", "image/x-cmu-raster");
+               EXT2MIME.put("rgb", "image/x-rgb");
+               EXT2MIME.put("rmi", "audio/mid");
+               EXT2MIME.put("roff", "application/x-troff");
+               EXT2MIME.put("rtf", "application/rtf");
+               EXT2MIME.put("rtx", "text/richtext");
+               EXT2MIME.put("scd", "application/x-msschedule");
+               EXT2MIME.put("sct", "text/scriptlet");
+               EXT2MIME.put("sh", "application/x-sh");
+               EXT2MIME.put("shar", "application/x-shar");
+               EXT2MIME.put("sit", "application/x-stuffit");
+               EXT2MIME.put("snd", "audio/basic");
+               EXT2MIME.put("spc", "application/x-pkcs7-certificates");
+               EXT2MIME.put("spl", "application/futuresplash");
+               EXT2MIME.put("src", "application/x-wais-source");
+               EXT2MIME.put("sst", "application/vnd.ms-pkicertstore");
+               EXT2MIME.put("stl", "application/vnd.ms-pkistl");
+               EXT2MIME.put("stm", "text/html");
+               EXT2MIME.put("svg", "image/svg+xml");
+               EXT2MIME.put("swf", "application/x-shockwave-flash");
+               EXT2MIME.put("t", "application/x-troff");
+               EXT2MIME.put("tar", "application/x-tar");
+               EXT2MIME.put("tcl", "application/x-tcl");
+               EXT2MIME.put("tex", "application/x-tex");
+               EXT2MIME.put("texi", "application/x-texinfo");
+               EXT2MIME.put("texinfo", "application/x-texinfo");
+               EXT2MIME.put("tgz", "application/x-compressed");
+               EXT2MIME.put("tif", "image/tiff");
+               EXT2MIME.put("tiff", "image/tiff");
+               EXT2MIME.put("tr", "application/x-troff");
+               EXT2MIME.put("trm", "application/x-msterminal");
+               EXT2MIME.put("tsv", "text/tab-separated-values");
+               EXT2MIME.put("txt", "text/plain");
+               EXT2MIME.put("uls", "text/iuls");
+               EXT2MIME.put("ustar", "application/x-ustar");
+               EXT2MIME.put("vcf", "text/x-vcard");
+               EXT2MIME.put("vrml", "x-world/x-vrml");
+               EXT2MIME.put("wav", "audio/x-wav");
+               EXT2MIME.put("wcm", "application/vnd.ms-works");
+               EXT2MIME.put("wdb", "application/vnd.ms-works");
+               EXT2MIME.put("wmf", "application/x-msmetafile");
+               EXT2MIME.put("wps", "application/vnd.ms-works");
+               EXT2MIME.put("wri", "application/x-mswrite");
+               EXT2MIME.put("wrl", "x-world/x-vrml");
+               EXT2MIME.put("wrz", "x-world/x-vrml");
+               EXT2MIME.put("xaf", "x-world/x-vrml");
+               EXT2MIME.put("xbm", "image/x-xbitmap");
+               EXT2MIME.put("xla", "application/vnd.ms-excel");
+               EXT2MIME.put("xlc", "application/vnd.ms-excel");
+               EXT2MIME.put("xlm", "application/vnd.ms-excel");
+               EXT2MIME.put("xls", "application/vnd.ms-excel");
+               EXT2MIME
+                               .put("xlsx",
+                                               
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+               EXT2MIME.put("xlt", "application/vnd.ms-excel");
+               EXT2MIME
+                               .put("xltx",
+                                               
"application/vnd.openxmlformats-officedocument.spreadsheetml.template");
+               EXT2MIME.put("xlw", "application/vnd.ms-excel");
+               EXT2MIME.put("xml", "text/xml");
+               EXT2MIME.put("xof", "x-world/x-vrml");
+               EXT2MIME.put("xpm", "image/x-xpixmap");
+               EXT2MIME.put("xwd", "image/x-xwindowdump");
+               EXT2MIME.put("z", "application/x-compress");
+               EXT2MIME.put("zip", "application/zip");
+       }
+
+       /**
+        * Returns the MIME type for file extension.
+        */
+       public static String getMIMEType(String ext) {
+               if (ext == null) {
+                       return EXT2MIME.get("");
+               }
+
+               int x = ext.lastIndexOf('.');
+               if (x > -1) {
+                       ext = ext.substring(x + 1);
+               }
+
+               String mime = EXT2MIME.get(ext.toLowerCase());
+               if (mime == null) {
+                       mime = EXT2MIME.get("");
+               }
+
+               return mime;
+       }
+
+       /**
+        * Returns the MIME type for a file.
+        */
+       public static String getMIMEType(File file) {
+               if (file == null) {
+                       return getMIMEType("");
+               }
+
+               return getMIMEType(file.getName());
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ObjectListener.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ObjectListener.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ObjectListener.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ObjectListener.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,26 @@
+/*
+ * 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.model;
+
+import java.util.EventListener;
+
+public interface ObjectListener extends EventListener {
+
+       void objectLoaded(ClientModelEvent event);
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/ActionPanel.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/ActionPanel.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/ActionPanel.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/ActionPanel.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,153 @@
+/*
+ * 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.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.swingclient.ClientHelper;
+import org.apache.chemistry.opencmis.swingclient.model.ClientModel;
+
+public abstract class ActionPanel extends JPanel implements ActionListener {
+
+       private static final long serialVersionUID = 1L;
+
+       private ClientModel model;
+       private CmisObject object;
+
+       private JPanel centerPanel;
+
+       public ActionPanel(String title, String buttonLabel, ClientModel model) 
{
+               super();
+               this.model = model;
+               createGUI(title, buttonLabel);
+       }
+
+       public ClientModel getClientModel() {
+               return model;
+       }
+
+       public void setObject(CmisObject object) {
+               this.object = object;
+       }
+
+       public CmisObject getObject() {
+               return object;
+       }
+
+       protected void createGUI(String title, String buttonLabel) {
+               BorderLayout borderLayout = new BorderLayout();
+               borderLayout.setVgap(3);
+               setLayout(borderLayout);
+
+               setBackground(Color.WHITE);
+               setBorder(BorderFactory.createCompoundBorder(BorderFactory
+                               .createEmptyBorder(5, 5, 5, 5), BorderFactory
+                               
.createCompoundBorder(BorderFactory.createLineBorder(
+                                               Color.GRAY, 2), 
BorderFactory.createEmptyBorder(5, 5,
+                                               5, 5))));
+
+               Font labelFont = UIManager.getFont("Label.font");
+               Font boldFont = labelFont.deriveFont(Font.BOLD,
+                               labelFont.getSize2D() * 1.2f);
+
+               JLabel titleLabel = new JLabel(title);
+               titleLabel.setFont(boldFont);
+               add(titleLabel, BorderLayout.PAGE_START);
+
+               centerPanel = new JPanel();
+               centerPanel.setLayout(new BoxLayout(centerPanel, 
BoxLayout.PAGE_AXIS));
+               centerPanel.setBackground(Color.WHITE);
+               add(centerPanel, BorderLayout.CENTER);
+
+               createActionComponents();
+
+               JButton deleteButton = new JButton(buttonLabel);
+               deleteButton.addActionListener(this);
+               add(deleteButton, BorderLayout.PAGE_END);
+
+               setMaximumSize(new Dimension(Short.MAX_VALUE, 
getPreferredSize().height));
+       }
+
+       protected void addActionComponent(JComponent comp) {
+               comp.setAlignmentX(LEFT_ALIGNMENT);
+               centerPanel.add(comp);
+       }
+
+       public void actionPerformed(ActionEvent e) {
+               try {
+                       
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+                       doAction();
+                       model.reloadFolder();
+               } catch (Exception ex) {
+                       ClientHelper.showError(null, ex);
+               } finally {
+                       
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+               }
+       }
+
+       protected abstract void createActionComponents();
+
+       public abstract boolean isAllowed();
+
+       public abstract void doAction() throws Exception;
+
+       protected JPanel createFilenamePanel(final JTextField filenameField) {
+               JPanel filePanel = new JPanel(new BorderLayout());
+               filePanel.setBackground(Color.WHITE);
+
+               filePanel.add(new JLabel("File:"), BorderLayout.LINE_START);
+
+               filePanel.add(filenameField, BorderLayout.CENTER);
+
+               JButton browseButton = new JButton("Browse");
+               browseButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent event) {
+                               JFileChooser fileChooser = new JFileChooser();
+                               int chooseResult = 
fileChooser.showDialog(filenameField,
+                                               "Select");
+                               if (chooseResult == 
JFileChooser.APPROVE_OPTION) {
+                                       if 
(fileChooser.getSelectedFile().isFile()) {
+                                               
filenameField.setText(fileChooser.getSelectedFile()
+                                                               
.getAbsolutePath());
+                                       }
+                               }
+                       }
+               });
+               filePanel.add(browseButton, BorderLayout.LINE_END);
+
+               return filePanel;
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/CreateDialog.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/CreateDialog.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/CreateDialog.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/CreateDialog.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,108 @@
+/*
+ * 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.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.List;
+
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.swingclient.model.ClientModel;
+
+public abstract class CreateDialog extends JDialog {
+
+       private static final long serialVersionUID = 1L;
+
+       private ClientModel model;
+       private JPanel panel;
+
+       public CreateDialog(Frame owner, String title, ClientModel model) {
+               super(owner, title, true);
+               this.model = model;
+
+               setLayout(new BorderLayout());
+               panel = new JPanel(new GridBagLayout());
+               panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 
10));
+               add(panel, BorderLayout.CENTER);
+       }
+
+       protected ClientModel getClientModel() {
+               return model;
+       }
+
+       protected void createRow(String label, JComponent comp, int row) {
+               JLabel textLabel = new JLabel(label);
+               textLabel.setLabelFor(comp);
+
+               GridBagConstraints c = new GridBagConstraints();
+               c.anchor = GridBagConstraints.LINE_START;
+               c.fill = GridBagConstraints.HORIZONTAL;
+               c.gridx = 0;
+               c.gridy = row;
+               panel.add(textLabel, c);
+               c.gridx = 1;
+               panel.add(comp, c);
+       }
+
+       public void showDialog() {
+               panel.invalidate();
+
+               setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+               pack();
+               setLocationRelativeTo(null);
+               setVisible(true);
+       }
+
+       protected Object[] getTypes(String rootTypeId) {
+               List<ObjectType> types = model.getCreateableTypes(rootTypeId);
+
+               Object[] result = new Object[types.size()];
+
+               int i = 0;
+               for (final ObjectType type : types) {
+                       result[i] = new ObjectTypeItem() {
+                               public ObjectType getObjectType() {
+                                       return type;
+                               }
+
+                               @Override
+                               public String toString() {
+                                       return type.getDisplayName() + " (" + 
type.getId() + ")";
+                               }
+                       };
+
+                       i++;
+               }
+
+               return result;
+       }
+
+       public static interface ObjectTypeItem {
+               ObjectType getObjectType();
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/InfoPanel.java
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/InfoPanel.java?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/InfoPanel.java
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/InfoPanel.java
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,130 @@
+/*
+ * 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.swing;
+
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+
+public abstract class InfoPanel extends JPanel {
+
+       private static final long serialVersionUID = 1L;
+
+       private JPanel gridPanel;
+       private GridBagConstraints gbc;
+       private Font boldFont;
+
+       protected void setupGUI() {
+               setLayout(new FlowLayout(FlowLayout.LEFT));
+               setBackground(Color.WHITE);
+
+               gridPanel = new JPanel(new GridBagLayout());
+               gridPanel.setBackground(Color.WHITE);
+               add(gridPanel);
+
+               gbc = new GridBagConstraints();
+
+               gbc.fill = GridBagConstraints.BOTH;
+               gbc.gridy = 0;
+               gbc.insets = new Insets(3, 3, 3, 3);
+
+               Font labelFont = UIManager.getFont("Label.font");
+               boldFont = labelFont
+                               .deriveFont(Font.BOLD, labelFont.getSize2D() * 
1.2f);
+       }
+
+       protected JTextField addLine(String label) {
+               return addLine(label, false);
+       }
+
+       protected JTextField addLine(String label, boolean bold) {
+               JTextField textField = new JTextField();
+               textField.setEditable(false);
+               textField.setBorder(BorderFactory.createEmptyBorder());
+               if (bold) {
+                       textField.setFont(boldFont);
+               }
+
+               JLabel textLable = new JLabel(label);
+               textLable.setLabelFor(textField);
+               if (bold) {
+                       textLable.setFont(boldFont);
+               }
+
+               gbc.gridy++;
+
+               gbc.gridx = 0;
+               gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+               gridPanel.add(textLable, gbc);
+
+               gbc.gridx = 1;
+               gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+               gridPanel.add(textField, gbc);
+
+               return textField;
+       }
+
+       protected JCheckBox addCheckBox(String label) {
+               JCheckBox checkBox = new JCheckBox();
+               checkBox.setEnabled(false);
+
+               JLabel textLable = new JLabel(label);
+               textLable.setLabelFor(checkBox);
+
+               gbc.gridy++;
+
+               gbc.gridx = 0;
+               gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+               gridPanel.add(textLable, gbc);
+
+               gbc.gridx = 1;
+               gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+               gridPanel.add(checkBox, gbc);
+
+               return checkBox;
+       }
+
+       protected <T extends JComponent> T addComponent(String label, T comp) {
+               JLabel textLable = new JLabel(label);
+               textLable.setLabelFor(comp);
+
+               gbc.gridy++;
+
+               gbc.gridx = 0;
+               gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+               gridPanel.add(textLable, gbc);
+
+               gbc.gridx = 1;
+               gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+               gridPanel.add(comp, gbc);
+
+               return comp;
+       }
+}

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

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/META-INF/README
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/META-INF/README?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/META-INF/README
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/META-INF/README
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,7 @@
+OpenCMIS Swing Client
+
+This is a simple Content Management Interoperability Services (CMIS) client 
based on Swing 
+and Apache Chemistry OpenCMIS 
(http://incubator.apache.org/chemistry/opencmis.html).
+
+This CMIS client is distributed under the Apache License, version 2.0.
+Please see the NOTICE and LICENSE files for details.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/META-INF/README
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/connect.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/connect.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/connect.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/document.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/document.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/document.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/folder.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/folder.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/folder.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/info.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/info.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/info.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/log.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/log.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/log.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newdocument.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newdocument.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newdocument.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newfolder.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newfolder.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/newfolder.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/policy.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/policy.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/policy.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/query.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/query.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/query.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/relationship.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/relationship.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/relationship.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/repository-info.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/repository-info.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/repository-info.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/types.png
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/types.png?rev=966582&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/types.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/log4j.properties
URL: 
http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/log4j.properties?rev=966582&view=auto
==============================================================================
--- 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/log4j.properties
 (added)
+++ 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/log4j.properties
 Thu Jul 22 11:19:09 2010
@@ -0,0 +1,20 @@
+# 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.
+
+log4j.rootLogger=info, logframe
+
+log4j.appender.logframe = 
org.apache.chemistry.opencmis.swingclient.ClientWriterAppender
+log4j.appender.logframe.layout = org.apache.log4j.EnhancedPatternLayout
+log4j.appender.logframe.layout.ConversionPattern = > %d{HH:mm:ss} %5.5p 
%40.40c: %m%n%throwable{15}
\ No newline at end of file

Propchange: 
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to