arlut.csd.ganymede.client
Class framePanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JInternalFrame
                          |
                          +--arlut.csd.ganymede.client.framePanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, javax.swing.event.ChangeListener, java.util.EventListener, java.awt.image.ImageObserver, javax.swing.event.InternalFrameListener, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.lang.Runnable, java.io.Serializable, java.beans.VetoableChangeListener, javax.swing.WindowConstants

public class framePanel
extends javax.swing.JInternalFrame
implements javax.swing.event.ChangeListener, java.lang.Runnable, java.awt.event.ActionListener, java.beans.VetoableChangeListener, javax.swing.event.InternalFrameListener

An internal client window displaying and/or editing a particular database object from the Ganymede server. A framePanel is a JInternalFrame which contains a tabbed pane which incorporates a containerPanel for viewing/editing a server-side database object, as well as several auxiliary panes such as an ownerPanel, historyPanel, and other panels as appropriate for specific object types.

framePanel is itself a Runnable object. When created, the framePanel constructor will spawn a new thread to execute its run() method. This run() method communicates with the server in the background, downloading field information needed to present the object to the user for viewing and/or editing.

See Also:
Serialized Form

Field Summary
(package private)  javax.swing.JScrollPane admin_history
          holds an adminHistoryPanel (only for adminPersonae)
 int admin_history_index
           
private  arlut.csd.Util.booleanSemaphore closed
          Used with internalFrameClosed() to make our JInternalFrame close interception hack from Swing 1.1 work with Kestrel.
(package private)  boolean closingApproved
          used with vetoableChange() to work around Swing 1.1 bug preventing setDefaultCloseOperation(DO_NOTHING_ON_CLOSE) from doing anything useful.
private  java.util.Vector containerPanels
          A vector of containerPanels, used to allow the gclient to refresh containerPanels on demand, and to allow the gclient to order any containerPanels contained in this framePanel to stop loading on a transaction cancel.
(package private)  java.util.Vector createdList
          Vector of Integers used to track the tab panels that have been created.
(package private)  arlut.csd.ganymede.date_field creation_date_field
           
(package private)  arlut.csd.ganymede.string_field creator_field
           
 int current
           
(package private)  boolean debug
          This will be loaded from gclient anyway.
(package private)  boolean editable
           
(package private)  arlut.csd.ganymede.client.datePanel exp_date_panel
           
(package private)  arlut.csd.ganymede.date_field exp_field
           
(package private)  javax.swing.JScrollPane expiration_date
          Holds a datePanel
 int expiration_date_index
           
private  boolean expiration_Editable
           
(package private)  arlut.csd.ganymede.client.gclient gc
          Reference to the client's main class, used for some utility functions.
(package private)  javax.swing.JScrollPane general
          Holds a containerPanel in the ViewportView
 int general_index
           
(package private)  javax.swing.JPanel history
           
 int history_index
           
(package private)  arlut.csd.ganymede.client.historyPanel history_panel
           
private  arlut.csd.ganymede.Invid invid
          Invid of the object edited.
(package private)  boolean isCreating
          If true, this is a newly created object we're editing.
(package private)  arlut.csd.ganymede.date_field modification_date_field
           
(package private)  arlut.csd.ganymede.string_field modifier_field
           
(package private)  arlut.csd.ganymede.client.notesPanel my_notesPanel
           
(package private)  javax.swing.JScrollPane notes
          holds a notePanel
(package private)  arlut.csd.ganymede.string_field notes_field
           
 int notes_index
           
(package private)  javax.swing.JScrollPane objects_owned
          Holds an ownershipPanel (only for owner groups)
(package private)  arlut.csd.ganymede.invid_field objects_owned_field
           
 int objects_owned_index
           
(package private)  javax.swing.JScrollPane owner
          Holds an ownerPanel
 int owner_index
           
(package private)  arlut.csd.ganymede.client.ownerPanel owner_panel
          The ownerPanel held
(package private)  javax.swing.JTabbedPane pane
          The tabbed pane holding our various panels.
(package private)  arlut.csd.ganymede.invid_field persona_field
           
(package private)  javax.swing.JPanel personae
           
 int personae_index
           
(package private)  javax.swing.JProgressBar progressBar
          We'll show a progressBar while the general panel is loading.
(package private)  javax.swing.JPanel progressPanel
          Panel to hold the progressBar while we are loading the fields for this object.
(package private)  arlut.csd.ganymede.client.datePanel rem_date_panel
           
