private void addCovMatrixTestMenuItems(JMenu test) { IndTestType testType = getTestType(); if (testType != IndTestType.FISHER_Z // && testType != IndTestType.CORRELATION_T ) { setTestType(IndTestType.FISHER_Z); } ButtonGroup group = new ButtonGroup(); JCheckBoxMenuItem fishersZ = new JCheckBoxMenuItem("Fisher's Z"); group.add(fishersZ); test.add(fishersZ); // JCheckBoxMenuItem tTest = new JCheckBoxMenuItem("Cramer's T"); // group.add(tTest); // test.add(tTest); testType = getTestType(); if (testType == IndTestType.FISHER_Z) { fishersZ.setSelected(true); } // else if (testType == IndTestType.CORRELATION_T) { // tTest.setSelected(true); // } fishersZ.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setTestType(IndTestType.FISHER_Z); JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), "Using Fisher's Z."); } }); // tTest.addActionListener(new ActionListener() { // public void actionPerformed(ActionEvent e) { // setTestType(IndTestType.CORRELATION_T); // JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), // "Using Cramer's T."); // } // }); }
protected void addSpecialMenus(JMenuBar menuBar) { if (!(getAlgorithmRunner() instanceof IGesRunner)) { JMenu test = new JMenu("Independence"); menuBar.add(test); IndTestMenuItems.addIndependenceTestChoices(test, this); // test.addSeparator(); // // AlgorithmRunner algorithmRunner = getAlgorithmRunner(); // if (algorithmRunner instanceof IndTestProducer) { // IndTestProducer p = (IndTestProducer) algorithmRunner; // IndependenceFactsAction action = // new IndependenceFactsAction(this, p, "Independence Facts..."); // test.add(action); // } } JMenu graph = new JMenu("Graph"); JMenuItem showDags = new JMenuItem("Show DAGs in Pattern"); JMenuItem meekOrient = new JMenuItem("Meek Orientation"); JMenuItem dagInPattern = new JMenuItem("Choose DAG in Pattern"); JMenuItem gesOrient = new JMenuItem("Global Score-based Reorientation"); JMenuItem nextGraph = new JMenuItem("Next Graph"); JMenuItem previousGraph = new JMenuItem("Previous Graph"); graph.add(new GraphPropertiesAction(getWorkbench())); graph.add(new PathsAction(getWorkbench())); // graph.add(new DirectedPathsAction(getWorkbench())); // graph.add(new TreksAction(getWorkbench())); // graph.add(new AllPathsAction(getWorkbench())); // graph.add(new NeighborhoodsAction(getWorkbench())); graph.add(new TriplesAction(getWorkbench(), getAlgorithmRunner())); graph.addSeparator(); graph.add(meekOrient); graph.add(dagInPattern); graph.add(gesOrient); graph.addSeparator(); graph.add(previousGraph); graph.add(nextGraph); graph.addSeparator(); graph.add(showDags); graph.addSeparator(); graph.add(new JMenuItem(new SelectBidirectedAction(getWorkbench()))); graph.add(new JMenuItem(new SelectUndirectedAction(getWorkbench()))); menuBar.add(graph); showDags.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Window owner = (Window) getTopLevelAncestor(); new WatchedProcess(owner) { public void watch() { // Needs to be a pattern search; this isn't checked // before running the algorithm because of allowable // "slop"--e.g. bidirected edges. AlgorithmRunner runner = getAlgorithmRunner(); Graph graph = runner.getResultGraph(); if (graph == null) { JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), "No result gaph."); return; } if (runner instanceof GesRunner) { GraphScorer scorer = ((GesRunner) runner).getGraphScorer(); Graph _graph = ((GesRunner) runner).getTopGraphs().get(getIndex()).getGraph(); ScoredGraphsDisplay display = new ScoredGraphsDisplay(_graph, scorer); GraphWorkbench workbench = getWorkbench(); EditorWindow editorWindow = new EditorWindow(display, "Independence Facts", "Close", false, workbench); DesktopController.getInstance() .addEditorWindow(editorWindow, JLayeredPane.PALETTE_LAYER); editorWindow.setVisible(true); } else { PatternDisplay display = new PatternDisplay(graph); GraphWorkbench workbench = getWorkbench(); EditorWindow editorWindow = new EditorWindow(display, "Independence Facts", "Close", false, workbench); DesktopController.getInstance() .addEditorWindow(editorWindow, JLayeredPane.PALETTE_LAYER); editorWindow.setVisible(true); } } }; } }); meekOrient.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ImpliedOrientation rules = getAlgorithmRunner().getMeekRules(); rules.setKnowledge(getAlgorithmRunner().getParams().getKnowledge()); rules.orientImplied(getGraph()); getGraphHistory().add(getGraph()); getWorkbench().setGraph(getGraph()); firePropertyChange("modelChanged", null, null); } }); dagInPattern.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Graph graph = new EdgeListGraph(getGraph()); // Removing bidirected edges from the pattern before selecting a DAG. // 4 for (Edge edge : graph.getEdges()) { if (Edges.isBidirectedEdge(edge)) { graph.removeEdge(edge); } } PatternToDag search = new PatternToDag(new Pattern(graph)); Graph dag = search.patternToDagMeekRules(); getGraphHistory().add(dag); getWorkbench().setGraph(dag); ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(dag); firePropertyChange("modelChanged", null, null); } }); gesOrient.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { DataModel dataModel = getAlgorithmRunner().getDataModel(); final Graph graph = SearchGraphUtils.reorient(getGraph(), dataModel, getKnowledge()); getGraphHistory().add(graph); getWorkbench().setGraph(graph); firePropertyChange("modelChanged", null, null); } }); nextGraph.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Graph next = getGraphHistory().next(); getWorkbench().setGraph(next); ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(next); firePropertyChange("modelChanged", null, null); } }); previousGraph.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Graph previous = getGraphHistory().previous(); getWorkbench().setGraph(previous); ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(previous); firePropertyChange("modelChanged", null, null); } }); menuBar.add(new LayoutMenu(this)); }