Class PolicyPanel

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

    public class PolicyPanel
    extends NamedBorderPanel
    Implements a Policy Settings panel for the itweb-settings control panel. This gives the user information about custom user-level JNLP Policy files, as well as offering a way to launch a policy file editor with the correct file path to the user's personal policy file location presupplied.
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  PolicyPanel.LaunchPolicyToolAction
      Implements the action to be performed when the "Advanced" button is clicked
      private class  PolicyPanel.LaunchSimplePolicyEditorAction  
      • 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 static Logger LOG  
      private PolicyEditor.PolicyEditorWindow policyEditor  
      • 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
      private java.awt.Component getParentComponentOfSource​(java.awt.event.ActionEvent event)  
      private static boolean isPolicyToolAvailable()  
      private static void launchPolicyTool​(java.awt.Component parentComponent, java.lang.String filePath)
      Launch the policytool for a specified file path
      private void launchSimplePolicyEditor​(java.lang.String filePath)
      Launch the simplified PolicyEditor for a specified file path.
      private static java.lang.String localFilePathFromUrlString​(java.lang.String url)
      Loosely attempt to get the path part of a file URL string.
      private static void policyToolLaunchHelper​(java.awt.Component parentComponent, java.lang.String filePath)
      This executes a new process for policytool using ProcessBuilder, with the new process' working directory set to the user's home directory.
      private static void reflectivePolicyToolLaunch​(java.lang.String filePath)
      This is used as a fallback in case launching the policytool by executing a new process fails.
      • 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

      • launchPolicyTool

        private static void launchPolicyTool​(java.awt.Component parentComponent,
                                             java.lang.String filePath)
        Launch the policytool for a specified file path
        Parameters:
        parentComponent - a Component to act as parent to warning dialogs which may appear
        filePath - a String representing the path to the file to be opened
      • launchSimplePolicyEditor

        private void launchSimplePolicyEditor​(java.lang.String filePath)
        Launch the simplified PolicyEditor for a specified file path.
        Parameters:
        filePath - a String representing the path to the file to be opened
      • policyToolLaunchHelper

        private static void policyToolLaunchHelper​(java.awt.Component parentComponent,
                                                   java.lang.String filePath)
        This executes a new process for policytool using ProcessBuilder, with the new process' working directory set to the user's home directory. policytool then attempts to open the provided policy file path, if policytool can be run. ProcessBuilder does some verification to ensure that the built command can be executed - if not, it throws an IOException. In this event, we try our reflective fallback launch. We do this in a new Thread to ensure that the fallback launch does not block the AWT thread, and neither does ProcessBuilder#start() in case it happens to be synchronous on the current system.
        Parameters:
        parentComponent - a Component to act as parent to warning dialogs which may appear
        filePath - a String representing the path to the file to be opened
      • reflectivePolicyToolLaunch

        private static void reflectivePolicyToolLaunch​(java.lang.String filePath)
                                                throws java.lang.Exception
        This is used as a fallback in case launching the policytool by executing a new process fails. This probably happens because we are running on a system where the policytool executable is not on the PATH, or because we are running on a non-POSIX compliant system. We do this reflectively to avoid needing to add PolicyTool as build dependency simply for this small edge case.
        Parameters:
        filePath - a String representing the path of the file to attempt to open
        Throws:
        java.lang.Exception - if any sort of exception occurs during reflective launch of policytool
      • isPolicyToolAvailable

        private static boolean isPolicyToolAvailable()
      • localFilePathFromUrlString

        private static java.lang.String localFilePathFromUrlString​(java.lang.String url)
        Loosely attempt to get the path part of a file URL string. If this fails, simply return back the input. This is only intended to be used for displaying GUI elements such as the CPPolicyTooltip.
        Parameters:
        url - the String representing the URL whose path is desired
        Returns:
        a String representing the local filepath of the given file:/ URL
      • getParentComponentOfSource

        private java.awt.Component getParentComponentOfSource​(java.awt.event.ActionEvent event)