(package private)  arlut.csd.ganymede.date_field rem_field
           
(package private)  javax.swing.JScrollPane removal_date
          Holds a datePanel
 int removal_date_index
           
private  boolean removal_Editable
           
private  arlut.csd.Util.booleanSemaphore running
           
(package private)  arlut.csd.ganymede.db_object server_object
          Remote reference to the server-side object we are viewing or editing.
private  arlut.csd.Util.booleanSemaphore stopped
           
(package private)  java.util.Vector templates
          Vector of FieldTemplates used by the save() and sendMail() methods to enumerate this object's fields.
(package private)  arlut.csd.ganymede.client.windowPanel wp
          Reference to the desktop pane containing the client's internal windows.
 
Fields inherited from class javax.swing.JInternalFrame
closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_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.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
framePanel(arlut.csd.ganymede.Invid invid, arlut.csd.ganymede.db_object object, boolean editable, arlut.csd.ganymede.client.windowPanel winP, java.lang.String title, boolean isCreating)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
           
 void addContainerPanel(arlut.csd.ganymede.client.containerPanel cp)
           
 void addExpirationDatePanel()
          These add the tabs to the framePanel, but they don't create the content The create_ methods create the actual panes, after the pane is selected.
 void addNotesPanel()
           
 void addRemovalDatePanel()
           
 void cleanUp()
          This method provides a handy way to null out data structures held in relationship to this framePanel, particularly network reference resources.
(package private)  void create_admin_history_panel()
           
(package private)  void create_expiration_date_panel()
           
(package private)  void create_general_panel()
           
(package private)  void create_history_panel()
           
(package private)  void create_notes_panel()
           
(package private)  void create_objects_owned_panel()
           
(package private)  void create_owner_panel()
           
(package private)  void create_personae_panel()
           
(package private)  void create_removal_date_panel()
           
(package private)  javax.swing.JMenuBar createMenuBar(boolean editable)
           
 void createPanel(int index)
          This checks to see if the panel is created, and creates it if needed.
private  java.lang.StringBuffer encodeObjectToStringBuffer(boolean showHistory, boolean showTransactions, java.util.Date startDate)
          Generates a String representation of this object for save() and sendMail().
(package private)  arlut.csd.ganymede.client.gclient getgclient()
           
 arlut.csd.ganymede.client.notesPanel getNotesPanel()
          Used by gclient.commitTransaction to get access to our notes panel.
(package private)  arlut.csd.ganymede.db_object getObject()
           
 arlut.csd.ganymede.Invid getObjectInvid()
          Returns the invid of the object contained in this frame panel.
(package private)  java.lang.String getObjectLabel()
           
(package private)  java.lang.String getObjectType()
           
 java.lang.String getObjectTypeName()
          Returns the type name of the object contained in this frame panel.
 java.awt.Image getWaitImage()
           
(package private)  arlut.csd.ganymede.client.windowPanel getWindowPanel()
           
 void internalFrameActivated(javax.swing.event.InternalFrameEvent event)
           
 void internalFrameClosed(javax.swing.event.InternalFrameEvent event)
          When the internalFrame closes, we need to shut down any auxiliary internalFrames associated with fields in any contained container panels.
 void internalFrameClosing(javax.swing.event.InternalFrameEvent event)
           
 void internalFrameDeactivated(javax.swing.event.InternalFrameEvent event)
           
 void internalFrameDeiconified(javax.swing.event.InternalFrameEvent event)
           
 void internalFrameIconified(javax.swing.event.InternalFrameEvent event)
           
 void internalFrameOpened(javax.swing.event.InternalFrameEvent event)
           
 boolean isEditable()
           
 boolean isStopped()
          This method may be called by objects of other classes who want to check to see if this framePanel has asserted a stop on all loading activities.
private  void println(java.lang.String s)
          Use this instead of System.out.println, in case we want to direct that stuff somewhere else sometime.
(package private)  void refresh_expiration_date_panel()
           
(package private)  void refresh_removal_date_panel()
           
 void refresh()
          Refreshes the tab that is showing.
 void removeContainerPanel(arlut.csd.ganymede.client.containerPanel cp)
           
 void run()
          Communicates with the server to download all of the information needed to present the database object associated with this window to the user.
 void save()
          Saves a summary of this object to disk.
 void sendMail()
          Uses the Ganymede server to e-mail a summary of this object to one or more email addresses.
private  void setStatus(java.lang.String status)
           
