Package ca.corbett.extensions.ui
Class ExtensionDetailsPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ca.corbett.extensions.ui.ExtensionDetailsPanel
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Accessible
Shows the details of a single AppExtension (by interrogating its AppExtensionInfo).
Can also be used to enable or disable an extension. You shouldn't generally need
to instantiate this panel yourself... much easier to go through ExtensionPanel
or ExtensionDialog.
- Since:
- 2023-11-11
- Author:
- scorbo2
- 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 TypeFieldDescriptionprotected JCheckBoxprotected final AppExtensionprotected final ExtensionManagerprotected FormPanelprotected final List<ExtensionDetailsPanelListener> protected final WindowFields 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
ConstructorsConstructorDescriptionExtensionDetailsPanel(Window owner, ExtensionManager manager, AppExtension extension, boolean isEnabled) Creates a new ExtensionDetailsPanel for the given AppExtension, which can be null - if null, an empty disabled panel will be generated. -
Method Summary
Modifier and TypeMethodDescriptionvoidRegisters a listener that will be informed when our enabled checkbox state is modified.protected StringIf an extension jar exists in a read-only directory, we consider it a "system" extension, and if it is in a readable directory, it is a "user" extension - there is a third class of extensions called "application built-in" which are those provided directly by an application without being externally loaded from a jar file.protected voidprotected FileReturns the source jar file from which this extension was loaded, or null if there isn't one (which will be the case for built-in extensions, which are not loaded from external jar files).protected booleanhasVisibleProps(List<AbstractProperty> configProps) Returns true if the given list of properties is not null, not empty, and has at least one config property that is exposed to the user.protected voidinitComponents(boolean isEnabled) booleanReturns the state of the "enabled" checkbox, which can be manipulated by the user.voidUnregisters the given listener.voidsetExtensionEnabled(boolean enabled) Allows programmatic setting of the "enabled" checkbox.protected voidshowConfigPreview(List<AbstractProperty> configProps) Shows a read-only preview of the given properties list, with default values populated.protected StringtrimString(String input) protected StringtrimString(String input, int LIMIT) Methods 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
-
owner
-
extManager
-
listeners
-
extension
-
formPanel
-
enabledCheckBox
-
-
Constructor Details
-
ExtensionDetailsPanel
public ExtensionDetailsPanel(Window owner, ExtensionManager manager, AppExtension extension, boolean isEnabled) Creates a new ExtensionDetailsPanel for the given AppExtension, which can be null - if null, an empty disabled panel will be generated.- Parameters:
owner- The Window that owns this panel.manager- The ExtensionManager that's managing this extension.extension- Any AppExtension, or null to generate a disabled empty details panel.isEnabled- Whether the given extension is enabled (ignored if extension is null).
-
-
Method Details
-
isExtensionEnabled
public boolean isExtensionEnabled()Returns the state of the "enabled" checkbox, which can be manipulated by the user.- Returns:
- Whether this extension is marked as enabled or not.
-
setExtensionEnabled
public void setExtensionEnabled(boolean enabled) Allows programmatic setting of the "enabled" checkbox. Note that this doesn't actually enable or disable the extension - it just sets the checkbox state in this details panel, which can later be read by isExtensionEnabled().- Parameters:
enabled- The new value for the enabled checkbox.
-
addExtensionDetailsPanelListener
Registers a listener that will be informed when our enabled checkbox state is modified.- Parameters:
listener- An ExtensionDetailsPanelListener
-
removeExtensionDetailsPanelListener
Unregisters the given listener.- Parameters:
listener- An ExtensionDetailsPanelListener
-
initComponents
protected void initComponents(boolean isEnabled) -
fireEnableChangeEvent
protected void fireEnableChangeEvent() -
determineExtensionType
If an extension jar exists in a read-only directory, we consider it a "system" extension, and if it is in a readable directory, it is a "user" extension - there is a third class of extensions called "application built-in" which are those provided directly by an application without being externally loaded from a jar file. Applications can decide how to package and install extensions, and users can decide where to put their own extension jars. This classification, or "extension type" is displayed in the ExtensionDetailsPanel for informational purposes, but it doesn't change the way we interact with those extensions.- Returns:
- A String describing the type of extension: System, User, or Application built-in.
-
getSourceJar
Returns the source jar file from which this extension was loaded, or null if there isn't one (which will be the case for built-in extensions, which are not loaded from external jar files).- Returns:
- A File representing the jar file from which this extension was loaded, or null.
-
trimString
-
trimString
-
hasVisibleProps
Returns true if the given list of properties is not null, not empty, and has at least one config property that is exposed to the user.- Parameters:
configProps- The list of props to check. Can be null.- Returns:
- True if there's at least one user-exposed config property in the list.
-
showConfigPreview
Shows a read-only preview of the given properties list, with default values populated. Note that any form visibility logic will NOT be reflected here, as the code at this level has absolutely no idea what fields should be visible by default (that logic lives at the application level).All props will be shown here read-only, as there's nowhere to save any changes.
- Parameters:
configProps- A list of AbstractProperty instances to show.
-