# Class AuxWindow

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
uk.ac.starlink.topcat.AuxWindow

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

Direct Known Subclasses:
  `ActivationWindow, CdsUploadMatchWindow, ClassifyWindow, ColumnInfoWindow, ConcatWindow, ControlWindow, DalMultiWindow, DatalinkWindow, GraphicsWindow, HelpWindow, HtmlWindow, ImageWindow, LoadWindow, MatchWindow, MethodWindow, ParameterWindow, QueryWindow, SampWindow, StackPlotWindow, StatsWindow, SubsetWindow, TableLoadDialogWindow, TableViewerWindow`

public class AuxWindow extends JFrame
Provides a common superclass for windows popped up by TOPCAT. This implements some common look and feel elements.

Some window-type utility methods are also provided.

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

## Nested Class Summary

### Nested classes/interfaces inherited from class JFrame

`JFrame.AccessibleJFrame`

### Nested classes/interfaces inherited from class Frame

`Frame.AccessibleAWTFrame`

### Nested classes/interfaces inherited from class Window

`Window.AccessibleAWTWindow, Window.Type`

### 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 JFrame

`accessibleContext, rootPane, rootPaneCheckingEnabled`

### Fields inherited from class Frame

`CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR`

### Fields inherited from class Component

`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

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

### Fields inherited from interface WindowConstants

`DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

## Constructor Summary