private  void showErrorMessage(java.lang.String message)
          Give the gclient an error message.
private  void showErrorMessage(java.lang.String title, java.lang.String message)
           
 void showTab(int index)
           
 void stateChanged(javax.swing.event.ChangeEvent e)
           
 void stopNow()
          This method is intended to stop any container panels from loading, in the event that the user has pressed the transaction cancel button in the gclient.
 void updateContainerPanels()
          This method is called to force an update on this framePanel.
 void updateContainerPanels(arlut.csd.ganymede.Invid invid, arlut.csd.ganymede.ReturnVal retVal)
          This method is called to force an update on this framePanel in accordance with the rescan instructions encoded in retVal.
(package private)  void updateOwnerPanel()
           
 void vetoableChange(java.beans.PropertyChangeEvent pce)
          This is a vetoableChangeListener implementation method, and is used to allow the framePanel to intercede in window close attempts for editable objects.
 
Methods inherited from class javax.swing.JInternalFrame
addImpl, addInternalFrameListener, createRootPane, dispose, doDefaultCloseAction, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getFrameIcon, getGlassPane, getInternalFrameListeners, getJMenuBar, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getTitle, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setFrameIcon, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setTitle, setUI, show, toBack, toFront, updateUI
 
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, 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, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, 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, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, 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, 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, imageUpdate, 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, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

debug

boolean debug
This will be loaded from gclient anyway.


closingApproved

boolean closingApproved

used with vetoableChange() to work around Swing 1.1 bug preventing setDefaultCloseOperation(DO_NOTHING_ON_CLOSE) from doing anything useful.

This variable needs to be set to true in order for setClosed() calls in windowPanel to avoid bringing up the dialogs.


closed

private arlut.csd.Util.booleanSemaphore closed

Used with internalFrameClosed() to make our JInternalFrame close interception hack from Swing 1.1 work with Kestrel.

If this variable is set to true, internalFrameClosed() will not attempt to call dispose().


running

private arlut.csd.Util.booleanSemaphore running

stopped

private arlut.csd.Util.booleanSemaphore stopped

current

public int current

general_index

public int general_index

removal_date_index

public int removal_date_index

expiration_date_index

public int expiration_date_index

history_index

public int history_index

owner_index

public int owner_index

admin_history_index

public int admin_history_index

notes_index

public int notes_index

objects_owned_index

public int objects_owned_index

personae_index

public int personae_index

progressBar

javax.swing.JProgressBar progressBar
We'll show a progressBar while the general panel is loading. The progressBar is contained in the progressPanel, which will be removed when the general panel is finished loading.


progressPanel

javax.swing.JPanel progressPanel
Panel to hold the progressBar while we are loading the fields for this object.


pane

javax.swing.JTabbedPane pane
The tabbed pane holding our various panels.


general

javax.swing.JScrollPane general
Holds a containerPanel in the ViewportView


expiration_date

javax.swing.JScrollPane expiration_date
Holds a datePanel


removal_date

javax.swing.JScrollPane removal_date
Holds a datePanel


owner

javax.swing.JScrollPane owner
Holds an ownerPanel


owner_panel

arlut.csd.ganymede.client.ownerPanel owner_panel

The ownerPanel held


notes

javax.swing.JScrollPane notes
holds a notePanel


admin_history

javax.swing.JScrollPane admin_history
holds an adminHistoryPanel (only for adminPersonae)


objects_owned

javax.swing.JScrollPane objects_owned
Holds an ownershipPanel (only for owner groups)


exp_date_panel

arlut.csd.ganymede.client.datePanel exp_date_panel

rem_date_panel

arlut.csd.ganymede.client.datePanel rem_date_panel

history

javax.swing.JPanel history

personae

javax.swing.JPanel personae

history_panel

arlut.csd.ganymede.client.historyPanel history_panel

containerPanels

private java.util.Vector containerPanels

A vector of containerPanels, used to allow the gclient to refresh containerPanels on demand, and to allow the gclient to order any containerPanels contained in this framePanel to stop loading on a transaction cancel.

Note that the cleanUp() method in this class can null out this reference, so all methods that loop over containerPanels should be synchronized. This is also why containerPanels is kept private.


templates

java.util.Vector templates
Vector of FieldTemplates used by the save() and sendMail() methods to enumerate this object's fields.


createdList

java.util.Vector createdList
Vector of Integers used to track the tab panels that have been created.


exp_field

arlut.csd.ganymede.date_field exp_field

rem_field

