Package edu.brown.gui.designer

Source Code of edu.brown.gui.designer.EdgeInfoPanel

package edu.brown.gui.designer;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.AbstractTableModel;

import org.voltdb.catalog.CatalogType;

import edu.brown.catalog.CatalogUtil;
import edu.brown.designer.AccessGraph;
import edu.brown.designer.DesignerEdge;
import edu.brown.designer.DesignerVertex;
import edu.brown.graphs.IGraph;
import edu.brown.gui.AbstractInfoPanel;
import edu.brown.gui.AbstractViewer;
import edu.brown.gui.DesignerVisualization;
import edu.brown.gui.common.GraphVisualizationPanel;
import edu.brown.utils.PredicatePairs;
import edu.brown.utils.StringUtil;
import edu.uci.ics.jung.graph.util.EdgeType;

public class EdgeInfoPanel extends AbstractInfoPanel<DesignerEdge> {
    private static final long serialVersionUID = 1L;
   
    protected final DesignerVisualization parent;
    protected JLabel idLabel;
    protected JLabel sourceVertexLabel;
    protected JLabel destVertexLabel;
    protected JPanel attributesPanel;
    protected Map<String, JLabel> attributeLabels = new HashMap<String, JLabel>();
    protected JPanel columnSetPanel;
    protected JTable columnSetTable;
   
    public EdgeInfoPanel(DesignerVisualization parent) {
        super();
        this.parent = parent;
    }
   
    protected void init() {
        this.setLayout(new BorderLayout());
        JPanel panel = new JPanel();
        this.add(panel, BorderLayout.NORTH);
    }
   
    public void update(DesignerEdge edge) {
        this.setEnabled(true);
        this.element = edge;
       
        GraphVisualizationPanel<DesignerVertex, DesignerEdge> visualizer = this.parent.getCurrentVisualizer();
        IGraph<DesignerVertex, DesignerEdge> graph = (IGraph<DesignerVertex, DesignerEdge>)visualizer.getGraph();
        DesignerVertex source = null;
        DesignerVertex dest = null;
        if (graph.getEdgeType(edge) == EdgeType.DIRECTED) {
            source = graph.getSource(edge);
            dest = graph.getDest(edge);
        } else {
            ArrayList<DesignerVertex> vertices = new ArrayList<DesignerVertex>(graph.getIncidentVertices(edge));
            source = vertices.get(0);
            dest = vertices.get(1);
        }
       
        //
        // Reinitialize Edge Information
        //
        JPanel panel = new JPanel();
        panel.setLayout(new GridBagLayout());
        JLabel label = null;
       
        GridBagConstraints c = AbstractViewer.getConstraints();

        c.gridx = 0;
        c.gridy = 0;
        label = new JLabel("ID:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);

        c.gridx = 1;
        this.idLabel = new JLabel(source != null ? Integer.toString(edge.hashCode()) : "null");
        this.idLabel.setFont(AbstractViewer.value_font);
        panel.add(this.idLabel, c);
       
        c.gridx = 0;
        c.gridy++;
        label = new JLabel("Source:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);

        c.gridx = 1;
        this.sourceVertexLabel = new JLabel(source != null ? source.toString() : "null");
        this.sourceVertexLabel.setFont(AbstractViewer.value_font);
        panel.add(this.sourceVertexLabel, c);
       
        c.gridx = 0;
        c.gridy++;
        label = new JLabel("Destination:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);
       
        c.gridx = 1;
        this.destVertexLabel = new JLabel(dest != null ? dest.toString() : "null");
        this.destVertexLabel.setFont(AbstractViewer.value_font);
        panel.add(this.destVertexLabel, c);

        /*
        c.gridx = 0;
        c.gridy++;
        c.gridwidth = 2;
        c.fill = GridBagConstraints.BOTH;
        this.columnSetPanel = new JPanel(new BorderLayout());
        panel.add(this.columnSetPanel, c);
         */

        //
        // Attributes
        //
        c.gridwidth = 1;
        c.fill = GridBagConstraints.NONE;
        Set<String> attributes = edge.getAttributes();
        if (attributes != null) {
            for (String attr : attributes) {
                if (attr.equals(AccessGraph.EdgeAttributes.COLUMNSET.name())) continue;
   
                c.gridx = 0;
                c.gridy++;
                label = new JLabel(StringUtil.title(attr) + ":");
                label.setFont(AbstractViewer.key_font);
                panel.add(label, c);
               
                c.gridx = 1;
                Object value = edge.getAttribute(attr);
                String text = null;
                if (value instanceof CatalogType) {
                    text = ((CatalogType)value).getName();
                } else {
                    text = value.toString();
                }
                label = new JLabel(text);
                label.setFont(AbstractViewer.value_font);
                panel.add(label, c);
            } // FOR
        }
       
        //
        // ColumnSet
        //
        JPanel columnSetPanel = new JPanel(new BorderLayout());
        if (edge.hasAttribute(AccessGraph.EdgeAttributes.COLUMNSET.name())) {
            PredicatePairs cset = (PredicatePairs)edge.getAttribute(AccessGraph.EdgeAttributes.COLUMNSET.name());
           
            this.columnSetTable = new JTable(new ColumnSetTableModel(cset));
            this.columnSetTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            this.columnSetTable.setFillsViewportHeight(true);
            this.columnSetTable.setDragEnabled(false);
            this.columnSetTable.setColumnSelectionAllowed(false);
            this.columnSetTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
            this.columnSetTable.setFont(AbstractViewer.value_font);
           
            //Set the column widths
            /*
            TableColumn column = null;
            column = this.columnSetTable.getColumnModel().getColumn(0);
            column.setPreferredWidth((int)Math.round(this.parent.WINDOW_LEFT_SIZE / 2.25));
            column = this.columnSetTable.getColumnModel().getColumn(1);
            column.setPreferredWidth((int)Math.round(this.parent.WINDOW_LEFT_SIZE / 2.25));
            */
           
            JScrollPane scrollPane = new JScrollPane(this.columnSetTable);
            //scrollPane.setMaximumSize(this.columnSetTable.getPreferredScrollableViewportSize());
            scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            columnSetPanel.add(scrollPane, BorderLayout.CENTER);
        } // COLUMNSET
       
        //this.columnSetPanel.removeAll();
        //this.columnSetPanel.add(scrollPane, BorderLayout.CENTER);
        //this.columnSetPanel.revalidate();
       
        this.removeAll();
        this.add(panel, BorderLayout.NORTH);
        this.add(columnSetPanel, BorderLayout.CENTER);
        this.revalidate();
    }
   
    /**
     *
     * @author pavlo
     *
     */
    protected class ColumnSetTableModel extends AbstractTableModel {
        private static final long serialVersionUID = 6296162033763655458L;
        protected String columns[] = { "From", "To" };
        protected PredicatePairs cset = null;
       
        public ColumnSetTableModel(PredicatePairs cset) {
            this.cset = cset;
        }
       
        public String getColumnName(int col) { return (this.columns[col]); }
        public int getColumnCount() { return (this.columns.length); }
        public int getRowCount() { return (this.cset != null ? this.cset.size() : 0); }
        public Object getValueAt(int row, int col) {
            String ret = null;
            if (this.cset != null) {
                // FIXME
                //col = (col == 1 ? 0 : 1);
                CatalogType item = (CatalogType)this.cset.get(row).get(col);
                ret = CatalogUtil.getDisplayName(item, true);
            }
            return (ret);
        }
        public boolean isCellEditable(int row, int col) {
            return (false);
        }
        public Class<?> getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
    };
}
TOP

Related Classes of edu.brown.gui.designer.EdgeInfoPanel

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.