wyvern.util
Class JDocControl

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.AbstractButton
                  extended byjavax.swing.JMenuItem
                      extended byjavax.swing.JMenu
                          extended bywyvern.util.JDocControl
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, javax.swing.MenuElement, java.io.Serializable, javax.swing.SwingConstants

public class JDocControl
extends javax.swing.JMenu

Object that keeps track of the state of a "document" and provides handling for file operations (new/open/save/etc).

new
check if doc is dirty. If so, save it. DocumentManager does new-doc.
open
if doc is dirty, save it. Put up file selector & return name.
close
if doc is dirty, save it. DocumentManager handles closing file.
save
DocumentManager handles actual save function
save-as
get save-as name from FileDialog, or cancel. DocumentManager saves.

This object manifests itself as a set of buttons that can be placed in a menu. It communicates with another object, the DocumentManager, which keeps the file handles and manages reading/ writing the file. The JDocControl issues commands to the Document on open, close, save, etc.

Version:
1.0, Sep 18, 1999
Author:
Steve Yegge
See Also:
Serialized Form

Nested Class Summary
protected  class JDocControl.DocCtrlCommand
          Command class for handling AWT events.
 
Nested classes inherited from class javax.swing.JMenu
javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener
 
Nested classes inherited from class javax.swing.JMenuItem
javax.swing.JMenuItem.AccessibleJMenuItem
 
Nested classes inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static int CLOSE
           
protected  java.lang.String directory_
           
protected  DocumentManager document_
           
protected  java.util.List extensions_
           
protected  java.lang.String filename_
           
static int NEW
           
protected  boolean newDocument_
           
protected  java.lang.String oldDir_
           
protected  java.lang.String oldFile_
           
static int OPEN
           
protected  java.lang.String openTitle_
           
protected  javax.swing.JFrame parent_
           
protected  java.lang.String parentTitle_
           
static int QUIT
           
static int SAVE
           
static int SAVE_AS
           
protected  java.lang.String saveTitle_
           
protected  java.lang.String untitledFilename_
           
 
Fields inherited from class javax.swing.JMenu
popupListener
 
Fields inherited from class javax.swing.AbstractButton
actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JDocControl(javax.swing.JFrame parent, DocumentManager doc)
          Creates and initializes a new default JDocControl object.
JDocControl(javax.swing.JFrame parent, java.lang.String untitledFilename, java.lang.String menuName, DocumentManager doc)
          Creates and initializes a new JDocControl object.
 
Method Summary
 void addExtension(java.lang.String extension)
          Adds an extension to the list of extensions this docctrl shows by default.
protected  void addNewMenu()
          Adds the "New" (as in "New Document") menu item to the menu.
protected  boolean checkOverwrite(java.lang.String dir, java.lang.String filename)
          Prompts the user if overwriting a file.
protected  void closeDocument()
          Closes the current document.
protected  void continueFileAction(int action)
          Continue doing whatever the user was doing (new, open, quit) now that we've saved their changes.
protected  java.lang.String displayFileDialog(ExtensionFileFilter ff, java.lang.String dir, java.lang.String defaultName, int type)
          Put up a File Save dialog.
 void fileAction(int action)
          Handles saving the document before doing anything else.
 java.lang.String getDocumentParentDir()
          Returns the directory where the last file opened lives.
 java.lang.String getDocumentPath()
          Returns the absolute path to the document currently being edited.
protected  java.lang.String getFileName(int type)
          Puts up a file dialog showing the current filename and directory, and returns the name the user enters.
 java.lang.String getPreviousDocumentPath()
          Returns the document we were visiting previously.
 boolean isNewDocument()
          Returns true if this is a new document that has never been saved.
 void loadDocument(java.lang.String path)
          Instructs the doc control to open the specified document, given its full path, without prompting for saving the current document.
protected  void newDocument()
          Creates a brand-new document.
 void notifyNewFile(java.lang.String filename)
          Notifies the Document Control that a new file was opened by the DocumentManager.
protected  void openDocument()
          Lets the user select a new document to open.
 void saveDocument()
          Saves the document.
protected  void saveDocumentAs()
          Save the document under a different name.
 void setDirectory(java.lang.String dir)
          Sets the starting directory.
 void setOpenTitle(java.lang.String title)
          Sets the title of the "Open Document" dialog - make sure you call this before doing any DocCtrl operations; i.e. before the dialog actually opens.
 void setSaveTitle(java.lang.String title)
          Sets the title of the "Save Document" dialog - make sure you call this before doing any DocCtrl operations; i.e. before the dialog actually opens.
 void updateParentTitle()
          Set the title on the Frame to refer to the current doc.
 
Methods inherited from class javax.swing.JMenu
add, add, add, add, add, addMenuListener, addSeparator, applyComponentOrientation, configurePropertiesFromAction, createActionChangeListener, createActionComponent, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getItem, getItemCount, getMenuComponent, getMenuComponentCount, getMenuComponents, getMenuListeners, getPopupMenu, getPopupMenuOrigin, getSubElements, getUIClassID, insert, insert, insert, insertSeparator, isMenuComponent, isPopupMenuVisible, isSelected, isTearOff, isTopLevelMenu, menuSelectionChanged, paramString, processKeyEvent, remove, remove, remove, removeAll, removeMenuListener, setAccelerator, setComponentOrientation, setDelay, setMenuLocation, setModel, setPopupMenuVisible, setSelected, updateUI
 