arlut.csd.ganymede.date_field rem_field

creation_date_field

arlut.csd.ganymede.date_field creation_date_field

modification_date_field

arlut.csd.ganymede.date_field modification_date_field

notes_field

arlut.csd.ganymede.string_field notes_field

creator_field

arlut.csd.ganymede.string_field creator_field

modifier_field

arlut.csd.ganymede.string_field modifier_field

persona_field

arlut.csd.ganymede.invid_field persona_field

objects_owned_field

arlut.csd.ganymede.invid_field objects_owned_field

editable

boolean editable

server_object

arlut.csd.ganymede.db_object server_object
Remote reference to the server-side object we are viewing or editing.


wp

arlut.csd.ganymede.client.windowPanel wp
Reference to the desktop pane containing the client's internal windows. Used to access some GUI resources and to provide to new containerPanels created for embedded objects.


gc

arlut.csd.ganymede.client.gclient gc
Reference to the client's main class, used for some utility functions.


my_notesPanel

arlut.csd.ganymede.client.notesPanel my_notesPanel

invid

private arlut.csd.ganymede.Invid invid
Invid of the object edited. DO NOT access invid directly; use getObjectInvid(). invid will be null until the first time getObjectInvid() is called.


isCreating

boolean isCreating
If true, this is a newly created object we're editing. We care about this because we need to handle the user clicking on this window's close box a bit differently.


removal_Editable

private boolean removal_Editable

expiration_Editable

private boolean expiration_Editable
Constructor Detail

framePanel

public framePanel(arlut.csd.ganymede.Invid invid,
                  arlut.csd.ganymede.db_object object,
                  boolean editable,
                  arlut.csd.ganymede.client.windowPanel winP,
                  java.lang.String title,
                  boolean isCreating)
Parameters:
object - RMI reference to a server-side database object
editable - If true, the database object is being edited by this window
winP - The JDesktopPane container for this window
title - Title for this window
isCreating - if true, this window is for a newly created object, and will be treated specially when closing this window.
Method Detail

run

public void run()

Communicates with the server to download all of the information needed to present the database object associated with this window to the user. Some of this data (types of fields defined in objects of this type, for instance) will have been already loaded into gclient, but this method is reponsible for loading all data specific to the object being viewed and/or edited.

This method also handles the creation of this window's tabbed pane, and adding the various tabs to it. The actual panels attached to the various tabs will not actually be created and initialized unless and until the user selects the appropriate tab at some point. The only panel actually created by this method is the general panel, which shows all of the non-built-in fields of the object we're talking to.

Specified by:
run in interface java.lang.Runnable

isEditable

public boolean isEditable()

getObjectInvid

public arlut.csd.ganymede.Invid getObjectInvid()

Returns the invid of the object contained in this frame panel.

If the invid has not been loaded, this method will load it first.

Returns:
The invid of the object in this frame panel.

getObjectTypeName

public java.lang.String getObjectTypeName()

Returns the type name of the object contained in this frame panel.

If the invid has not been loaded, this method will load it first.

Returns:
The name of the type of the object in this frame panel.

getNotesPanel

public arlut.csd.ganymede.client.notesPanel getNotesPanel()

Used by gclient.commitTransaction to get access to our notes panel. gclient does this so that it can survey any open notes panels to make sure that the contents are updated to the server. This is ugly as sin, but we don't currently put a change listener on the notes panels, so it needs to be done.

This method will often return null if the user hasn't visited the notes panel tab.


refresh

public void refresh()

Refreshes the tab that is showing.

Currently, this only refreshes the general panel. Other panels will generate a nice dialog telling the user to go away.


sendMail

public void sendMail()
Uses the Ganymede server to e-mail a summary of this object to one or more email addresses.


save

public void save()
Saves a summary of this object to disk. Only available if the Ganymede client was run as an application.


encodeObjectToStringBuffer

private java.lang.StringBuffer encodeObjectToStringBuffer(boolean showHistory,
                                                          boolean showTransactions,
                                                          java.util.Date startDate)
Generates a String representation of this object for save() and sendMail().


getWaitImage

public java.awt.Image getWaitImage()

createMenuBar

javax.swing.JMenuBar createMenuBar(boolean editable)

create_general_panel

void create_general_panel()

create_expiration_date_panel

void create_expiration_date_panel()

refresh_expiration_date_panel

void refresh_expiration_date_panel()

create_removal_date_panel

void create_removal_date_panel()

refresh_removal_date_panel

