All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.karelherink.jdwpanalyzer.ui.PacketDetailTableModel Maven / Gradle / Ivy

There is a newer version: 1.1
Show newest version
/*
 * The contents of this file are subject to the terms of the Common Development
 * and Distribution License (the License). You may not use this file except in
 * compliance with the License.
 *
 * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
 * or http://www.netbeans.org/cddl.txt.
 *
 * When distributing Covered Code, include this CDDL Header Notice in each file
 * and include the License file at http://www.netbeans.org/cddl.txt.
 * If applicable, add the following below the CDDL Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * The Original Software is NetBeans. The Initial Developer of the Original
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package com.karelherink.jdwpanalyzer.ui;

import com.karelherink.jdwpanalyzer.model.Node;

import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import java.util.ArrayList;


/**
 * @author karel herink
 */
public class PacketDetailTableModel implements TableModel {
	
	private ArrayList tableModelListeners;
	
	private ArrayList descriptions;
	private ArrayList values;
	
	private static final int NUM_COLS = 2;
	
	public PacketDetailTableModel(Node node) {
		this.tableModelListeners = new ArrayList();
		this.initFlatNodeStructure(node);
	}
	
	private void initFlatNodeStructure(Node node) {
		this.descriptions = new ArrayList();
		this.values = new ArrayList();
		this.addToStructure(node);
		this.updateStructureRecursive(node.getChildren());
	}
	
	private void updateStructureRecursive(ArrayList children) {
		if (children == null)
			return;
		
		for (int i = 0; i < children.size(); i++) {
			Node child = (Node) children.get(i);
			this.addToStructure(child);
			this.updateStructureRecursive(child.getChildren());
		}
	}
	
	private void addToStructure(Node node) {
		if (node.getDescriptor() == null && node.getValue() == null)
			return;
		this.descriptions.add(node.getDescriptor());
		this.values.add(node.getValue());
	}
	
	public int getColumnCount() {
		return NUM_COLS;
	}

	public int getRowCount() {
		return this.descriptions.size();
	}

	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return false;
	}

	public Class getColumnClass(int columnIndex) {
		if (columnIndex == 0)
			return Node.Descriptor.class;
		return Object.class;
	}

	public Object getValueAt(int rowIndex, int columnIndex) {
		if (rowIndex < 0 || rowIndex>= this.getRowCount() || columnIndex < 0 || columnIndex >= this.getColumnCount())
			return null;
		
		if (columnIndex == 0)
			return this.descriptions.get(rowIndex);
		
		Node.Value value = (Node.Value) this.values.get(rowIndex);
		return value;
	}

	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		//Not implemented
	}

	public String getColumnName(int columnIndex) {
		return columnIndex == 0 ? "Description" : "Value";
	}

	public void addTableModelListener(TableModelListener l) {
		this.tableModelListeners.add(l);
	}

	public void removeTableModelListener(TableModelListener l) {
		this.tableModelListeners.remove(l);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy