/* * File : Category.java * Created : 09 feb. 2004 * * Azureus - a Java Bittorrent client * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.core3.category; import java.util.List; import org.gudy.azureus2.core3.download.DownloadManager; import org.gudy.azureus2.core3.download.DownloadManagerState; import org.gudy.azureus2.core3.util.IndentWriter; import com.aelitis.azureus.core.tag.Tag; /** A Category for grouping torrents (DownloadManagers) * @author TuxPaper */ public interface Category extends Tag{ /** User created Category */ public static final int TYPE_USER = 0; /** Category which contains all DownloadManagers */ public static final int TYPE_ALL = 1; /** Category which contains DownloadManagers that do not have a category assigned to * them. * * Currently not used. */ public static final int TYPE_UNCATEGORIZED = 2; /** Add a Category Listener * @param l Listener to add */ public void addCategoryListener(CategoryListener l); /** Remove a Category Listener * @param l Listener to remove */ public void removeCategoryListener(CategoryListener l); public boolean hasCategoryListener( CategoryListener l ); /** Retrieve the name of the category. All category names are unique. * @return If type is TYPE_USER, returns name of the category * Otherwise, returns ID in MessageBundle. */ public String getName(); /** Retrieves what type of Category this is * @return TYPE_* constant */ public int getType(); /** Retrieve a list of DownloadManagers for this category * @return DownloadManager List */ public List<DownloadManager> getDownloadManagers(List<DownloadManager> all_download_managers); /** Add a DownloadManager to this category. * * Used by DownloadManager. You should not have to add a DownloadManager object * manually. If you wish to change a DownloadManager's category, use * DownloadManager.setCategory(..) instead. * @param manager DownloadManager object to add to Category */ public void addManager(DownloadManagerState manager); /** Remove a DownloadManager object from this Category. * * Used by DownloadManager. You should not have to add a DownloadManager object * manually. If you wish to change a DownloadManager's category, use * DownloadManager.setCategory(..) instead. * @param manager DownloadManager object to remove from Category */ public void removeManager(DownloadManagerState manager); // Other things like stats, settings, etc? public void setDownloadSpeed( int speed ); public int getDownloadSpeed(); public void setUploadSpeed( int speed ); public int getUploadSpeed(); public static final String AT_AUTO_TRANSCODE_TARGET = "at_att"; public static final String AT_RSS_GEN = "at_rss_gen"; public static final String AT_UPLOAD_PRIORITY = "at_up_pri"; public String getStringAttribute( String name ); public void setStringAttribute( String name, String value ); public boolean getBooleanAttribute( String name ); public void setBooleanAttribute( String name, boolean value ); public int getIntAttribute( String name ); public void setIntAttribute( String name, int value ); public void dump( IndentWriter writer ); }