Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.greenstone.gatherer.gui.table
Class GTableModel  view GTableModel download GTableModel.java

java.lang.Object
  extended byjavax.swing.table.AbstractTableModel
      extended byorg.greenstone.gatherer.gui.table.GTableModel
All Implemented Interfaces:
org.greenstone.gatherer.msm.MSMListener, java.io.Serializable, javax.swing.table.TableModel

public class GTableModel
extends javax.swing.table.AbstractTableModel
implements org.greenstone.gatherer.msm.MSMListener

Provides the model for a GTable component, filling it with metadata values for the choosen files or folders. The model also provides several different view of this data; assigned folder metadata, assigned file metadata, all assigned metadata, unassigned metadata, and all metadata. It also differentiates between metadata that is common to all of the files or folders, and that which isn't. The building of the actual model is done on a separate thread so that the gui remains responsive, and the gui is intermitantly updated by this thread. Updating of the model is triggered by events recieved from the metadata set manager in terms of new or obsolete metadata. A new model is rebuilt whenever the user selects a different group of files or folders.

Version:
2.3b

Nested Class Summary
private  class GTableModel.ModelBuilder
           
private  class GTableModel.SelectionTask
          Little utility class for selecting a row in the table, on the AWT thread.
 
Field Summary
private  GTableModel.ModelBuilder builder
           
private static java.lang.String[] COLUMN_NAMES
           
private  java.util.ArrayList current_metadata
          The source for the data currently shown in the table.
private  org.greenstone.gatherer.file.FileNode[] file_nodes
          The file nodes this model is built upon.
private  javax.swing.JTable table
          The table this model is being displayed in.
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
GTableModel(javax.swing.JTable table)
           
GTableModel(javax.swing.JTable table, org.greenstone.gatherer.file.FileNode[] file_nodes)
           
 
Method Summary
 void elementChanged(org.greenstone.gatherer.msm.MSMEvent event)
          Called whenever an element in a set is added, edited or removed from the metadata set manager.
 int getColumnCount()
          Returns the number of columns in this table.
 java.lang.String getColumnName(int col)
          Retrieves the name of the specified column.
 org.greenstone.gatherer.msm.Metadata getMetadataAtRow(int row)
           
 int getRowCount()
          Returns the number of rows in this table.
 java.lang.Object getValueAt(int row, int col)
          Returns the cell value at a given row and column as an Object.
 boolean isBuildingComplete()
           
 boolean isCommon(int row)
          Determine if the given metadata is common to all selected file nodes given the context of the current view.
 boolean isCommon(org.greenstone.gatherer.msm.Metadata entry)
          Determine if the given metadata is common to all selected file nodes given the context of the current view.
 void metadataChanged(org.greenstone.gatherer.msm.MSMEvent event)
          Whenever there is a metadata change we must determine if there are any changes to our various lists of metadata, and also if there is any need to refresh the table currently being viewed.
private  void rebuildModel()
           
 void selectClosestMetadataWhenBuildingComplete(org.greenstone.gatherer.msm.Metadata metadatum)
           
 void selectMetadataWhenBuildingComplete(org.greenstone.gatherer.msm.Metadata metadatum)
           
 void setChanged(org.greenstone.gatherer.msm.MSMEvent event)
          Called whenever a set is added or removed from the metadata set manager.
 void valueChanged(org.greenstone.gatherer.msm.MSMEvent event)
          Called when the value tree of a certain element has changed significantly but, although we display metadata values, we only care about those coming through metadataChanged() events.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

current_metadata

private java.util.ArrayList current_metadata
The source for the data currently shown in the table. May be any of the other three metadata lists, or the union of all of them.


file_nodes

private org.greenstone.gatherer.file.FileNode[] file_nodes
The file nodes this model is built upon.


table

private javax.swing.JTable table
The table this model is being displayed in.


builder

private GTableModel.ModelBuilder builder

COLUMN_NAMES

private static final java.lang.String[] COLUMN_NAMES
Constructor Detail

GTableModel

public GTableModel(javax.swing.JTable table)

GTableModel

public GTableModel(javax.swing.JTable table,
                   org.greenstone.gatherer.file.FileNode[] file_nodes)
Method Detail

getColumnCount

public int getColumnCount()
Returns the number of columns in this table.

Specified by:
getColumnCount in interface javax.swing.table.TableModel

getColumnName

public java.lang.String getColumnName(int col)
Retrieves the name of the specified column.

Specified by:
getColumnName in interface javax.swing.table.TableModel

getRowCount

public int getRowCount()
Returns the number of rows in this table.

Specified by:
getRowCount in interface javax.swing.table.TableModel

getValueAt

public java.lang.Object getValueAt(int row,
                                   int col)
Returns the cell value at a given row and column as an Object.

Specified by:
getValueAt in interface javax.swing.table.TableModel

getMetadataAtRow

public org.greenstone.gatherer.msm.Metadata getMetadataAtRow(int row)

selectMetadataWhenBuildingComplete

public void selectMetadataWhenBuildingComplete(org.greenstone.gatherer.msm.Metadata metadatum)

selectClosestMetadataWhenBuildingComplete

public void selectClosestMetadataWhenBuildingComplete(org.greenstone.gatherer.msm.Metadata metadatum)

elementChanged

public void elementChanged(org.greenstone.gatherer.msm.MSMEvent event)
Called whenever an element in a set is added, edited or removed from the metadata set manager. We listen for this just incase the name of one of the elements currently shown changes. After that the table will be up to date, as the element references are otherwise live.

Specified by:
elementChanged in interface org.greenstone.gatherer.msm.MSMListener

metadataChanged

public void metadataChanged(org.greenstone.gatherer.msm.MSMEvent event)
Whenever there is a metadata change we must determine if there are any changes to our various lists of metadata, and also if there is any need to refresh the table currently being viewed.

Specified by:
metadataChanged in interface org.greenstone.gatherer.msm.MSMListener

setChanged

public void setChanged(org.greenstone.gatherer.msm.MSMEvent event)
Called whenever a set is added or removed from the metadata set manager.

Specified by:
setChanged in interface org.greenstone.gatherer.msm.MSMListener

valueChanged

public void valueChanged(org.greenstone.gatherer.msm.MSMEvent event)
Called when the value tree of a certain element has changed significantly but, although we display metadata values, we only care about those coming through metadataChanged() events.

Specified by:
valueChanged in interface org.greenstone.gatherer.msm.MSMListener

rebuildModel

private void rebuildModel()

isCommon

public boolean isCommon(org.greenstone.gatherer.msm.Metadata entry)
Determine if the given metadata is common to all selected file nodes given the context of the current view.


isCommon

public boolean isCommon(int row)
Determine if the given metadata is common to all selected file nodes given the context of the current view.


isBuildingComplete

public boolean isBuildingComplete()