uk.ac.starlink.table.gui
Interface TableLoadDialog

All Known Implementing Classes:
BasicTableLoadDialog, FileChooserLoader, SQLReadDialog

public interface TableLoadDialog

Interface describing the action of a dialogue with which the user can interact to specify a new table to load.

Since:
25 Nov 2004
See Also:
LoadWorker

Method Summary
 String getDescription()
          Description of this dialogue.
 String getName()
          Name of this dialogue.
 boolean isAvailable()
          Indicates whether this dialog can be invoked.
 boolean showLoadDialog(Component parent, StarTableFactory factory, ComboBoxModel formatModel, TableConsumer consumer)
          Presents the user with a dialogue which may be used to specify a table to load.
 

Method Detail

showLoadDialog

public boolean showLoadDialog(Component parent,
                              StarTableFactory factory,
                              ComboBoxModel formatModel,
                              TableConsumer consumer)
Presents the user with a dialogue which may be used to specify a table to load. This method should return true if an attempt will be made to load a table, and false if it will not (for instance if the user hit a Cancel button).

In the event that true is returned, the implementation of this method should ensure that notification of the table load attempt should be made to the consumer argument using the defined TableConsumer methods. The purpose of doing it like this (rather than just returning a StarTable from this method) is so that the table loading, which may be time-consuming, can be done in a thread other than the event dispatch thread on which this method will have been called. The LoadWorker class is provided to assist with this; the usual idiom for performing the load from the event dispatch thread within the implementation of this method looks like this:

     new LoadWorker( tableConsumer, tableId ) {
         protected StarTable attemptLoad() throws IOException {
             return tableFactory.makeStarTable( ... );
         }
     }.invoke();
 

Error conditions during the course of the user interaction by this method should in general be dealt with by informing the user (e.g. with a popup) and permitting another attempt. Some sort of cancel button should be provided which should trigger return with a false result.

The formatModel argument may be used to determine or set the format to be used for interpreting tables. Its entries are Strings, and in general the selected one should be passed as the handler argument to one of factory's makeStarTable methods. The dialogue may wish to allow the user to modify the selection by presenting a JComboBox based on this model. A suitable model can be obtained using StarTableChooser.makeFormatBoxModel(uk.ac.starlink.table.StarTableFactory).

Parameters:
parent - parent window
factory - factory which may be used for table creation
formatModel - comboBoxModel
consumer - object which can do something with the loaded table
Returns:
true if an attempt will be made to load a table

getName

public String getName()
Name of this dialogue. This will typically be used as the text of a button (Action.NAME) which invokes showLoadDialog.

Returns:
name

getDescription

public String getDescription()
Description of this dialogue. This will typically be used as the tooltip text of a button (Action.SHORT_DESCRIPTION) which invokes showLoadDialog

Returns:
short description

isAvailable

public boolean isAvailable()
Indicates whether this dialog can be invoked. This allows the implementation to check that it has enough resources (e.g. required classes) for it to be worth trying it. This method should be invoked before the first invocation of showLoadDialog(java.awt.Component, uk.ac.starlink.table.StarTableFactory, javax.swing.ComboBoxModel, uk.ac.starlink.table.gui.TableConsumer), but is not guaranteed to be invoked again.

Returns:
true iff this dialog can be used

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.