Class FileDownloader
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
com.github.tadukoo.view.form.components.FileDownloader
- All Implemented Interfaces:
com.github.tadukoo.util.download.ProgressRBCWrapperListener
,ImageObserver
,MenuContainer
,Serializable
,Accessible
public class FileDownloader
extends JPanel
implements com.github.tadukoo.util.download.ProgressRBCWrapperListener
File Downloader is used to give a File Download option dialog to the user for them to be able to download files
and watch the progress of the download(s).
- Version:
- Alpha v.0.3.3
- Author:
- Logan Ferree (Tadukoo)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
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
Modifier and TypeFieldDescriptionprivate final com.github.tadukoo.util.logger.EasyLogger
Thelogger
to use for logging problemsprivate final JProgressBar
The progress bar for all the files to be downloadedprivate final JProgressBar
The progress bar for the current file being downloadedFields inherited from class javax.swing.JComponent
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
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
ConstructorDescriptionFileDownloader
(Component parentComponent, com.github.tadukoo.util.logger.EasyLogger logger, Collection<com.github.tadukoo.util.tuple.Pair<String, String>> fileAddressAndPathPairs) Creates a new File Downloader, which will be an Option Dialog for the user from the given parent component -
Method Summary
Modifier and TypeMethodDescriptionprivate int
getFileSize
(URL url) Attempts to grab the file size for the file at the givenURL
.private void
If the file already exists at the given filepath, nothing happens.private void
loadFiles
(Collection<com.github.tadukoo.util.tuple.Pair<String, String>> fileAddressAndPathPairs) Iterates over the given file address and filepath pairs to download the files as needed and updates the overall progress bar on the overall files progress.void
progressUpdate
(double progress, long bytesSoFar, long expectedSize) This will be called by aProgressReadableByteChannelWrapper
as progress is made with it, so that this listener can handle the progress update tracking as desiredMethods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods inherited from class javax.swing.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, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, 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, 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 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, 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
-
Field Details
-
overallProgressBar
The progress bar for all the files to be downloaded -
singleProgressBar
The progress bar for the current file being downloaded -
logger
private final com.github.tadukoo.util.logger.EasyLogger loggerThelogger
to use for logging problems
-
-
Constructor Details
-
FileDownloader
public FileDownloader(Component parentComponent, com.github.tadukoo.util.logger.EasyLogger logger, Collection<com.github.tadukoo.util.tuple.Pair<String, String>> fileAddressAndPathPairs) Creates a new File Downloader, which will be an Option Dialog for the user from the given parent component- Parameters:
parentComponent
- TheComponent
used to launch this File Downloaderlogger
- Thelogger
to use for logging problemsfileAddressAndPathPairs
- Pairs of file URLs and local filepaths of files to be downloaded
-
-
Method Details
-
progressUpdate
public void progressUpdate(double progress, long bytesSoFar, long expectedSize) This will be called by aProgressReadableByteChannelWrapper
as progress is made with it, so that this listener can handle the progress update tracking as desired- Specified by:
progressUpdate
in interfacecom.github.tadukoo.util.download.ProgressRBCWrapperListener
- Parameters:
progress
- The current progressbytesSoFar
- The amount of bytes read so farexpectedSize
- The expected total amount of bytes to be read
-
getFileSize
Attempts to grab the file size for the file at the givenURL
. If it fails, a warning will be logged, but it will not error out and return -1- Parameters:
url
- TheURL
the file is located at- Returns:
- The size of the file in bytes, or -1 if we fail to retrieve it
-
loadFiles
private void loadFiles(Collection<com.github.tadukoo.util.tuple.Pair<String, String>> fileAddressAndPathPairs) throws IOExceptionIterates over the given file address and filepath pairs to download the files as needed and updates the overall progress bar on the overall files progress.- Parameters:
fileAddressAndPathPairs
- Pairs of file URLs and local filepaths for files to be downloaded- Throws:
IOException
- If anything goes wrong in downloading files
-
loadFile
If the file already exists at the given filepath, nothing happens. Otherwise, we download it from the given address, and progress will be updated by sending this as aProgressRBCWrapperListener
to theProgressReadableByteChannelWrapper
we use- Parameters:
address
- The URL for the file to be downloadedfilepath
- The local filepath for the file- Throws:
IOException
- If anything goes wrong in downloading the file
-