| // 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(); |
| } |
| } |