Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/AssetsHolder.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/AssetsHolder.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/AssetsHolder.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/AssetsHolder.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,74 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import org.apache.hivemind.impl.DefaultClassResolver;
+import org.apache.hivemind.util.ClasspathResource;
+import org.apache.hivemind.util.Defense;
+import org.apache.tapestry.asset.PrivateAsset;
+import org.apache.tapestry.engine.IEngineService;
+
+/**
+ * @author ceco
+ */
+public class AssetsHolder
+{
+    private final IEngineService _assetService;
+
+    private final String m_strOpenAssetsURL;
+
+    private final String m_strCloseAssetsURL;
+
+    private PrivateAsset m_objOpenAsset = null;
+
+    private PrivateAsset m_objCloseAsset = null;
+
+    /**
+     * Constructor for AssetsHolder.
+     */
+    public AssetsHolder(IEngineService assetService, String strOpenAssetsURL,
+            String strCloseAssetsURL)
+    {
+        Defense.notNull(assetService, "assetService");
+
+        _assetService = assetService;
+
+        m_strOpenAssetsURL = strOpenAssetsURL;
+        m_strCloseAssetsURL = strCloseAssetsURL;
+    }
+
+    public PrivateAsset getAssetForOpenNode()
+    {
+        if (m_objOpenAsset == null)
+        {
+            // m_objOpenAsset = new PrivateAsset(m_strOpenAssetsURL);
+            m_objOpenAsset = new PrivateAsset(new ClasspathResource(new 
DefaultClassResolver(),
+                    m_strOpenAssetsURL), _assetService, null);
+        }
+        return m_objOpenAsset;
+    }
+
+    public PrivateAsset getAssetForCloseNode()
+    {
+        if (m_objCloseAsset == null)
+        {
+            // m_objCloseAsset = new PrivateAsset(m_strCloseAssetsURL);
+            m_objCloseAsset = new PrivateAsset(new ClasspathResource(new 
DefaultClassResolver(),
+                    m_strCloseAssetsURL), _assetService, null);
+        }
+        return m_objCloseAsset;
+    }
+
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/Drive.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/Drive.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/Drive.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/Drive.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,67 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.engine.IEngineService;
+
+/** @author tsv? * */
+public class Drive extends FolderObject
+{
+    private static final long serialVersionUID = -4098885307563692077L;
+
+    private String m_strType;
+
+    private String m_strLabel;
+
+    private long m_lSize;
+
+    private final IEngineService _assetService;
+
+    public Drive(ITreeNode objParent, File objFile, IEngineService 
assetService)
+    {
+        super(objParent, objFile, false, assetService);
+
+        _assetService = assetService;
+    }
+
+    public long getSize()
+    {
+        return m_lSize;
+    }
+
+    public String getType()
+    {
+        return m_strType;
+    }
+
+    public String getLabel()
+    {
+        return m_strLabel;
+    }
+
+    public AssetsHolder getAssets()
+    {
+        if (m_objAssetsHolder == null)
+        {
+            m_objAssetsHolder = new AssetsHolder(_assetService,
+                    
"/org/apache/tapestry/workbench/tree/examples/fsmodel/harddrive.gif",
+                    
"/org/apache/tapestry/workbench/tree/examples/fsmodel/harddrive.gif");
+        }
+        return m_objAssetsHolder;
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileObject.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileObject.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileObject.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileObject.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,104 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.engine.IEngineService;
+
+/** @author tsv? * */
+public class FileObject extends SFObject
+{
+
+    private static final long serialVersionUID = -4552981105079058185L;
+
+    private long m_lSize;
+
+    private final IEngineService _assetService;
+
+    public FileObject(ITreeNode objParent, File objFile, IEngineService 
assetService)
+    {
+        super(objParent, objFile);
+        _assetService = assetService;
+        init();
+    }
+
+    protected void init()
+    {
+        super.init();
+        m_lSize = m_objFile.length();
+    }
+
+    public long getSize()
+    {
+        return m_lSize;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#containsChild(ITreeNode)
+     */
+    public boolean containsChild(ITreeNode node)
+    {
+        return false;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return false;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildCount()
+     */
+    public int getChildCount()
+    {
+        return 0;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildren()
+     */
+    public Collection getChildren()
+    {
+        return new ArrayList();
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return true;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.ajaxworkbench.tree.examples.fsmodel.IFileSystemTreeNode#getAssets()
+     */
+    public AssetsHolder getAssets()
+    {
+        if (m_objAssetsHolder == null)
+        {
+            final String a = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/file.gif";
+            m_objAssetsHolder = new AssetsHolder(_assetService, a, a);
+        }
+        return m_objAssetsHolder;
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystem.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystem.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystem.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystem.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,189 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Vector;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.engine.IEngineService;
+
+/** @author tsv? */
+public class FileSystem implements IFileSystemTreeNode
+{
+
+    private static final long serialVersionUID = -3895257178984217762L;
+
+    private transient AssetsHolder m_objAssetsHolder = null;
+
+    /**
+     * @associates <{Drive}>
+     * @supplierCardinality 0..*
+     * @link aggregation
+     */
+    private Vector m_vDrives;
+
+    private final IEngineService _assetService;
+
+    public FileSystem(IEngineService assetService)
+    {
+        _assetService = assetService;
+    }
+
+    private void initDrives()
+    {
+        m_vDrives = new Vector();
+        File[] arrFile = File.listRoots();
+
+        if (arrFile != null) for(int i = 0; i < arrFile.length; i++)
+        {
+            File objFile = arrFile[i];
+            boolean bFloppy = objFile.getAbsolutePath().startsWith("A:") || 
objFile.getAbsolutePath().startsWith("B:");
+            if (!bFloppy) m_vDrives.addElement(new Drive(this, objFile, 
_assetService));
+        }
+    }
+
+    public Vector getDrives()
+    {
+        if (m_vDrives == null)
+        {
+            initDrives();
+        }
+        return m_vDrives;
+    }
+
+    public int getChildNumber(Object objChild)
+    {
+        for(int i = 0; i < m_vDrives.size(); i++)
+        {
+            Object objChildDrive = m_vDrives.elementAt(i);
+            if (objChildDrive.equals(objChild)) { return i; }
+        }
+        return -1;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#containsChild(ITreeNode)
+     */
+    public boolean containsChild(ITreeNode node)
+    {
+        return true;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return true;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildCount()
+     */
+    public int getChildCount()
+    {
+        return getDrives().size();
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildren()
+     */
+    public Collection getChildren()
+    {
+        return getDrives();
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getParent()
+     */
+    public ITreeNode getParent()
+    {
+        return null;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return false;
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return getName();
+    }
+
+    public String getName()
+    {
+        return "FileSystem";
+    }
+
+    /**
+     * @see java.lang.Object#equals(Object)
+     */
+    public boolean equals(Object arg0)
+    {
+        if (!(arg0 instanceof FileSystem)) return false;
+        FileSystem objFileSystem = (FileSystem)arg0;
+        if (getName().equals(objFileSystem.getName())) return true;
+        return false;
+    }
+
+    /**
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        return getName().hashCode();
+    }
+
+    /**
+     * @see 
org.apache.tapestry.ajaxworkbench.tree.examples.fsmodel.IFileSystemTreeNode#getAbsolutePath()
+     */
+    public String getAbsolutePath()
+    {
+        return "";
+    }
+
+    /**
+     * @see 
org.apache.tapestry.ajaxworkbench.tree.examples.fsmodel.IFileSystemTreeNode#getAssets()
+     */
+    public AssetsHolder getAssets()
+    {
+        if (m_objAssetsHolder == null)
+        {
+            m_objAssetsHolder = new AssetsHolder(_assetService,
+                    
"/org/apache/tapestry/workbench/tree/examples/fsmodel/computer.gif",
+                    
"/org/apache/tapestry/workbench/tree/examples/fsmodel/computer.gif");
+        }
+        return m_objAssetsHolder;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.ajaxworkbench.tree.examples.fsmodel.IFileSystemTreeNode#getObjectDate()
+     */
+    public Date getDate()
+    {
+        return null;
+    }
+
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemDataModel.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemDataModel.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemDataModel.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemDataModel.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,107 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.Serializable;
+import java.util.Iterator;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.contrib.tree.simple.SimpleTreeDataModel;
+
+/**
+ * @author ceco
+ */
+public class FileSystemDataModel extends SimpleTreeDataModel implements 
Serializable
+{
+
+    private static final long serialVersionUID = 2384273235598992452L;
+
+    /**
+     * Constructor for FileSystemDataModel.
+     * 
+     * @param objRootNode
+     */
+    public FileSystemDataModel(ITreeNode objRootNode)
+    {
+        super(objRootNode);
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeDataModel#getObject(Object)
+     */
+    public Object getObject(Object objUniqueKey)
+    {
+        return findNode(objUniqueKey, (IFileSystemTreeNode)getRoot());
+    }
+
+    private IFileSystemTreeNode findNode(Object objUniqueKey, 
IFileSystemTreeNode objParentNode)
+    {
+        String strUniqueKey = (String)objUniqueKey;
+        String strParentUniqueKey = objParentNode.getAbsolutePath();
+
+        if (strUniqueKey.equals(strParentUniqueKey)) { return objParentNode; }
+
+        IFileSystemTreeNode obj = null;
+
+        if (strUniqueKey.startsWith(strParentUniqueKey))
+        {
+            for(Iterator iter = objParentNode.getChildren().iterator(); 
iter.hasNext();)
+            {
+                IFileSystemTreeNode element = (IFileSystemTreeNode)iter.next();
+                obj = findNode(objUniqueKey, element);
+                if (obj != null)
+                {
+                    break;
+                }
+            }
+        }
+
+        return obj;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeDataModel#getUniqueKey(Object,
+     *      Object)
+     */
+    public Object getUniqueKey(Object objTarget, Object objParentUniqueKey)
+    {
+        IFileSystemTreeNode objNode = (IFileSystemTreeNode)objTarget;
+        return objNode.getAbsolutePath();
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeDataModel#isAncestorOf(Object,
+     *      Object)
+     */
+    public boolean isAncestorOf(Object objChildUniqueKey, Object 
objParentUniqueKey)
+    {
+        String strChildAbsolutePath = (String)objChildUniqueKey;
+        String strParentAbsolutePath = (String)objParentUniqueKey;
+
+        if ("".equals(strParentAbsolutePath)) { return true; }
+
+        return strChildAbsolutePath.lastIndexOf(strParentAbsolutePath) > -1;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeDataModel#getParentUniqueKey(Object)
+     */
+    public Object getParentUniqueKey(Object objChildUniqueKey)
+    {
+        IFileSystemTreeNode objNode = 
(IFileSystemTreeNode)getObject(objChildUniqueKey);
+        return objNode.getParent();
+    }
+
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemStateManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemStateManager.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemStateManager.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FileSystemStateManager.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,79 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+
+import org.apache.tapestry.contrib.tree.model.ITreeDataModel;
+import org.apache.tapestry.contrib.tree.model.ITreeModel;
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.contrib.tree.model.ITreeSessionStateManager;
+import org.apache.tapestry.contrib.tree.model.ITreeStateModel;
+import org.apache.tapestry.contrib.tree.simple.SimpleTreeModel;
+import org.apache.tapestry.engine.IEngineService;
+
+/**
+ * @author ceco
+ */
+public class FileSystemStateManager implements ITreeSessionStateManager
+{
+    private String m_strRootDir;
+
+    private final IEngineService _assetService;
+
+    /**
+     * Constructor for FileSystemStateManager.
+     */
+    public FileSystemStateManager(String strRootDir, IEngineService 
assetService)
+    {
+        super();
+        m_strRootDir = strRootDir;
+        _assetService = assetService;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeSessionStateManager#getSessionState(ITreeModel)
+     */
+    public Object getSessionState(ITreeModel objModel)
+    {
+        return objModel.getTreeStateModel();
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeSessionStateManager#getModel(Object)
+     */
+    public ITreeModel getModel(Object objSessionState)
+    {
+        ITreeStateModel objStateModel = (ITreeStateModel) objSessionState;
+
+        ITreeNode objParent;
+
+        if (m_strRootDir == null || "".equals(m_strRootDir))
+        {
+            objParent = new FileSystem(_assetService);
+        }
+        else
+        {
+            FolderObject objFolder = new FolderObject(null, new 
File(m_strRootDir), true, _assetService);
+            objFolder.reload();
+            objParent = objFolder;
+        }
+
+        ITreeDataModel objDataModel = new FileSystemDataModel(objParent);
+        ITreeModel objModel = new SimpleTreeModel(objDataModel, objStateModel);
+
+        return objModel;
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FolderObject.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FolderObject.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FolderObject.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/FolderObject.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,168 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Vector;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+import org.apache.tapestry.engine.IEngineService;
+
+/** @author tsv? */
+public class FolderObject extends SFObject
+{
+
+    private static final long serialVersionUID = 1889745019885512018L;
+
+    /**
+     * @associates <{File}>
+     * @supplierCardinality 0..*
+     * @link aggregation
+     */
+    private Vector m_vFiles = null;
+
+    /**
+     * @associates <{FolderObject}>
+     * @supplierCardinality 0..*
+     * @link aggregation
+     */
+    private Vector m_vFolders = null;
+
+    private boolean m_bShared;
+
+    private final IEngineService _assetService;
+
+    public FolderObject(ITreeNode objParent, File objFile, boolean 
bInvokeInit, IEngineService assetService)
+    {
+        super(objParent, objFile);
+
+        _assetService = assetService;
+
+        if (bInvokeInit) init();
+    }
+
+    public void reload()
+    {
+        m_vFolders = new Vector();
+        m_vFiles = new Vector();
+
+        File[] arrFiles = getFile().listFiles();
+
+        if (arrFiles == null) { return; }
+
+        for(int i = 0; i < arrFiles.length; i++)
+        {
+            if (arrFiles[i].isDirectory())
+            {
+                m_vFolders.addElement(new FolderObject(this, arrFiles[i], 
true, _assetService));
+            }
+            else
+            {
+                m_vFiles.addElement(new FileObject(this, arrFiles[i], 
_assetService));
+            }
+        }
+    }
+
+    public boolean isShared()
+    {
+        return m_bShared;
+    }
+
+    public Vector getFolders()
+    {
+        if (m_vFolders == null)
+        {
+            reload();
+        }
+        return m_vFolders;
+    }
+
+    public Vector getFiles()
+    {
+        if (m_vFiles == null)
+        {
+            reload();
+        }
+        return m_vFiles;
+    }
+
+    public int getChildNumber(Object objChild)
+    {
+        for(int i = 0; i < m_vFolders.size(); i++)
+        {
+            Object objChildFolder = m_vFolders.elementAt(i);
+            if (objChildFolder.equals(objChild)) { return i; }
+        }
+        return -1;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#containsChild(ITreeNode)
+     */
+    public boolean containsChild(ITreeNode node)
+    {
+        return true;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return true;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildCount()
+     */
+    public int getChildCount()
+    {
+        return getFolders().size() + getFiles().size();
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildren()
+     */
+    public Collection getChildren()
+    {
+        ArrayList arrChildrens = new ArrayList();
+        arrChildrens.addAll(getFolders());
+        arrChildrens.addAll(getFiles());
+        return arrChildrens;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return false;
+    }
+
+    private final static String openImage = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeOpen.gif";
+
+    private final static String closedImage = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeClosed.gif";
+
+    public AssetsHolder getAssets()
+    {
+        if (m_objAssetsHolder == null)
+        {
+            m_objAssetsHolder = new AssetsHolder(_assetService, openImage, 
closedImage);
+        }
+        return m_objAssetsHolder;
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/IFileSystemTreeNode.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/IFileSystemTreeNode.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/IFileSystemTreeNode.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/IFileSystemTreeNode.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,28 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.util.Date;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+
+/**
+ * @author ceco
+ */
+public interface IFileSystemTreeNode extends ITreeNode {
+    String getAbsolutePath();
+    AssetsHolder getAssets();
+    Date getDate();
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/NodeRenderFactory.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/NodeRenderFactory.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/NodeRenderFactory.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/NodeRenderFactory.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,120 @@
+// Copyright 2004, 2005, 2006  The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRender;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.asset.PrivateAsset;
+import org.apache.tapestry.contrib.tree.components.INodeRenderFactory;
+import org.apache.tapestry.contrib.tree.model.ITreeDataModel;
+import org.apache.tapestry.contrib.tree.model.ITreeModelSource;
+import org.apache.tapestry.contrib.tree.model.ITreeStateModel;
+
+/**
+ * @author ceco
+ */
+public class NodeRenderFactory implements INodeRenderFactory
+{
+
+    /**
+     * Constructor for NodeRenderFactory.
+     */
+    public NodeRenderFactory()
+    {
+        super();
+    }
+
+    public IRender getRenderByID(Object objUniqueKey, ITreeModelSource 
objTreeModelSource, IRequestCycle objCycle)
+    {
+        Object objValue = 
objTreeModelSource.getTreeModel().getTreeDataModel().getObject(objUniqueKey);
+        return getRender(objValue, objTreeModelSource, objCycle);
+    }
+
+    public IRender getRender(Object objValue, ITreeModelSource 
objTreeModelSource, IRequestCycle objCycle)
+    {
+        return new CFileSystemRender(objValue, objTreeModelSource);
+    }
+
+    /** Renders a file system? */
+
+    public class CFileSystemRender implements IRender
+    {
+
+        private Object m_objNode;
+        private ITreeModelSource m_objTreeModelSource;
+
+        public CFileSystemRender(Object objNode, ITreeModelSource 
objTreeModelSource)
+        {
+            super();
+            m_objNode = objNode;
+            m_objTreeModelSource = objTreeModelSource;
+        }
+
+        public boolean isOpen()
+        {
+            ITreeDataModel objDataModel = 
m_objTreeModelSource.getTreeModel().getTreeDataModel();
+            ITreeStateModel objStateModel = 
m_objTreeModelSource.getTreeModel().getTreeStateModel();
+            Object objUniqueKey = objDataModel.getUniqueKey(m_objNode, null);
+            return objStateModel.isUniqueKeyExpanded(objUniqueKey);
+        }
+
+        public boolean isSelected()
+        {
+            ITreeDataModel objDataModel = 
m_objTreeModelSource.getTreeModel().getTreeDataModel();
+            ITreeStateModel objStateModel = 
m_objTreeModelSource.getTreeModel().getTreeStateModel();
+            Object objUniqueKey = objDataModel.getUniqueKey(m_objNode, null);
+            return objUniqueKey.equals(objStateModel.getSelectedNode());
+        }
+
+        public void render(IMarkupWriter objWriter, IRequestCycle objCycle)
+        {
+            PrivateAsset objAsset = getAsset();
+            objWriter.begin("img");
+            objWriter.attribute("border", "0");
+            objWriter.attribute("src", objAsset.buildURL());
+            objWriter.attribute("valign", "middle");
+            objWriter.end();
+            objWriter.print(" ");
+            objWriter.begin("span");
+            String strClassName = "fsNodeValue";
+            objWriter.attribute("class", strClassName);
+            objWriter.closeTag();
+            objWriter.print(getNode().toString().trim());
+            objWriter.end();
+        }
+
+        public IFileSystemTreeNode getNode()
+        {
+            return (IFileSystemTreeNode)m_objNode;
+        }
+
+        private PrivateAsset getAsset()
+        {
+            PrivateAsset objAsset;
+
+            if (!isOpen())
+            {
+                objAsset = getNode().getAssets().getAssetForCloseNode();
+            }
+            else
+            {
+                objAsset = getNode().getAssets().getAssetForOpenNode();
+            }
+
+            return objAsset;
+        }
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/SFObject.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/SFObject.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/SFObject.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/SFObject.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,149 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.tree.examples.fsmodel;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Date;
+
+import org.apache.tapestry.contrib.tree.model.ITreeNode;
+
+/**
+ * @author tsv?
+ */
+public abstract class SFObject implements IFileSystemTreeNode
+{
+
+    protected File m_objFile;
+    protected ITreeNode m_objParent;
+    private Date m_objDate;
+    protected transient AssetsHolder m_objAssetsHolder = null;
+
+    public SFObject(ITreeNode objParent, File objFile)
+    {
+        m_objParent = objParent;
+        m_objFile = objFile;
+        // init();
+    }
+
+    protected void init()
+    {
+        if (m_objFile.isFile() || m_objFile.isDirectory()) m_objDate = new 
Date(m_objFile.lastModified());
+    }
+
+    public String getName()
+    {
+        if (m_objFile.getName().equals("")) { return m_objFile.toString(); }
+        return m_objFile.getName();
+    }
+
+    public Date getDate()
+    {
+        return m_objDate;
+    }
+
+    public Object getAttributes()
+    {
+        return null;
+    }
+
+    protected File getFile()
+    {
+        return m_objFile;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getParent()
+     */
+    public ITreeNode getParent()
+    {
+        return m_objParent;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#containsChild(ITreeNode)
+     */
+    public boolean containsChild(ITreeNode node)
+    {
+        return false;
+    }
+
+    /**
+     * @see 
org.apache.tapestry.contrib.tree.model.ITreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return false;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildCount()
+     */
+    public int getChildCount()
+    {
+        return 0;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildren()
+     */
+    public Collection getChildren()
+    {
+        return null;
+    }
+
+    /**
+     * @see org.apache.tapestry.contrib.tree.model.ITreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return false;
+    }
+
+    /**
+     * @see java.lang.Object#equals(Object)
+     */
+    public boolean equals(Object arg0)
+    {
+        if (!(arg0 instanceof SFObject)) { return false; }
+        SFObject objSF = (SFObject)arg0;
+        if (getFile().equals(objSF.getFile())) { return true; }
+        return false;
+    }
+
+    /**
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        return m_objFile.hashCode();
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return getName();
+    }
+
+    /**
+     * @see 
org.apache.tapestry.ajaxworkbench.tree.examples.fsmodel.IFileSystemTreeNode#getAbsolutePath()
+     */
+    public String getAbsolutePath()
+    {
+        return getFile().getAbsolutePath();
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeClosed.gif
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeClosed.gif?rev=371786&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeClosed.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeOpen.gif
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeOpen.gif?rev=371786&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/TreeOpen.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/computer.gif
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/computer.gif?rev=371786&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/computer.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/file.gif
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/file.gif?rev=371786&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/file.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/harddrive.gif
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/harddrive.gif?rev=371786&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/tree/examples/fsmodel/harddrive.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/Upload.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/Upload.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/Upload.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/Upload.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,63 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.upload;
+
+import org.apache.tapestry.annotations.InjectPage;
+import org.apache.tapestry.form.IPropertySelectionModel;
+import org.apache.tapestry.form.StringPropertySelectionModel;
+import org.apache.tapestry.html.BasePage;
+import org.apache.tapestry.request.IUploadFile;
+import org.apache.tapestry.valid.IValidationDelegate;
+
+/**
+ * Contains a form, including an [EMAIL PROTECTED] 
org.apache.tapestry.form.Upload}component.
+ * 
+ * @author Howard Lewis Ship
+ */
+
+public abstract class Upload extends BasePage
+{
+
+    private static final String[] BPL_OPTIONS = new String[] { "8", "16", 
"24", "32", "40", "48" };
+
+    private IPropertySelectionModel bplModel;
+
+    public abstract IUploadFile getFile();
+
+    public abstract boolean isShowAscii();
+
+    public abstract String getBytesPerLine();
+
+    public abstract IValidationDelegate getDelegate();
+
+    @InjectPage("UploadResults")
+    public abstract UploadResults getUploadResults();
+
+    public void doSubmit()
+    {
+        IUploadFile file = getFile();
+
+        UploadResults results = getUploadResults();
+
+        results.activate(file, isShowAscii(), 
Integer.parseInt(getBytesPerLine()));
+    }
+
+    public IPropertySelectionModel getBytesPerLineModel()
+    {
+        if (bplModel == null) bplModel = new 
StringPropertySelectionModel(BPL_OPTIONS);
+
+        return bplModel;
+    }
+}

Added: 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/UploadResults.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/UploadResults.java?rev=371786&view=auto
==============================================================================
--- 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/UploadResults.java
 (added)
+++ 
jakarta/tapestry/trunk/examples/AjaxWorkbench/src/java/org/apache/tapestry/ajaxworkbench/upload/UploadResults.java
 Mon Jan 23 19:04:45 2006
@@ -0,0 +1,136 @@
+// Copyright 2004, 2005, 2006 The Apache Software Foundation
+//
+// Licensed 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.tapestry.ajaxworkbench.upload;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.tapestry.html.BasePage;
+import org.apache.tapestry.request.IUploadFile;
+import org.apache.tapestry.util.io.BinaryDumpOutputStream;
+
+/**
+ * Displays the uploaded file as a hexadecimal dump.
+ * 
+ * @author Howard Lewis Ship
+ */
+
+public abstract class UploadResults extends BasePage
+{
+
+    public abstract void setFile(IUploadFile file);
+
+    public abstract void setFileDump(String fileDump);
+
+    public void activate(IUploadFile file, boolean showAscii, int bytesPerLine)
+    {
+        setFile(file);
+
+        StringWriter writer = null;
+        BinaryDumpOutputStream out = null;
+        InputStream in = null;
+
+        try
+        {
+            in = file.getStream();
+
+            writer = new StringWriter();
+            out = new BinaryDumpOutputStream(writer);
+
+            out.setShowAscii(showAscii);
+            out.setBytesPerLine(bytesPerLine);
+
+            byte[] buffer = new byte[1000];
+
+            while(true)
+            {
+                int length = in.read(buffer);
+
+                if (length < 0) break;
+
+                out.write(buffer, 0, length);
+            }
+
+            in.close();
+            in = null;
+
+            out.close();
+            out = null;
+
+            setFileDump(writer.getBuffer().toString());
+
+            writer.close();
+            writer = null;
+        }
+        catch (IOException ex)
+        {
+            throw new ApplicationRuntimeException("Unable to display file.", 
this, null, ex);
+        }
+        finally
+        {
+            close(in);
+            close(out);
+            close(writer);
+        }
+
+        getRequestCycle().activate(this);
+    }
+
+    private void close(InputStream stream)
+    {
+        if (stream != null)
+        {
+            try
+            {
+                stream.close();
+            }
+            catch (IOException ex)
+            {
+            }
+        }
+    }
+
+    private void close(OutputStream stream)
+    {
+        if (stream != null)
+        {
+            try
+            {
+                stream.close();
+            }
+            catch (IOException ex)
+            {
+            }
+        }
+    }
+
+    private void close(Writer writer)
+    {
+        if (writer != null)
+        {
+            try
+            {
+                writer.close();
+            }
+            catch (IOException ex)
+            {
+            }
+        }
+    }
+}

Added: jakarta/tapestry/trunk/examples/AjaxWorkbench/src/test/README.txt
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/AjaxWorkbench/src/test/README.txt?rev=371786&view=auto
==============================================================================
--- jakarta/tapestry/trunk/examples/AjaxWorkbench/src/test/README.txt (added)
+++ jakarta/tapestry/trunk/examples/AjaxWorkbench/src/test/README.txt Mon Jan 
23 19:04:45 2006
@@ -0,0 +1 @@
+A placeholder.  The HiveBuild macros currently expect there to be a src/test 
even if the module contains no tests.
\ No newline at end of file

Modified: 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/tree/examples/fsmodel/FolderObject.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/tree/examples/fsmodel/FolderObject.java?rev=371786&r1=371785&r2=371786&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/tree/examples/fsmodel/FolderObject.java
 (original)
+++ 
jakarta/tapestry/trunk/examples/Workbench/src/java/org/apache/tapestry/workbench/tree/examples/fsmodel/FolderObject.java
 Mon Jan 23 19:04:45 2006
@@ -28,6 +28,10 @@
 
     private static final long serialVersionUID = 1889745019885512018L;
 
+    private static final String OPEN_IMAGE = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeOpen.gif";
+
+    private static final String CLOSED_IMAGE = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeClosed.gif";
+    
     /**
      * @associates <{File}>
      * @supplierCardinality 0..*
@@ -153,15 +157,11 @@
         return false;
     }
 
-    private final static String openImage = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeOpen.gif";
-
-    private final static String closedImage = 
"/org/apache/tapestry/workbench/tree/examples/fsmodel/TreeClosed.gif";
-
     public AssetsHolder getAssets()
     {
         if (m_objAssetsHolder == null)
         {
-            m_objAssetsHolder = new AssetsHolder(_assetService, openImage, 
closedImage);
+            m_objAssetsHolder = new AssetsHolder(_assetService, OPEN_IMAGE, 
CLOSED_IMAGE);
         }
         return m_objAssetsHolder;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to