void refresh_removal_date_panel()

create_owner_panel

void create_owner_panel()

updateOwnerPanel

void updateOwnerPanel()

create_history_panel

void create_history_panel()

create_admin_history_panel

void create_admin_history_panel()

create_notes_panel

void create_notes_panel()

create_objects_owned_panel

void create_objects_owned_panel()

create_personae_panel

void create_personae_panel()

addExpirationDatePanel

public void addExpirationDatePanel()
These add the tabs to the framePanel, but they don't create the content The create_ methods create the actual panes, after the pane is selected. If you want to create a panel, call addWhateverPanel, then showWhateverPanel.


addRemovalDatePanel

public void addRemovalDatePanel()

addNotesPanel

public void addNotesPanel()

showTab

public void showTab(int index)

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

stateChanged

public void stateChanged(javax.swing.event.ChangeEvent e)
Specified by:
stateChanged in interface javax.swing.event.ChangeListener

createPanel

public void createPanel(int index)
This checks to see if the panel is created, and creates it if needed.


getgclient

final arlut.csd.ganymede.client.gclient getgclient()

getWindowPanel

final arlut.csd.ganymede.client.windowPanel getWindowPanel()

getObject

final arlut.csd.ganymede.db_object getObject()

setStatus

private final void setStatus(java.lang.String status)

getObjectType

java.lang.String getObjectType()

getObjectLabel

java.lang.String getObjectLabel()

println

private void println(java.lang.String s)
Use this instead of System.out.println, in case we want to direct that stuff somewhere else sometime. Plus, it is easier to type.


showErrorMessage

private void showErrorMessage(java.lang.String message)
Give the gclient an error message.


showErrorMessage

private void showErrorMessage(java.lang.String title,
                              java.lang.String message)

addContainerPanel

public void addContainerPanel(arlut.csd.ganymede.client.containerPanel cp)

removeContainerPanel

public void removeContainerPanel(arlut.csd.ganymede.client.containerPanel cp)

updateContainerPanels

public void updateContainerPanels()

This method is called to force an update on this framePanel. All fields will be refreshed and the choice lists reloaded.


updateContainerPanels

public void updateContainerPanels(arlut.csd.ganymede.Invid invid,
                                  arlut.csd.ganymede.ReturnVal retVal)

This method is called to force an update on this framePanel in accordance with the rescan instructions encoded in retVal. The invid passed is the one we are interested in updating in this method call. If the invid is null, all contained panels will be forced to update. Likewise, if the retVal passed is null, all fields in the container panels will be refreshed.


internalFrameActivated

public void internalFrameActivated(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameActivated in interface javax.swing.event.InternalFrameListener

internalFrameClosed

public void internalFrameClosed(javax.swing.event.InternalFrameEvent event)
When the internalFrame closes, we need to shut down any auxiliary internalFrames associated with fields in any contained container panels.

Specified by:
internalFrameClosed in interface javax.swing.event.InternalFrameListener

internalFrameClosing

public void internalFrameClosing(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameClosing in interface javax.swing.event.InternalFrameListener

internalFrameDeactivated

public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameDeactivated in interface javax.swing.event.InternalFrameListener

internalFrameDeiconified

public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameDeiconified in interface javax.swing.event.InternalFrameListener

internalFrameIconified

public void internalFrameIconified(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameIconified in interface javax.swing.event.InternalFrameListener

internalFrameOpened

public void internalFrameOpened(javax.swing.event.InternalFrameEvent event)
Specified by:
internalFrameOpened in interface javax.swing.event.InternalFrameListener

vetoableChange

public void vetoableChange(java.beans.PropertyChangeEvent pce)
                    throws java.beans.PropertyVetoException

This is a vetoableChangeListener implementation method, and is used to allow the framePanel to intercede in window close attempts for editable objects. We use this intercession to explain to the user what the meaning of closing an edit-object or create-object window is, and to allow them to think again.

Specified by:
vetoableChange in interface java.beans.VetoableChangeListener
java.beans.PropertyVetoException

stopNow

public final void stopNow()

This method is intended to stop any container panels from loading, in the event that the user has pressed the transaction cancel button in the gclient.


isStopped

public final boolean isStopped()

This method may be called by objects of other classes who want to check to see if this framePanel has asserted a stop on all loading activities.


cleanUp

public final void cleanUp()

This method provides a handy way to null out data structures held in relationship to this framePanel, particularly network reference resources.

This method should be called on the Java GUI thread.