Search in sources :

Example 96 with Pair

use of catdata.Pair in project fql by CategoricalData.

the class Transform method view.

@SuppressWarnings("unchecked")
public JPanel view(String src_n, String dst_n) {
    List<JPanel> panels = new LinkedList<>();
    LinkedList<String> sorted = new LinkedList<>(data.keySet());
    sorted.sort(String::compareTo);
    for (String k : sorted) {
        Set<Pair<Object, Object>> xxx = data.get(k);
        List<Pair<Object, Object>> table = new LinkedList<>(xxx);
        Object[][] arr = new Object[table.size()][2];
        int i = 0;
        for (Pair<Object, Object> p : table) {
            arr[i][0] = p.first;
            arr[i][1] = p.second;
            i++;
        }
        @SuppressWarnings("serial") JTable t = new JTable(arr, new Object[] { src_n, dst_n }) {

            @Override
            public Dimension getPreferredScrollableViewportSize() {
                Dimension d = getPreferredSize();
                return new Dimension(d.width, d.height);
            }
        };
        // //t.setRowSelectionAllowed(false);
        // t.setColumnSelectionAllowed(false);
        // MouseListener[] listeners = t.getMouseListeners();
        // for (MouseListener l : listeners) {
        // t.removeMouseListener(l);
        // }
        TableRowSorter<?> sorter = new MyTableRowSorter(t.getModel());
        t.setRowSorter(sorter);
        sorter.allRowsChanged();
        sorter.toggleSortOrder(0);
        t.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
        JPanel p = new JPanel(new GridLayout(1, 1));
        p.add(new JScrollPane(t));
        p.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2), k + "  (" + xxx.size() + " rows)"));
        panels.add(p);
    // p.setPreferredSize(new Dimension(60, 60));
    }
    /*int x = (int) Math.ceil(Math.sqrt(panels.size()));
		if (x == 0) {
			return new JPanel();
		}
		JPanel panel = new JPanel(new GridLayout(x, x));
		for (JPanel p : panels) {
			panel.add(p);
		}
		panel.setBorder(BorderFactory.createEtchedBorder()); */
    return FqlUtil.makeGrid(((List<JComponent>) ((Object) panels)));
}
Also used : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) Dimension(java.awt.Dimension) LinkedList(java.util.LinkedList) Paint(java.awt.Paint) GridLayout(java.awt.GridLayout) JTable(javax.swing.JTable) LinkedList(java.util.LinkedList) List(java.util.List) Pair(catdata.Pair)

Example 97 with Pair

use of catdata.Pair in project fql by CategoricalData.

the class CategoryOfElements method dot.

private static JPanel dot(String name, @SuppressWarnings("unused") Instance inst, Graph<Pair<Node, Object>, Pair<Path, Integer>> sgv, Map<Pair<Node, Object>, Map<Attribute<Node>, Object>> map0) {
    String str = "";
    int i = 0;
    Map<Pair<Node, Object>, Integer> map = new HashMap<>();
    for (Pair<Node, Object> p : sgv.getVertices()) {
        String s = p.toString() + map0.get(p);
        s.replace("\"", "\\\"");
        // a [label="Foo"];
        map.put(p, i);
        str += i + " [label=\"" + s + "\"];\n";
        i++;
    }
    for (Pair<Path, Integer> p : sgv.getEdges()) {
        Pair<Node, Object> src = sgv.getSource(p);
        Pair<Node, Object> dst = sgv.getDest(p);
        int src_id = map.get(src);
        int dst_id = map.get(dst);
        str += src_id + " -> " + dst_id + " [label=\"" + p.first + "\"];\n";
    }
    str = "digraph " + name + " {\n" + str.trim() + "\n}";
    JPanel p = new JPanel(new GridLayout(1, 1));
    JTextArea area = new JTextArea(str);
    JScrollPane jsp = new JScrollPane(area);
    p.add(jsp);
    return p;
}
Also used : Path(catdata.fql.decl.Path) JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) JTextArea(javax.swing.JTextArea) HashMap(java.util.HashMap) Node(catdata.fql.decl.Node) Paint(java.awt.Paint) GridLayout(java.awt.GridLayout) Pair(catdata.Pair)

Example 98 with Pair

