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.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final com.github.tadukoo.util.logger.EasyLoggerTheloggerto use for logging problemsprivate final JProgressBarThe progress bar for all the files to be downloadedprivate final JProgressBarThe 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_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionFileDownloader(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 intgetFileSize(URL url) Attempts to grab the file size for the file at the givenURL.private voidIf the file already exists at the given filepath, nothing happens.private voidloadFiles(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.voidprogressUpdate(double progress, long bytesSoFar, long expectedSize) This will be called by aProgressReadableByteChannelWrapperas 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, updateUIMethods 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, updateMethods 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, validateTreeMethods 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 loggerTheloggerto 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- TheComponentused to launch this File Downloaderlogger- Theloggerto 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 aProgressReadableByteChannelWrapperas progress is made with it, so that this listener can handle the progress update tracking as desired- Specified by:
progressUpdatein 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- TheURLthe 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 aProgressRBCWrapperListenerto theProgressReadableByteChannelWrapperwe 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
-