Class ZeroConfPlugin
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.apache.log4j.chainsaw.plugins.GUIPluginSkeleton
org.apache.log4j.chainsaw.zeroconf.ZeroConfPlugin
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,Plugin
,org.apache.log4j.spi.OptionHandler
This plugin is designed to detect specific Zeroconf zones (Rendevouz/Bonjour,
whatever people are calling it) and allow the user to double click on
'devices' to try and connect to them with no configuration needed.
TODO need to handle NON-log4j devices that may be broadcast in the interested zones TODO add the default Zone, and the list of user-specified zones to a preferenceModel
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
When the user double clicks on a row, then the device is connected to, the only exception is when clicking in the check box column for auto connect.private class
Listens out on the JmDNS/ZeroConf network for new devices that appear and adds/removes these device information from the list/model.Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate JMenu
private JTable
private ZeroConfDeviceModel
private JMenuItem
private javax.jmdns.JmDNS
private static final org.apache.log4j.Logger
private static final String
private static final String
private JMenuItem
private ZeroConfPreferenceModel
private final JScrollPane
private static final String
private static final String
private static final String
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
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
private void
connectTo
(javax.jmdns.ServiceInfo info) Starts a receiver to the appender referenced within the ServiceInfoprivate void
deviceDiscovered
(javax.jmdns.ServiceInfo info) When a device is discovered, we create a menu item for it so it can be connected to via that GUI mechanism, and also if the device is one of the auto-connect devices then a background thread is created to connect the device.private void
deviceRemoved
(String name) When a device is removed or disappears we need to remove any JMenu item associated with it.private void
disconnectFrom
(javax.jmdns.ServiceInfo info) private File
private Receiver
getReceiver
(javax.jmdns.ServiceInfo info) private void
Attempts to find a JFrame container as a parent,and addse a "Connect to" menuprivate void
insertToLeftOfHelp
(JMenuBar menuBar, JMenu item) Hack method to locate the JMenu that is the Help menu, and inserts the new menu just to the left of it.(package private) boolean
isConnectedTo
(javax.jmdns.ServiceInfo info) returns true if the serviceInfo record already has a matching connected receiverprivate JMenuItem
locateMatchingMenuItem
(String name) Finds the matching JMenuItem based on name, may return null if there is no match.static void
private void
private void
save()
void
shutdown()
Call when the plugin should be stopped.Methods inherited from class org.apache.log4j.chainsaw.plugins.GUIPluginSkeleton
getLoggerRepository, isActive, isEquivalent, setActive, setLoggerRepository
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
Methods inherited from interface org.apache.log4j.plugins.Plugin
addPropertyChangeListener, addPropertyChangeListener, getName, removePropertyChangeListener, removePropertyChangeListener, setName
-
Field Details
-
LOG
private static final org.apache.log4j.Logger LOG -
discoveredDevices
-
deviceTable
-
scrollPane
-
preferenceModel
-
serviceInfoToReceiveMap
-
connectToMenu
-
helpItem
-
nothingToConnectTo
-
MULTICAST_APPENDER_SERVICE_NAME
- See Also:
-
UDP_APPENDER_SERVICE_NAME
- See Also:
-
XML_SOCKET_APPENDER_SERVICE_NAME
- See Also:
-
TCP_APPENDER_SERVICE_NAME
- See Also:
-
NEW_UDP_APPENDER_SERVICE_NAME
- See Also:
-
jmDNS
private javax.jmdns.JmDNS jmDNS
-
-
Constructor Details
-
ZeroConfPlugin
public ZeroConfPlugin()
-
-
Method Details
-
shutdown
public void shutdown()Description copied from interface:Plugin
Call when the plugin should be stopped. -
save
private void save() -
getPreferenceFileLocation
-
activateOptions
public void activateOptions() -
registerServiceListenersForAppenders
private void registerServiceListenersForAppenders() -
injectMenu
private void injectMenu()Attempts to find a JFrame container as a parent,and addse a "Connect to" menu -
insertToLeftOfHelp
Hack method to locate the JMenu that is the Help menu, and inserts the new menu just to the left of it.- Parameters:
menuBar
-item
-
-
deviceDiscovered
private void deviceDiscovered(javax.jmdns.ServiceInfo info) When a device is discovered, we create a menu item for it so it can be connected to via that GUI mechanism, and also if the device is one of the auto-connect devices then a background thread is created to connect the device.- Parameters:
info
-
-
deviceRemoved
When a device is removed or disappears we need to remove any JMenu item associated with it.- Parameters:
name
-
-
disconnectFrom
private void disconnectFrom(javax.jmdns.ServiceInfo info) -
isConnectedTo
boolean isConnectedTo(javax.jmdns.ServiceInfo info) returns true if the serviceInfo record already has a matching connected receiver- Parameters:
info
-- Returns:
-
connectTo
private void connectTo(javax.jmdns.ServiceInfo info) Starts a receiver to the appender referenced within the ServiceInfo- Parameters:
info
-
-
getReceiver
-
locateMatchingMenuItem
Finds the matching JMenuItem based on name, may return null if there is no match.- Parameters:
name
-- Returns:
-
main
-