use of catdata.Pair in project fql by CategoricalData.

the class CategoryOfElements method makePanel.

public static Pair<JPanel, JPanel> makePanel(String name, Instance i, Color c) {
    try {
        JPanel ret;
        JPanel ret2;
        Pair<Graph<Pair<Node, Object>, Pair<Path, Integer>>, HashMap<Pair<Node, Object>, Map<Attribute<Node>, Object>>> g = build(i);
        ret = g.first.getVertexCount() == 0 ? new JPanel() : doView(c, i, g.first, g.second);
        ret2 = dot(name, i, g.first, g.second);
        return new Pair<>(ret, ret2);
    } catch (FQLException e) {
        JPanel p = new JPanel(new GridLayout(1, 1));
        JTextArea a = new JTextArea(e.getMessage());
        p.add(new JScrollPane(a));
        return new Pair<>(p, p);
    }
}
Also used : Path(catdata.fql.decl.Path) JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) JTextArea(javax.swing.JTextArea) HashMap(java.util.HashMap) Attribute(catdata.fql.decl.Attribute) Node(catdata.fql.decl.Node) FQLException(catdata.fql.FQLException) GridLayout(java.awt.GridLayout) Graph(edu.uci.ics.jung.graph.Graph) Pair(catdata.Pair)

Example 99 with Pair

use of catdata.Pair in project fql by CategoricalData.

the class CategoryOfElements method doView.

private static JPanel doView(Color clr, @SuppressWarnings("unused") Instance inst, Graph<Pair<Node, Object>, Pair<Path, Integer>> sgv, Map<Pair<Node, Object>, Map<Attribute<Node>, Object>> map0) {
    JPanel cards = new JPanel(new CardLayout());
    Layout<Pair<Node, Object>, Pair<Path, Integer>> layout = new FRLayout<>(sgv);
    layout.setSize(new Dimension(600, 400));
    VisualizationViewer<Pair<Node, Object>, Pair<Path, Integer>> vv = new VisualizationViewer<>(layout);
    Function<Pair<Node, Object>, Paint> vertexPaint = (Pair<Node, Object> i) -> clr;
    DefaultModalGraphMouse<String, String> gm = new DefaultModalGraphMouse<>();
    gm.setMode(Mode.TRANSFORMING);
    vv.setGraphMouse(gm);
    gm.setMode(Mode.PICKING);
    vv.getRenderContext().setVertexLabelRenderer(new MyVertexT(cards));
    vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
    vv.getRenderContext().setEdgeLabelTransformer((Pair<Path, Integer> t) -> t.first.toString());
    vv.getRenderContext().setVertexLabelTransformer((Pair<Node, Object> t) -> t.second.toString());
    JPanel ret = new JPanel(new GridLayout(1, 1));
    JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    for (Pair<Node, Object> n : sgv.getVertices()) {
        Map<Attribute<Node>, Object> s = map0.get(n);
        Object[] columnNames = new Object[s.keySet().size()];
        Object[][] rowData = new Object[1][s.keySet().size()];
        int i = 0;
        for (Attribute<Node> a : s.keySet()) {
            columnNames[i] = a.name;
            rowData[0][i] = s.get(a);
            i++;
        }
        JPanel p = new JPanel(new GridLayout(1, 1));
        JTable table = new JTable(rowData, columnNames);
        JScrollPane jsp = new JScrollPane(table);
        p.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), "Attributes for " + n.second));
        p.add(jsp);
        cards.add(p, n.second.toString());
    }
    cards.add(new JPanel(), "blank");
    CardLayout cl = (CardLayout) (cards.getLayout());
    cl.show(cards, "blank");
    pane.add(new GraphZoomScrollPane(vv));
    pane.add(cards);
    pane.setResizeWeight(.8d);
    ret.add(pane);
    return ret;
}
Also used : JPanel(javax.swing.JPanel) Attribute(catdata.fql.decl.Attribute) FRLayout(edu.uci.ics.jung.algorithms.layout.FRLayout) Node(catdata.fql.decl.Node) GridLayout(java.awt.GridLayout) VisualizationViewer(edu.uci.ics.jung.visualization.VisualizationViewer) Pair(catdata.Pair) JScrollPane(javax.swing.JScrollPane) CardLayout(java.awt.CardLayout) DefaultModalGraphMouse(edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse) GraphZoomScrollPane(edu.uci.ics.jung.visualization.GraphZoomScrollPane) Dimension(java.awt.Dimension) Paint(java.awt.Paint) Paint(java.awt.Paint) JTable(javax.swing.JTable) JSplitPane(javax.swing.JSplitPane)