Methods inherited from class javax.swing.JMenuItem
addMenuDragMouseListener, addMenuKeyListener, createActionPropertyChangeListener, fireMenuDragMouseDragged, fireMenuDragMouseEntered, fireMenuDragMouseExited, fireMenuDragMouseReleased, fireMenuKeyPressed, fireMenuKeyReleased, fireMenuKeyTyped, getAccelerator, getMenuDragMouseListeners, getMenuKeyListeners, init, isArmed, processKeyEvent, processMenuDragMouseEvent, processMenuKeyEvent, processMouseEvent, removeMenuDragMouseListener, removeMenuKeyListener, setArmed, setEnabled, setUI
 
Methods inherited from class javax.swing.AbstractButton
addActionListener, addChangeListener, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createChangeListener, createItemListener, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setMargin, setMnemonic, setMnemonic, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, addContainerListener, addImpl, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.swing.MenuElement
processKeyEvent, processMouseEvent
 

Field Detail

NEW

public static final int NEW
See Also:
Constant Field Values

OPEN

public static final int OPEN
See Also:
Constant Field Values

CLOSE

public static final int CLOSE
See Also:
Constant Field Values

SAVE

public static final int SAVE
See Also:
Constant Field Values

SAVE_AS

public static final int SAVE_AS
See Also:
Constant Field Values

QUIT

public static final int QUIT
See Also:
Constant Field Values

document_

protected DocumentManager document_

parent_

protected javax.swing.JFrame parent_

parentTitle_

protected java.lang.String parentTitle_

untitledFilename_

protected java.lang.String untitledFilename_

filename_

protected java.lang.String filename_

directory_

protected java.lang.String directory_

oldDir_

protected java.lang.String oldDir_

oldFile_

protected java.lang.String oldFile_

openTitle_

protected java.lang.String openTitle_

saveTitle_

protected java.lang.String saveTitle_

extensions_

protected java.util.List extensions_

newDocument_

protected boolean newDocument_
Constructor Detail

JDocControl

public JDocControl(javax.swing.JFrame parent,
                   DocumentManager doc)
Creates and initializes a new default JDocControl object.

Parameters:
parent - the Frame object this will be attached to

JDocControl

public JDocControl(javax.swing.JFrame parent,
                   java.lang.String untitledFilename,
                   java.lang.String menuName,
                   DocumentManager doc)
Creates and initializes a new JDocControl object.

Parameters:
parent - the Frame object this will be attached to
untitledFilename - - the name of untitled documents
menuName - - the name of the menu
Method Detail

addNewMenu

protected void addNewMenu()
Adds the "New" (as in "New Document") menu item to the menu.


setDirectory

public void setDirectory(java.lang.String dir)
Sets the starting directory.


addExtension

public void addExtension(java.lang.String extension)
Adds an extension to the list of extensions this docctrl shows by default.


setOpenTitle

public void setOpenTitle(java.lang.String title)
Sets the title of the "Open Document" dialog - make sure you call this before doing any DocCtrl operations; i.e. before the dialog actually opens.

Parameters:
title - the title to use for the dialog

setSaveTitle

public void setSaveTitle(java.lang.String title)
Sets the title of the "Save Document" dialog - make sure you call this before doing any DocCtrl operations; i.e. before the dialog actually opens.

Parameters:
title - the title to use for the dialog

fileAction

public void fileAction(int action)
Handles saving the document before doing anything else.

Parameters:
action - NEW, OPEN, SAVE, etc.

continueFileAction

protected void continueFileAction(int action)
Continue doing whatever the user was doing (new, open, quit) now that we've saved their changes.


updateParentTitle

public void updateParentTitle()
Set the title on the Frame to refer to the current doc.


newDocument

protected void newDocument()
Creates a brand-new document.


openDocument

protected void openDocument()
Lets the user select a new document to open.


closeDocument

protected void closeDocument()
Closes the current document.


loadDocument

public void loadDocument(java.lang.String path)
Instructs the doc control to open the specified document, given its full path, without prompting for saving the current document.

Parameters:
path - the absolute path to the file to load

saveDocument

public void saveDocument()
Saves the document.


saveDocumentAs

protected void saveDocumentAs()
Save the document under a different name.


checkOverwrite

protected boolean checkOverwrite(java.lang.String dir,
                                 java.lang.String filename)
Prompts the user if overwriting a file.

Parameters:
filename - the absolute path to the file to write out
Returns:
true to continue, false if they aborted

getFileName

protected java.lang.String getFileName(int type)
Puts up a file dialog showing the current filename and directory, and returns the name the user enters. If the user didn't cancel the dialog, we set the current dir to whatever the user chose as well.

Parameters:
type - the FileDialog constant (SAVE, OPEN, etc.)
Returns:
the name of the file (null if dialog was cancelled)

displayFileDialog

protected java.lang.String displayFileDialog(ExtensionFileFilter ff,
                                             java.lang.String dir,
                                             java.lang.String defaultName,
                                             int type)
Put up a File Save dialog. Returns name of file.

Parameters:
ff - the FilenameFilter to use (not used in JDK 1.1)
dir - the default directory to save in
Returns:
name of file to use (null if cancelled)

notifyNewFile

public void notifyNewFile(java.lang.String filename)
Notifies the Document Control that a new file was opened by the DocumentManager. Useful for when the user passes a filename on the command line.

Parameters:
filename - the full path to the file (".map" extension optional)

getDocumentPath

public java.lang.String getDocumentPath()
Returns the absolute path to the document currently being edited. Returns null if it's not currently set.


getDocumentParentDir

public java.lang.String getDocumentParentDir()
Returns the directory where the last file opened lives.

Returns:
the absolute path, or null if there isn't one

getPreviousDocumentPath

public java.lang.String getPreviousDocumentPath()
Returns the document we were visiting previously.

Returns:
the previously-opened document, or null if none Returns the string "(new doc)" if it was a new document.

isNewDocument

public boolean isNewDocument()
Returns true if this is a new document that has never been saved. It may or may not be dirty.