# Class TableSaveChooser

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
uk.ac.starlink.table.gui.TableSaveChooser

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable, Accessible`

public abstract class TableSaveChooser extends JPanel
Dialog which permits a user to save one or more `StarTable`s in a place and format of choice. It should be able to provide suitable dialogs for all the supported table types; in particular it includes a filestore browser and special JDBC connection dialog.

The usual way to use this is to implement `getTables()` to provide the table which will be saved, and then call `showSaveDialog(Component)`.

Author:
  Mark Taylor (Starlink)
See Also:
  - Serialized Form

## Nested Class Summary

### Nested classes/interfaces inherited from class JPanel

`JPanel.AccessibleJPanel`

### Nested classes/interfaces inherited from class JComponent

`JComponent.AccessibleJComponent`

### Nested classes/interfaces inherited from class Container

`Container.AccessibleAWTContainer`

### Nested classes/interfaces inherited from class Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

### Fields inherited from class JComponent

`listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

### Fields inherited from class Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

## Constructor Summary

Constructors
Constructor
Description
`TableSaveChooser()`
Constructs a saver with a default StarTableOutput and save dialogues.
`TableSaveChooser(StarTableOutput sto, TableSaveDialog[] saveDialogs)`
Constructs a saver with a given StarTableOutput and save dialogues.

## Method Summary

Modifier and Type
Method
Description
`JDialog`
`createDialog(Component parent)`
Creates a dialogue which can be used for user interaction.
`final Action`
`createSaveDialogAction(TableSaveDialog tsd)`
Returns an action which will result in the given save dialogue being posted to allow the user to save this chooser's current table.
`void`
`done()`
Called when the table has been written.
`static String[]`
`getExtraWriterNames(boolean multi)`
Returns a selection of output handler specifications that can be offered to the user alongside the default-configuration ones.
`JComboBox<String>`
`getFormatSelector()`
Returns the selector which chooses table output formats.
`Action[]`
`getSaveDialogActions()`
Returns actions which correspond to the save dialogues this saver is using.
`String`
`getSelectedFormat()`
Returns the currently selected format string.
`StarTableOutput`
`getTableOutput()`
Returns the StarTableOutput object which this saver uses to do the actual writing of the StarTables.
`abstract StarTable[]`
`getTables()`
Obtains the tables to write.
`static void`
`main(String[] args)`
Testing purposes only.
`static ComboBoxModel<String>`
`makeFormatBoxModel(StarTableOutput sto, boolean multi)`
Constructs a ComboBoxModel containing an entry for each of the known output formats.
`void`
`setEnabled(boolean isEnabled)`
`void`
`setProgressBar(JProgressBar progBar)`
Sets the progress bar that will be used by this chooser.
`void`
`setSelectedFormat(String format)`
Sets the currently selected format string.
`void`
`setTableOutput(StarTableOutput sto)`
Sets the StarTableOutput object which this saver uses to do the actual writing of the StarTables.
`void`
`showSaveDialog(Component parent)`
Pops up a modal dialogue which interacts with the user to save the tables returned by `getTables()`.

### Methods inherited from class JPanel

`getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

### Methods inherited from class JComponent

`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

### Methods inherited from class Container

`add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

### Methods inherited from class Component

`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### TableSaveChooser

public TableSaveChooser()
Constructs a saver with a default StarTableOutput and save dialogues.

### TableSaveChooser

public TableSaveChooser(StarTableOutput sto, TableSaveDialog[] saveDialogs)
Constructs a saver with a given StarTableOutput and save dialogues.

Parameters:
  `sto` - output marshaller
  `saveDialogs` - array of save dialogues to use

## Method Details

### setTableOutput

public void setTableOutput(StarTableOutput sto)
Sets the StarTableOutput object which this saver uses to do the actual writing of the StarTables.

Parameters:
  `sto` - the new StarTableOutput to use

### getTableOutput

public StarTableOutput getTableOutput()
Returns the StarTableOutput object which this saver uses to do the actual writing of the StarTables.

Returns:
  sto the StarTableOutput object

### getFormatSelector

public JComboBox<String> getFormatSelector()
Returns the selector which chooses table output formats. It may be replaced.

Returns:
  format selector

### getTables

public abstract StarTable[] getTables()
Obtains the tables to write. This must be implemented by concrete subclasses.

Returns:
  table to write

### setProgressBar

public void setProgressBar(JProgressBar progBar)
Sets the progress bar that will be used by this chooser. Should be called before the component is displayed to the user.

Parameters:
  `progBar` - progress bar for displaying save progress

### getSaveDialogActions

public Action[] getSaveDialogActions()
Returns actions which correspond to the save dialogues this saver is using. Each action is the result of an earlier call to `createSaveDialogAction(TableSaveDialog)`.

Returns:
  array of actions which will trigger a particular save dialogue

### done

public void done()
Called when the table has been written.

### showSaveDialog

public void showSaveDialog(Component parent)
Pops up a modal dialogue which interacts with the user to save the tables returned by `getTables()`.

Parameters:
  `parent` - parent component

### setEnabled

public void setEnabled(boolean isEnabled)

Overrides:
  `setEnabled` in class `JComponent`

### getSelectedFormat

public String getSelectedFormat()
Returns the currently selected format string.

Returns:
  format label

### setSelectedFormat

public void setSelectedFormat(String format)
Sets the currently selected format string.

Parameters:
  `format` - format label

### createDialog

public JDialog createDialog(Component parent)
Creates a dialogue which can be used for user interaction.

Parameters:
  `parent` - parent component

### createSaveDialogAction

public final Action createSaveDialogAction(TableSaveDialog tsd)
Returns an action which will result in the given save dialogue being posted to allow the user to save this chooser's current table. This method is invoked in the constructor, hence is declared final.

Parameters:
  `tsd` - save dialogue
Returns:
  action to post `tsd`

### makeFormatBoxModel

public static ComboBoxModel<String> makeFormatBoxModel(StarTableOutput sto, boolean multi)
Constructs a ComboBoxModel containing an entry for each of the known output formats.

Parameters:
  `sto` - output marshaller
  `multi` - true if multiple tables might be used, false if only a single table will be written
Returns:
  format combo box model

### getExtraWriterNames

public static String[] getExtraWriterNames(boolean multi)
Returns a selection of output handler specifications that can be offered to the user alongside the default-configuration ones.

Parameters:
  `multi` - true if multiple tables might be used, false if only a single table will be written
Returns:
  example/useful writer specifications including config options

### main

public static void main(String[] args)
Testing purposes only.