📄 abstractdialogmanager.java
字号:
/* * Copyright (c) 2001 Sun Microsystems, Inc. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following discalimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Sun Microsystems, Inc. for Project JXTA." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" * must not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact Project JXTA at http://www.jxta.org. * * 5. Products derived from this software may not be called "JXTA", * nor may "JXTA" appear in their name, without prior written * permission of Sun. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Project JXTA. For more * information on Project JXTA, please see * <http://www.jxta.org/>. * * This license is based on the BSD license adopted by the Apache Foundation. * * $Id: AbstractDialogManager.java,v 1.3 2007/05/28 22:00:51 nano Exp $ */package net.jxta.myjxta.dialog;import net.jxta.peergroup.PeerGroup;import java.util.ArrayList;import java.util.HashMap;import java.util.List;/** * @author james todd [gonzo at jxta dot org] * @version $Id: AbstractDialogManager.java,v 1.3 2007/05/28 22:00:51 nano Exp $ */abstract class AbstractDialogManager extends DialogManager { /** * The list of registered DialogPipeListeners */ private HashMap<PeerGroup, ArrayList<DialogPipeListener>> listeners = null; public AbstractDialogManager(String name, String type) { super(name, type); } /** * Initialize this DialogManager to work in the indicated * PeerGroup * * @param pg the PeerGroup for which to initialize the DialogManager */ public abstract void initialize(PeerGroup pg); /** * { @inheritDoc } */ public abstract void close(); /** * Add a new DialogPipeListener * * @param pg the PeerGroup in which the DialogPipeListener operates * @param listener the DialogPipeListener to add */ public synchronized void addPipeListener(PeerGroup pg, DialogPipeListener listener) { List<DialogPipeListener> list = getListeners(pg); boolean isEmpty = list == null || list.size() == 0; // add the listener keyed as belonging to the indicated // PeerGroup to the list of listeners addListener(pg, listener); // If there where no listeners for this PeerGroup before // initialize the DialogManager for this PeerGroup if (isEmpty) { initialize(pg); } } /** * Removes a DialogPipeListener previously registered for * the indicated PeerGroup * * @param pg the PeerGroup to which the DialogPipeListener belongs * @param listener the listener to remove */ public void removePipeListener(PeerGroup pg, DialogPipeListener listener) { if (this.listeners != null && this.listeners.containsKey(pg)) { this.listeners.get(pg).remove(listener); } // If the list of listeners is now empty, shut it down. close(); } public void clearPipeListeners(PeerGroup pg) { if (this.listeners != null && this.listeners.containsKey(pg)) { this.listeners.remove(pg); } close(); } protected String getName() { return super.getName(); } protected String getType() { return super.getType(); } /** * Return the list of registered DialogPipeListener for the * indicated PeerGroup * * @param pg the PeerGroup for which to retrieve the * registered DialogPipeListener * @return the list of registered DialogPipeListener for the * indicated PeerGroup */ protected ArrayList<DialogPipeListener> getListeners(PeerGroup pg) { if (this.listeners == null) return null; return this.listeners.get(pg); } /** * Adds a new DialogPipeListener for the indicated PeerGroup * * @param pg the PeerGroup for which to add the DialogPipeListener * @param listener the listener to add */ protected void addListener(PeerGroup pg, DialogPipeListener listener) { // if the HashMap does not exist create it and // if it does not contain an element for pg, create the element if (this.listeners == null || !this.listeners.containsKey(pg)) { if (this.listeners == null) { this.listeners = new HashMap<PeerGroup, ArrayList<DialogPipeListener>>(); } this.listeners.put(pg, new ArrayList<DialogPipeListener>()); } // and add the listener to the HashMap if necessary ArrayList<DialogPipeListener> list = this.listeners.get(pg); if (!list.contains(listener)) { list.add(listener); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -