Class PolicyPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- net.adoptopenjdk.icedteaweb.client.controlpanel.NamedBorderPanel
-
- net.adoptopenjdk.icedteaweb.client.controlpanel.panels.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 classPolicyPanel.LaunchPolicyToolActionImplements the action to be performed when the "Advanced" button is clickedprivate classPolicyPanel.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
-
-
Field Summary
Fields Modifier and Type Field Description private static LoggerLOGprivate PolicyEditor.PolicyEditorWindowpolicyEditor-
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
-
-
Constructor Summary
Constructors Constructor Description PolicyPanel(DeploymentConfiguration config)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.awt.ComponentgetParentComponentOfSource(java.awt.event.ActionEvent event)private static booleanisPolicyToolAvailable()private static voidlaunchPolicyTool(java.awt.Component parentComponent, java.lang.String filePath)Launch the policytool for a specified file pathprivate voidlaunchSimplePolicyEditor(java.lang.String filePath)Launch the simplified PolicyEditor for a specified file path.private static java.lang.StringlocalFilePathFromUrlString(java.lang.String url)Loosely attempt to get the path part of a file URL string.private static voidpolicyToolLaunchHelper(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 voidreflectivePolicyToolLaunch(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
-
-
-
-
Field Detail
-
LOG
private static final Logger LOG
-
policyEditor
private PolicyEditor.PolicyEditorWindow policyEditor
-
-
Constructor Detail
-
PolicyPanel
public PolicyPanel(DeploymentConfiguration config)
-
-
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- aComponentto act as parent to warning dialogs which may appearfilePath- aStringrepresenting 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- aStringrepresenting 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 newThreadto 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- aComponentto act as parent to warning dialogs which may appearfilePath- aStringrepresenting the path to the file to be opened
-
reflectivePolicyToolLaunch
private static void reflectivePolicyToolLaunch(java.lang.String filePath) throws java.lang.ExceptionThis 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- aStringrepresenting 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- theStringrepresenting the URL whose path is desired- Returns:
- a
Stringrepresenting the local filepath of the given file:/ URL
-
getParentComponentOfSource
private java.awt.Component getParentComponentOfSource(java.awt.event.ActionEvent event)
-
-