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 classWhen 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 classListens 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 JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate JMenuprivate JTableprivate ZeroConfDeviceModelprivate JMenuItemprivate javax.jmdns.JmDNSprivate static final org.apache.log4j.Loggerprivate static final Stringprivate static final Stringprivate JMenuItemprivate ZeroConfPreferenceModelprivate final JScrollPaneprivate static final Stringprivate static final Stringprivate static final StringFields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprivate voidconnectTo(javax.jmdns.ServiceInfo info) Starts a receiver to the appender referenced within the ServiceInfoprivate voiddeviceDiscovered(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 voiddeviceRemoved(String name) When a device is removed or disappears we need to remove any JMenu item associated with it.private voiddisconnectFrom(javax.jmdns.ServiceInfo info) private Fileprivate ReceivergetReceiver(javax.jmdns.ServiceInfo info) private voidAttempts to find a JFrame container as a parent,and addse a "Connect to" menuprivate voidinsertToLeftOfHelp(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) booleanisConnectedTo(javax.jmdns.ServiceInfo info) returns true if the serviceInfo record already has a matching connected receiverprivate JMenuItemlocateMatchingMenuItem(String name) Finds the matching JMenuItem based on name, may return null if there is no match.static voidprivate voidprivate voidsave()voidshutdown()Call when the plugin should be stopped.Methods inherited from class GUIPluginSkeleton
getLoggerRepository, isActive, isEquivalent, setActive, setLoggerRepositoryMethods inherited from class JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class 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 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 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, transferFocusUpCycleMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface 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:PluginCall 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
-
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
-
main
-