Package org.owasp.webscarab.ui.swing

Source Code of org.owasp.webscarab.ui.swing.UrlTreeTableModelAdapter

/***********************************************************************
*
* $CVSHeader$
*
* This file is part of WebScarab, an Open Web Application Security
* Project utility. For details, please see http://www.owasp.org/
*
* Copyright (c) 2002 - 2004 Rogan Dawes
*
* 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.
*
* Getting Source
* ==============
*
* Source for this application is maintained at Sourceforge.net, a
* repository for free software projects.
*
* For details, please see http://www.sourceforge.net/projects/owasp
*
*/

package org.owasp.webscarab.ui.swing;

import org.owasp.webscarab.model.UrlModel;
import org.owasp.webscarab.model.HttpUrl;

import org.owasp.webscarab.util.swing.treetable.TreeTableModel;
import org.owasp.webscarab.util.swing.ColumnDataModel;
import org.owasp.webscarab.util.swing.ColumnDataListener;
import org.owasp.webscarab.util.swing.ColumnDataEvent;

import java.util.List;
import java.util.ArrayList;

public class UrlTreeTableModelAdapter extends UrlTreeModelAdapter implements TreeTableModel {
   
    private List<ColumnDataModel<HttpUrl>> _columns = new ArrayList<ColumnDataModel<HttpUrl>>();
    private ColumnDataListener<HttpUrl> _columnListener;
   
    public UrlTreeTableModelAdapter(UrlModel model) {
        super(model);
        createListener();
    }
   
    private void createListener() {
        _columnListener = new ColumnDataListener<HttpUrl>() {
            public void dataChanged(ColumnDataEvent<HttpUrl> cde) {
                Object column = cde.getSource();
                int col = _columns.indexOf(column);
                if (col < 0) return;
                HttpUrl key = cde.getKey();
                if (key == null) {
                    fireStructureChanged();
                } else {
                    firePathChanged(urlTreePath(key));
                }
            }
        };
    }
   
    public void addColumn(ColumnDataModel<HttpUrl> column) {
        _columns.add(column);
        column.addColumnDataListener(_columnListener);
        fireStructureChanged();
    }
   
    public void removeColumn(ColumnDataModel<HttpUrl> column) {
        int index = _columns.indexOf(column);
        if (index < 0) return;
        column.removeColumnDataListener(_columnListener);
        _columns.remove(index);
        fireStructureChanged();
    }
   
    //
    //  The TreeTableNode interface.
    //
   
    /**
     * Returns the number of columns.
     */
    public int getColumnCount() {
        return _columns.size()+1;
    }
   
    /**
     * Returns the name for a particular column.
     */
    public String getColumnName(int column) {
        if (column == 0) return "Url";
        return _columns.get(column-1).getColumnName();
    }
   
    /**
     * Returns the class for the particular column.
     */
    public Class<?> getColumnClass(int column) {
        if (column == 0) return TreeTableModel.class;
        return _columns.get(column-1).getColumnClass();
    }
   
    /**
     * Returns the value of the particular column.
     */
    public Object getValueAt(Object node, int column) {
        if (! (node instanceof HttpUrl)) return null;
        HttpUrl url = (HttpUrl) node;
        if (column == 0) return url;
        return _columns.get(column-1).getValue(url);
    }
   
    /** By default, make the column with the Tree in it the only editable one.
     *  Making this column editable causes the JTable to forward mouse
     *  and keyboard events in the Tree column to the underlying JTree.
     */
    public boolean isCellEditable(Object node, int column) {
        return getColumnClass(column) == TreeTableModel.class;
    }
   
    public void setValueAt(Object aValue, Object node, int column) {}
   
}
TOP

Related Classes of org.owasp.webscarab.ui.swing.UrlTreeTableModelAdapter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.