edu.rice.cs.drjava.ui
Class NewVersionPopup

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by javax.swing.JDialog
                      extended by edu.rice.cs.drjava.ui.NewVersionPopup
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants

public class NewVersionPopup
extends JDialog

Displays whether a new version of DrJava is available.

Version:
$Id: NewVersionPopup.java 5548 2012-04-29 20:07:19Z rcartwright $
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JDialog
JDialog.AccessibleJDialog
 
Nested classes/interfaces inherited from class java.awt.Dialog
Dialog.AccessibleAWTDialog, Dialog.ModalExclusionType, Dialog.ModalityType
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
private  JPanel _bottomPanel
          the panel with the buttons and combobox
private  Action _closeAction
           
private  JButton _closeButton
          the button that closes this window
private  Action _downloadAction
          Close this window, but display the full DrJava Errors window.
private  JButton _downloadButton
          the button that downloads the new version
private  MainFrame _mainFrame
          the parent frame
private   _modeBox
          whether to keep displaying this dialog, and for which releases
private  String[] _msg
          the message for the user
private  String _newestVersionString
          the version string of the new version found, or ""
private  Action _updateAction
          Download new DrJava and update this DrJava, then restart.
private  JButton _updateButton
          the button that updates to the new version
private  JOptionPane _versionPanel
          the version information pane
private static Date BUILD_TIME
          the build time of this version
protected  Runnable1<WindowEvent> CANCEL
          Runnable that calls _cancel.
static Log LOG
           
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPE
 
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
NewVersionPopup(MainFrame parent)
          Creates a window to display whether a new version of DrJava is available.
 
Method Summary
private  void _openFileDownloadPage(String url)
          Opens the specified page.
protected  void abortUpdate()
           
protected  void abortUpdate(boolean close)
           
protected  void abortUpdate(String message)
           
protected  void abortUpdate(String message, boolean close)
           
static boolean checkNewBetaVersion(Box<String> versionStringRef, Box<Date> buildTimeRef)
          Return true if there is a beta release available that's newer than this version.
static boolean checkNewDevVersion(Box<String> versionStringRef, Box<Date> buildTimeRef)
          Return true if there is a development release available that's newer than this version.
static boolean checkNewStableVersion(Box<String> versionStringRef, Box<Date> buildTimeRef)
          Return true if there is a stable release available that's newer than this version.
 boolean checkNewVersion()
          Returns true if there is a new version available that matches the users criterion.
static boolean checkNewWeeklyVersion(Box<String> versionStringRef, Box<Date> buildTimeRef)
          Return true if there is a weekly build available that's newer than this version.
protected  void closeAction()
           
protected  void downloadAction()
           
protected  String getAutomaticDownloadURL()
          Return the automatic download URL.
static Date getBuildTime(URL url)
          Returns the build time for the URL, or null if it could not be read.
static Date getBuildTime(URL url, Box<String> versionStringRef)
          Returns the build time for the URL, or null if it could not be read.
protected  String getManualDownloadURL()
          Return the manual download URL.
protected  String[] getMessage(Box<Boolean> availableRef)
           
 void setVisible(boolean vis)
          Toggle visibility of this frame.
protected  void updateAction()
           
private  void updateText()
           
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setModalityType, setResizable, setTitle, setUndecorated, show, toBack
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, toFront
 
Methods inherited from class java.awt.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, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, 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, isOpaque, 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, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_modeBox

private  _modeBox
whether to keep displaying this dialog, and for which releases


_closeButton

private JButton _closeButton
the button that closes this window


_updateButton

private JButton _updateButton
the button that updates to the new version


_downloadButton

private JButton _downloadButton
the button that downloads the new version


_mainFrame

private MainFrame _mainFrame
the parent frame


_versionPanel

private JOptionPane _versionPanel
the version information pane


_bottomPanel

private JPanel _bottomPanel
the panel with the buttons and combobox


BUILD_TIME

private static Date BUILD_TIME
the build time of this version


_msg

private String[] _msg
the message for the user


_newestVersionString

private String _newestVersionString
the version string of the new version found, or ""


_closeAction

private Action _closeAction

_updateAction

private Action _updateAction
Download new DrJava and update this DrJava, then restart.


_downloadAction

private Action _downloadAction
Close this window, but display the full DrJava Errors window.


LOG

public static final Log LOG

CANCEL

protected final Runnable1<WindowEvent> CANCEL
Runnable that calls _cancel.

Constructor Detail

NewVersionPopup

public NewVersionPopup(MainFrame parent)
Creates a window to display whether a new version of DrJava is available.

Method Detail

updateText

private void updateText()

closeAction

protected void closeAction()

downloadAction

protected void downloadAction()

abortUpdate

protected void abortUpdate()

abortUpdate

protected void abortUpdate(String message)

abortUpdate

protected void abortUpdate(boolean close)

abortUpdate

protected void abortUpdate(String message,
                           boolean close)

updateAction

protected void updateAction()

getAutomaticDownloadURL

protected String getAutomaticDownloadURL()
Return the automatic download URL.


getManualDownloadURL

protected String getManualDownloadURL()
Return the manual download URL.


_openFileDownloadPage

private void _openFileDownloadPage(String url)
Opens the specified page.


checkNewVersion

public boolean checkNewVersion()
Returns true if there is a new version available that matches the users criterion.


getMessage

protected String[] getMessage(Box<Boolean> availableRef)

checkNewStableVersion

public static boolean checkNewStableVersion(Box<String> versionStringRef,
                                            Box<Date> buildTimeRef)
Return true if there is a stable release available that's newer than this version.

Parameters:
versionStringRef - a reference that will be filled with the version string, or null if not desired
buildTimeRef - a reference that will be filled with the build time, or null if not desired
Returns:
true if newer stable version is available

checkNewBetaVersion

public static boolean checkNewBetaVersion(Box<String> versionStringRef,
                                          Box<Date> buildTimeRef)
Return true if there is a beta release available that's newer than this version.

Parameters:
versionStringRef - a reference that will be filled with the version string, or null if not desired
buildTimeRef - a reference that will be filled with the build time, or null if not desired
Returns:
true if newer beta version is available

checkNewDevVersion

public static boolean checkNewDevVersion(Box<String> versionStringRef,
                                         Box<Date> buildTimeRef)
Return true if there is a development release available that's newer than this version.

Parameters:
versionStringRef - a reference that will be filled with the version string, or null if not desired
buildTimeRef - a reference that will be filled with the build time, or null if not desired
Returns:
true if newer development version is available

checkNewWeeklyVersion

public static boolean checkNewWeeklyVersion(Box<String> versionStringRef,
                                            Box<Date> buildTimeRef)
Return true if there is a weekly build available that's newer than this version.

Parameters:
versionStringRef - a reference that will be filled with the version string, or null if not desired
buildTimeRef - a reference that will be filled with the build time, or null if not desired
Returns:
true if newer development version is available

getBuildTime

public static Date getBuildTime(URL url)
Returns the build time for the URL, or null if it could not be read.


getBuildTime

public static Date getBuildTime(URL url,
                                Box<String> versionStringRef)
Returns the build time for the URL, or null if it could not be read.

Parameters:
url - the URL that contains the version string
versionStringRef - a reference that will be filled with the version string, or null if not desired
Returns:
build time, or null if there was an error

setVisible

public void setVisible(boolean vis)
Toggle visibility of this frame. Warning, it behaves like a modal dialog.

Overrides:
setVisible in class Dialog