blob: 5dfdb05dfca6af7cbc448348dc765e12c77270a9 [file] [log] [blame]
// 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.workbench.tree.examples;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IBinding;
import org.apache.tapestry.contrib.table.components.Table;
import org.apache.tapestry.contrib.table.model.ITableColumn;
import org.apache.tapestry.contrib.table.model.ITableModel;
import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumn;
import org.apache.tapestry.contrib.table.model.simple.SimpleTableModel;
import org.apache.tapestry.event.PageDetachListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.workbench.tree.examples.fsmodel.SFObject;
/**
* @author ceco
*/
public abstract class DirectoryTableView extends BaseComponent implements
PageDetachListener
{
private ITableModel m_objTableModel = null;
private ITableColumn[] m_arrColumns = null;
private ISelectedFolderSource m_objSelectedFolderSource = null;
/**
*
*/
public DirectoryTableView()
{
super();
initialize();
}
private void initialize()
{
m_objTableModel = null;
m_objSelectedFolderSource = null;
}
/**
* @see org.apache.tapestry.AbstractComponent#finishLoad()
*/
protected void finishLoad()
{
super.finishLoad();
getPage().addPageDetachListener(this);
}
/**
* @see org.apache.tapestry.event.PageDetachListener#pageDetached(org.apache.tapestry.event.PageEvent)
*/
public void pageDetached(PageEvent arg0)
{
initialize();
}
public ITableModel getTableModel()
{
if (m_objTableModel == null)
{
ISelectedFolderSource objSelectedFolderSource = getSelectedFolderSource();
Collection colChildrens = objSelectedFolderSource
.getSelectedFolderChildren();
m_objTableModel = new SimpleTableModel(colChildrens.toArray(),
getColumns());
}
return m_objTableModel;
}
public ITableColumn[] getColumns()
{
if (m_arrColumns == null)
{
ArrayList arrColumnsList = new ArrayList();
arrColumnsList.add(new SimpleTableColumn("Name", true)
{
private static final long serialVersionUID = -5394217017984056107L;
public Object getColumnValue(Object objValue)
{
SFObject objSFObject = (SFObject) objValue;
return objSFObject.getName();
}
});
arrColumnsList.add(new SimpleTableColumn("Date", true)
{
private static final long serialVersionUID = -3258043732869364037L;
public Object getColumnValue(Object objValue)
{
SFObject objSFObject = (SFObject) objValue;
return objSFObject.getDate();
}
});
m_arrColumns = new SimpleTableColumn[arrColumnsList.size()];
arrColumnsList.toArray(m_arrColumns);
}
return m_arrColumns;
}
public ISelectedFolderSource getSelectedFolderSource()
{
if (m_objSelectedFolderSource == null)
{
IBinding objBinding = getBinding("selectedFolderSource");
m_objSelectedFolderSource = (ISelectedFolderSource) objBinding
.getObject();
}
return m_objSelectedFolderSource;
}
public void resetState()
{
initialize();
Table objTable = (Table) getComponent("table");
objTable.reset();
}
public String getSelectedNodeName()
{
return getSelectedFolderSource().getSelectedNodeName();
}
}