Class LayerNameAndFilePathTableCell

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.CellEditor, javax.swing.table.TableCellEditor, javax.swing.table.TableCellRenderer

    class LayerNameAndFilePathTableCell
    extends javax.swing.JPanel
    implements javax.swing.table.TableCellRenderer, javax.swing.table.TableCellEditor
    Display and edit layer name and file path in a JTable. Note: Do not use the same object both as TableCellRenderer and TableCellEditor - this can mess up the current editor component by subsequent calls to the renderer (#12462).
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  LayerNameAndFilePathTableCell.LaunchFileChooserAction  
      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private javax.swing.JButton btnFileChooser  
      private CellEditorSupport cellEditorSupport  
      private static java.awt.Color COLOR_ERROR  
      private static GBC DEFAULT_CELL_STYLE  
      private static java.lang.String ELLIPSIS  
      private java.lang.String extension  
      private javax.swing.JLabel lblFilename  
      private javax.swing.JLabel lblLayerName  
      private JosmTextField tfFilename  
      private java.io.File value  
      • Fields 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCellEditorListener​(javax.swing.event.CellEditorListener l)  
      private java.lang.String addLblFilename​(SaveLayerInfo info)
      Adds filename label to (this) using the given info.
      private java.lang.String addLblLayerName​(SaveLayerInfo info)
      Adds layer name label to (this) using the given info.
      void cancelCellEditing()  
      private static boolean canWrite​(java.io.File f)  
      java.lang.Object getCellEditorValue()  
      java.awt.Component getTableCellEditorComponent​(javax.swing.JTable table, java.lang.Object value, boolean isSelected, int row, int column)  
      java.awt.Component getTableCellRendererComponent​(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column)
      renderer used while not editing the file path
      boolean isCellEditable​(java.util.EventObject anEvent)  
      private java.lang.String makePathFit​(java.lang.String t)
      Makes the given path fit lblFilename, appends ellipsis on the left if it doesn't fit.
      void removeCellEditorListener​(javax.swing.event.CellEditorListener l)  
      boolean shouldSelectCell​(java.util.EventObject anEvent)  
      boolean stopCellEditing()  
      • Methods 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getTableCellRendererComponent

        public java.awt.Component getTableCellRendererComponent​(javax.swing.JTable table,
                                                                java.lang.Object value,
                                                                boolean isSelected,
                                                                boolean hasFocus,
                                                                int row,
                                                                int column)
        renderer used while not editing the file path
        Specified by:
        getTableCellRendererComponent in interface javax.swing.table.TableCellRenderer
      • getTableCellEditorComponent

        public java.awt.Component getTableCellEditorComponent​(javax.swing.JTable table,
                                                              java.lang.Object value,
                                                              boolean isSelected,
                                                              int row,
                                                              int column)
        Specified by:
        getTableCellEditorComponent in interface javax.swing.table.TableCellEditor
      • canWrite

        private static boolean canWrite​(java.io.File f)
      • addLblLayerName

        private java.lang.String addLblLayerName​(SaveLayerInfo info)
        Adds layer name label to (this) using the given info. Returns tooltip that should be added to the panel
        Parameters:
        info - information, user preferences and save/upload states of the layer
        Returns:
        tooltip that should be added to the panel
      • addLblFilename

        private java.lang.String addLblFilename​(SaveLayerInfo info)
        Adds filename label to (this) using the given info. Returns tooltip that should be added to the panel
        Parameters:
        info - information, user preferences and save/upload states of the layer
        Returns:
        tooltip that should be added to the panel
      • makePathFit

        private java.lang.String makePathFit​(java.lang.String t)
        Makes the given path fit lblFilename, appends ellipsis on the left if it doesn't fit. Idea: /home/user/josm → …/user/josm → …/josm; and take the first one that fits
        Parameters:
        t - complete path
        Returns:
        shorter path
      • addCellEditorListener

        public void addCellEditorListener​(javax.swing.event.CellEditorListener l)
        Specified by:
        addCellEditorListener in interface javax.swing.CellEditor
      • cancelCellEditing

        public void cancelCellEditing()
        Specified by:
        cancelCellEditing in interface javax.swing.CellEditor
      • getCellEditorValue

        public java.lang.Object getCellEditorValue()
        Specified by:
        getCellEditorValue in interface javax.swing.CellEditor
      • isCellEditable

        public boolean isCellEditable​(java.util.EventObject anEvent)
        Specified by:
        isCellEditable in interface javax.swing.CellEditor
      • removeCellEditorListener

        public void removeCellEditorListener​(javax.swing.event.CellEditorListener l)
        Specified by:
        removeCellEditorListener in interface javax.swing.CellEditor
      • shouldSelectCell

        public boolean shouldSelectCell​(java.util.EventObject anEvent)
        Specified by:
        shouldSelectCell in interface javax.swing.CellEditor
      • stopCellEditing

        public boolean stopCellEditing()
        Specified by:
        stopCellEditing in interface javax.swing.CellEditor