/*
* RSSFeed - Azureus2 Plugin
*
* 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, or (at your option) any later version.
*
* 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.
*
* 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.kmallan.azureus.rssfeed;
//import org.eclipse.swt.custom.*;
//import org.eclipse.swt.graphics.Color;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.*;
//
//import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import java.util.*;
public class TreeViewManager {
public List allGroups;
private Map allItems;
// private View view = null;
public TreeViewManager() { //View view) {
// this.view = view;
this.allGroups = new ArrayList();
this.allItems = new HashMap();
}
public void addGroup(ListGroup listBeans) {
allGroups.add(listBeans);
}
public ListTreeItem getItem(UrlBean urlBean) {
ListTreeItem item = (ListTreeItem)allItems.get(urlBean);
if(item == null) //|| item.isDisposed()) item = createFeedItem(urlBean);
item = createFeedItem(urlBean);
return item;
}
public ListTreeItem getBackLogItem(UrlBean urlBean) {
ListTreeItem parent = getItem(urlBean);
ListTreeItem item = parent.getBackLogItem();
if(item == null) //|| item.isDisposed()) item = createBackLogItem(urlBean);
item = createBackLogItem(urlBean);
return item;
}
public ListTreeItem getItem(ListBean listBean) {
ListTreeItem item = (ListTreeItem)allItems.get(listBean);
if(item == null) Plugin.debugOut("got request for nonexisting treeitem: " + listBean);
return item;
}
public void addListBean(final ListBean listBean, final UrlBean urlBean, final boolean addToBackLog) {
// if(view.isOpen() && view.display != null && !view.display.isDisposed())
// view.display.asyncExec(new Runnable() {
// public void run() {
// try {
// if(view.listTable == null || view.listTable.isDisposed()) return;
ListTreeItem listMainItem = addToBackLog?getBackLogItem(urlBean):getItem(urlBean);
createItem(listMainItem, listBean);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// });
}
public void remove(final ListGroup listBeans) {
// if(view.isOpen() && view.display != null && !view.display.isDisposed())
// view.display.asyncExec(new Runnable() {
// public void run() {
// if(view.listTable == null || view.listTable.isDisposed()) return;
ListTreeItem item = (ListTreeItem)allItems.get(listBeans.getUrl());
if(item != null) {
allItems.remove(item.getBean());
// item.dispose();
}
// }
// });
allGroups.remove(listBeans);
}
public void clearGroup(final ListGroup listBeans) {
// if(view.isOpen() && view.display != null && !view.display.isDisposed())
// view.display.asyncExec(new Runnable() {
// public void run() {
// if(view.listTable == null || view.listTable.isDisposed()) return;
getItem(listBeans.getUrl()).removeAll(allItems);
// }
// });
}
private ListTreeItem createFeedItem(UrlBean urlBean) {
// ListTreeItem newItem = new ListTreeItem(view);
ListTreeItem newItem = new ListTreeItem();
newItem.setBean(urlBean);
allItems.put(urlBean, newItem);
return newItem;
}
private ListTreeItem createBackLogItem(UrlBean urlBean) {
ListTreeItem parent = getItem(urlBean);
// ListTreeItem newItem = new ListTreeItem(parent, view, true);
ListTreeItem newItem = new ListTreeItem(parent, true);
newItem.setBean(urlBean);
return newItem;
}
private ListTreeItem createItem(ListTreeItem parent, ListBean listBean) {
// ListTreeItem newItem = new ListTreeItem(parent, view);
ListTreeItem newItem = new ListTreeItem(parent);
newItem.setBean(listBean);
allItems.put(listBean, newItem);
if(parent.isBackLog()) parent.update();
return newItem;
}
public void display() {
ListGroup listGroup;
ListBean listBean;
ListTreeItem listMainItem, listBackLogItem;
List backLog;
// view.listTable.setRedraw(false);
for(Iterator ig = allGroups.iterator(); ig.hasNext(); ) {
listGroup = (ListGroup)ig.next();
if(listGroup == null || listGroup.getUrl() == null) { // todo getUrl().isDestroyed()?
remove(listGroup);
} else {
listMainItem = createFeedItem(listGroup.getUrl());
for(int i = 0; i < listGroup.size(); i++) {
listBean = (ListBean)listGroup.get(i);
if(listBean != null) createItem(listMainItem, listBean);
}
backLog = listGroup.getUrl().getBackLog();
if(!backLog.isEmpty()) {
listBackLogItem = createBackLogItem(listGroup.getUrl());
for(Iterator iter = backLog.iterator(); iter.hasNext(); ) {
listBean = (ListBean)iter.next();
if(listBean != null) createItem(listBackLogItem, listBean);
}
}
}
}
// view.listTable.setRedraw(true);
}
// private void setExpandAll(TableTreeItem[] items, boolean expanded) {
// for(int i = 0; i < items.length; i++) {
// items[i].setExpanded(expanded);
// if(items[i].getItemCount() > 0) setExpandAll(items[i].getItems(), expanded);
// }
// }
//
// public void expandAll() {
// view.listTable.setRedraw(false);
// setExpandAll(view.listTable.getItems(), true);
// view.listTable.setRedraw(true);
// }
//
// public void collapseAll() {
// view.listTable.setRedraw(false);
// setExpandAll(view.listTable.getItems(), false);
// view.listTable.setRedraw(true);
// }
}