psmith 2003/08/28 16:55:43 Modified: src/java/org/apache/log4j/chainsaw ReceiversPanel.java Log: * Added support for creating SocketHubReceiver via GUI * Refactored the generic Receiver creation process slightly, added separators between Receivers with different first characters. * Updated some docs Revision Changes Path 1.7 +85 -31 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ReceiversPanel.java Index: ReceiversPanel.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ReceiversPanel.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ReceiversPanel.java 29 Jun 2003 22:54:31 -0000 1.6 +++ ReceiversPanel.java 28 Aug 2003 23:55:42 -0000 1.7 @@ -54,6 +54,8 @@ import org.apache.log4j.chainsaw.icons.ChainsawIcons; import org.apache.log4j.helpers.LogLog; import org.apache.log4j.net.SocketAppender; +import org.apache.log4j.net.SocketHubAppender; +import org.apache.log4j.net.SocketHubReceiver; import org.apache.log4j.net.SocketNodeEventListener; import org.apache.log4j.net.SocketReceiver; import org.apache.log4j.net.UDPAppender; @@ -87,11 +89,15 @@ import java.net.URL; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import javax.swing.AbstractAction; import javax.swing.Action; @@ -147,8 +153,9 @@ private final Runnable updateReceiverTree; ReceiversPanel(final LogUI logui) { - super(new BorderLayout()); + super(); this.logui = logui; + setLayout(new BorderLayout()); setBorder(BorderFactory.createEtchedBorder()); setPreferredSize(new Dimension(250, 400)); @@ -480,7 +487,8 @@ } /** - * + * Sets the state of actions depending on certain conditions (i.e what is + * currently selected etc.) */ private void updateActions() { Object object = getCurrentlySelectedUserObject(); @@ -573,44 +581,34 @@ class NewReceiverPopupMenu extends JPopupMenu { NewReceiverPopupMenu() { try { - Class[] receivers = - new Class[] { SocketReceiver.class, UDPReceiver.class }; - - final Map dialogMap = new HashMap(); - dialogMap.put( - SocketReceiver.class, - new CreateReceiverDialog( - SocketReceiver.class, "SocketReceiver", "Socket Receiver", - new SimplePortBasedReceiverDialogPanel( - SocketReceiver.class, "SocketReceiver", - SocketAppender.DEFAULT_PORT))); - - dialogMap.put( - UDPReceiver.class, - new CreateReceiverDialog( - UDPReceiver.class, "UDPReceiver", "UDP Receiver", - new SimplePortBasedReceiverDialogPanel( - UDPReceiver.class, "UDPReceiver", UDPAppender.DEFAULT_PORT))); - for (int i = 0; i < receivers.length; i++) { - final Class toCreate = receivers[i]; + final List dialogMapEntryList = createSortedDialogMapEntryList(); + String separatorCheck = null; + for (Iterator iter = dialogMapEntryList.iterator(); iter.hasNext();) { + final Map.Entry entry = (Entry) iter.next(); + final Class toCreate = (Class) entry.getKey(); Package thePackage = toCreate.getPackage(); final String name = toCreate.getName().substring(thePackage.getName().length() + 1); + + if(separatorCheck==null) + { + separatorCheck = name.substring(0,1); + }else{ + String current = name.substring(0,1); + if(!current.equals(separatorCheck)) + { + addSeparator(); + separatorCheck = current; + } + } add( new AbstractAction("New " + name + "...") { public void actionPerformed(ActionEvent e) { - if (dialogMap.containsKey(toCreate)) { - JDialog dialog = (JDialog) dialogMap.get(toCreate); + JDialog dialog = (JDialog) entry.getValue(); dialog.pack(); dialog.setLocationRelativeTo(logui); dialog.show(); - } else { - JOptionPane.showMessageDialog( - logui, - "You wanted a " + name - + " but this is not finished yet, sorry."); - } } }); } @@ -631,6 +629,63 @@ throw new RuntimeException(e.getMessage()); } } + + /** + * Creates a Map of Class->CreateReceiverDialog instances + * which are all the Receivers that can be created via the GUI + * @return + * @throws IOException + */ + private List createSortedDialogMapEntryList() throws IOException + { + final Map dialogMap = new HashMap(); + dialogMap.put( + SocketReceiver.class, + new CreateReceiverDialog( + SocketReceiver.class, "SocketReceiver", "Socket Receiver", + new SimplePortBasedReceiverDialogPanel( + SocketReceiver.class, "SocketReceiver", + SocketAppender.DEFAULT_PORT))); + + dialogMap.put( + SocketHubReceiver.class, + new CreateReceiverDialog( + SocketHubReceiver.class, "SocketHubReceiver", "Socket Hub Receiver", + new SimplePortBasedReceiverDialogPanel( + SocketHubReceiver.class, "SocketHubReceiver", + SocketHubAppender.DEFAULT_PORT))); + + dialogMap.put( + UDPReceiver.class, + new CreateReceiverDialog( + UDPReceiver.class, "UDPReceiver", "UDP Receiver", + new SimplePortBasedReceiverDialogPanel( + UDPReceiver.class, "UDPReceiver", UDPAppender.DEFAULT_PORT))); + + List dialogMapEntryList = new ArrayList(); + + for (Iterator iter = dialogMap.entrySet().iterator(); iter.hasNext();) + { + dialogMapEntryList.add(iter.next()); + } + + /** + * Sort so it's in Alpha order by map.entry key + */ + Collections.sort(dialogMapEntryList, new Comparator(){ + + public int compare(Object o1, Object o2) + { + Comparable c1 = ((Class)((Entry) o1).getKey()).getName(); + Comparable c2 = ((Class)((Entry) o2).getKey()).getName(); + + return c1.compareTo(c2); + + } + + }); + return dialogMapEntryList; + } } /** @@ -932,7 +987,6 @@ } }; - okAction.setEnabled(false); okCancelPanel.setOkAction(okAction); entryPanel.addPropertyChangeListener(
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]