Example 100 with Pair

use of catdata.Pair in project fql by CategoricalData.

the class FqlDisplay method doView.

@SuppressWarnings({ "unchecked" })
private JComponent doView(Graph<String, Object> sgv) {
    try {
        Class<?> c = Class.forName(FqlOptions.layout_prefix + DefunctGlobalOptions.debug.fql.instFlow_graph);
        Constructor<?> x = c.getConstructor(Graph.class);
        Layout<String, Object> layout = (Layout<String, Object>) x.newInstance(sgv);
        layout.setSize(new Dimension(600, 540));
        VisualizationViewer<String, Object> vv = new VisualizationViewer<>(layout);
        Function<String, Paint> vertexPaint = prog.nmap::get;
        DefaultModalGraphMouse<String, String> gm = new DefaultModalGraphMouse<>();
        gm.setMode(Mode.TRANSFORMING);
        vv.setGraphMouse(gm);
        gm.setMode(Mode.PICKING);
        vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
        vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
        vv.getRenderContext().setEdgeLabelTransformer((Object arg0) -> ((Pair<?, ?>) arg0).second.toString());
        vv.getPickedVertexState().addItemListener((ItemEvent e) -> {
            if (e.getStateChange() != ItemEvent.SELECTED) {
                return;
            }
            vv.getPickedEdgeState().clear();
            String str = ((String) e.getItem());
            yyy.setSelectedValue(indices.get(str), true);
        });
        vv.getPickedEdgeState().addItemListener((ItemEvent e) -> {
            if (e.getStateChange() != ItemEvent.SELECTED) {
                return;
            }
            vv.getPickedVertexState().clear();
            Object o = ((Pair<?, ?>) e.getItem()).second;
            handleInstanceFlowEdge(o);
        });
        vv.getRenderContext().setLabelOffset(20);
        GraphZoomScrollPane zzz = new GraphZoomScrollPane(vv);
        JPanel ret = new JPanel(new GridLayout(1, 1));
        ret.add(zzz);
        ret.setBorder(BorderFactory.createEtchedBorder());
        return ret;
    } catch (Throwable cnf) {
        cnf.printStackTrace();
        throw new RuntimeException();
    }
}
Also used : JPanel(javax.swing.JPanel) ItemEvent(java.awt.event.ItemEvent) DefaultModalGraphMouse(edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse) GraphZoomScrollPane(edu.uci.ics.jung.visualization.GraphZoomScrollPane) Dimension(java.awt.Dimension) Paint(java.awt.Paint) ToStringLabeller(edu.uci.ics.jung.visualization.decorators.ToStringLabeller) GridLayout(java.awt.GridLayout) CardLayout(java.awt.CardLayout) GridLayout(java.awt.GridLayout) Layout(edu.uci.ics.jung.algorithms.layout.Layout) VisualizationViewer(edu.uci.ics.jung.visualization.VisualizationViewer) Pair(catdata.Pair)

Aggregations

Pair (catdata.Pair)305 LinkedList (java.util.LinkedList)169 HashMap (java.util.HashMap)144 List (java.util.List)127 HashSet (java.util.HashSet)101 Triple (catdata.Triple)98 Map (java.util.Map)94 LinkedHashMap (java.util.LinkedHashMap)82 Set (java.util.Set)70 Tuple3 (org.jparsec.functors.Tuple3)46 Node (catdata.fql.decl.Node)38 JPanel (javax.swing.JPanel)37 GridLayout (java.awt.GridLayout)32 FQLException (catdata.fql.FQLException)31 Paint (java.awt.Paint)29 Chc (catdata.Chc)28 Util (catdata.Util)27 En (catdata.aql.exp.SchExpRaw.En)26 Tuple5 (org.jparsec.functors.Tuple5)26 Ty (catdata.aql.exp.TyExpRaw.Ty)25