Constructors
Constructor
Description
`AuxWindow(String title, Component parent)`
Constructs an AuxWindow.
`AuxWindow(TopcatModel tcModel, String viewName, Component parent)`
Constructs an AuxWindow which will watch a given table.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addHelp(String helpID)`
Adds standard actions to this window, in the menu and toolbar.
`static void`
`beep()`
It beeps.
`boolean`
`confirm(Object message, String title)`
Obtains simple confirmation from a user.
`Action`
`createImportTableAction(String dataType, uk.ac.starlink.table.TableSource tSrc, String label)`
Constructs and returns an action which allows a user to import a supplied table into TOPCAT as if it had just been loaded.
`Action`
`createSaveTableAction(String dataType, uk.ac.starlink.table.TableSource tSrc)`
Constructs and returns an action which allows a user to save a supplied table to disk.
`JComponent`
`getBodyPanel()`
Returns the panel containing the body of this window.
`JPanel`
`getControlPanel()`
Returns the container which should be used for controls and buttons.
`JMenu`
`getHelpMenu()`
Returns this window's "Help" menu.
`Image`
`getIconImage()`
`JPanel`
`getMainArea()`
Returns the container which should be used for the main user component(s) in this window.
`static Component`
`getSponsorLogos()`
Returns a component containing logos for the various organisations which have sponsored TOPCAT development.
`JToolBar`
`getToolBar()`
Returns this window's toolbar.
`JMenu`
`getWindowMenu()`
Returns this window's "Window" menu.
`static Border`
`makeTitledBorder(String title)`
Returns a new border which features a given title.
`void`
`makeVisible()`
Ensures that this window is posted in a visible fashion.
`JProgressBar`
`placeProgressBar()`
Creates a JProgressBar and places it in the the window.
`static void`
`positionAfter(Component first, Window second)`
Locates one window 'after' another one - probably a bit lower and to the right.
`static void`
`recursiveSetEnabled(Component comp, boolean enabled)`
Recursively calls `Component.setEnabled(boolean)` on a component and (if it is a container) any of the components it contains.
`void`
`setBusy(boolean busy)`
Makes the window look like it's doing something.
`void`
`setCloseIsExit()`
Irrevocably marks this window as one for which the Close action has the same effect as the Exit action.
`void`
`setMainHeading(String text)`
Sets the in-window text which heads up the main display area.
`void`
`setVisible(boolean isVis)`

### Methods inherited from class JFrame

`addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update`

### Methods inherited from class Frame

`addNotify, getCursorType, getExtendedState, getFrames, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated`

### Methods inherited from class Window

`addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, show, toBack, toFront`

### Methods inherited from class Container

`add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree`

### Methods inherited from class Component

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

### Methods inherited from class Object

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

### Methods inherited from interface MenuContainer

`getFont, postEvent`

## Constructor Details

### AuxWindow

public AuxWindow(String title, Component parent)
Constructs an AuxWindow.

Parameters:
  `title` - the window basic title
  `parent` - the parent component of the new window - may be used for positioning

### AuxWindow

public AuxWindow(TopcatModel tcModel, String viewName, Component parent)
Constructs an AuxWindow which will watch a given table. Its title is modified as necessary if the table's label changes. This constructor is only suitable if the window is going to watch (be a view of) a single TopcatModel throughout its life.

Parameters:
  `tcModel` - the model owned by this window
  `viewName` - name of the type of view provided by this window
  `parent` - parent component, may be used for window positioning

## Method Details

### addHelp

protected void addHelp(String helpID)
Adds standard actions to this window, in the menu and toolbar. This method should generally be called by subclasses after they have added any other menus and toolbar buttons specific to their function, since the standard buttons appear as the last ones.

An ID can be supplied to indicate the page which should be shown in the help viewer when context-sensitive help is requested. This may be `null` if no change in the help page should be made (for instance if there is no help specific to this window).

Parameters:
  `helpID` - the ID of the help item for this window

### setBusy

public void setBusy(boolean busy)
Makes the window look like it's doing something. This currently modifies the cursor to be busy/normal.

Parameters:
  `busy` - whether the window should look busy

### makeVisible

public void makeVisible()
Ensures that this window is posted in a visible fashion.

### setVisible

public void setVisible(boolean isVis)

Overrides:
  `setVisible` in class `Window`

### placeProgressBar

public JProgressBar placeProgressBar()
Creates a JProgressBar and places it in the the window. It will replace any other progress bar which has been placed by an earlier call of this method.

Returns:
  the progress bar which has been placed

### setCloseIsExit

public void setCloseIsExit()
Irrevocably marks this window as one for which the Close action has the same effect as the Exit action. Any Close invocation buttons are replaced with exit ones, duplicates removed, etc. Should be called before any call to `addHelp(String)`.

### getToolBar

public JToolBar getToolBar()
Returns this window's toolbar. Any client which adds a group of tools to the toolbar should add a separator after the group.

Returns:
  the toolbar

### getWindowMenu

public JMenu getWindowMenu()
Returns this window's "Window" menu.

Returns:
  the window menu

### getHelpMenu

public JMenu getHelpMenu()
Returns this window's "Help" menu.

Returns:
  the help menu

### setMainHeading

public void setMainHeading(String text)
Sets the in-window text which heads up the main display area.

Parameters:
  `text` - heading text

### getMainArea

public JPanel getMainArea()
Returns the container which should be used for the main user component(s) in this window. It will have a BorderLayout.

Returns:
  main container

### getControlPanel

public JPanel getControlPanel()
Returns the container which should be used for controls and buttons. This will probably be placed below the mainArea.

Returns:
  control container

### getBodyPanel

public JComponent getBodyPanel()
Returns the panel containing the body of this window. This contains most of the content but not the parts that have to go at the top and bottom like the toolbar and progress bar.

Returns:
  body panel

### confirm

public boolean confirm(Object message, String title)
Obtains simple confirmation from a user. This is just a convenience method wrapping a JOptionPane invocation.

Parameters:
  `message` - confirmation text for user
  `title` - confirmation window title
Returns:
  true iff the user provides positive confirmation

### createSaveTableAction

public Action createSaveTableAction(String dataType, uk.ac.starlink.table.TableSource tSrc)
Constructs and returns an action which allows a user to save a supplied table to disk.

Parameters:
  `dataType` - short textual description of the table content
  `tSrc` - table supplier object

### createImportTableAction

public Action createImportTableAction(String dataType, uk.ac.starlink.table.TableSource tSrc, String label)
Constructs and returns an action which allows a user to import a supplied table into TOPCAT as if it had just been loaded.

Parameters:
  `dataType` - short textual description of the table content
  `tSrc` - table supplier object
  `label` - TocpatModel identifier label

### getIconImage

public Image getIconImage()

Overrides:
  `getIconImage` in class `Frame`

### beep

public static void beep()
It beeps.

### makeTitledBorder

public static Border makeTitledBorder(String title)
Returns a new border which features a given title.

Parameters:
  `title` - window title
Returns:
  border

### positionAfter

public static void positionAfter(Component first, Window second)
Locates one window 'after' another one - probably a bit lower and to the right. The second window is repositioned relative to the first one.

Parameters:
  `first` - first window, or `null`
  `second` - second window

### recursiveSetEnabled

public static void recursiveSetEnabled(Component comp, boolean enabled)
Recursively calls `Component.setEnabled(boolean)` on a component and (if it is a container) any of the components it contains.

Parameters:
  `comp` - top-level component to enable/disable
  `enabled` - whether to enable or disable it

### getSponsorLogos

public static Component getSponsorLogos()
Returns a component containing logos for the various organisations which have sponsored TOPCAT development.

Returns:
  logo bar