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

edu.cmu.tetradapp.workbench.LayoutMenu Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
// For information as to what this class does, see the Javadoc, below.       //
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,       //
// 2007, 2008, 2009, 2010, 2014, 2015, 2022 by Peter Spirtes, Richard        //
// Scheines, Joseph Ramsey, and Clark Glymour.                               //
//                                                                           //
// 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 //
///////////////////////////////////////////////////////////////////////////////

package edu.cmu.tetradapp.workbench;

import edu.cmu.tetrad.search.utils.GraphSearchUtils;
import edu.cmu.tetradapp.util.CopyLayoutAction;
import edu.cmu.tetradapp.util.LayoutEditable;
import edu.cmu.tetradapp.util.PasteLayoutAction;

import javax.swing.*;

/**
 * Builds a menu for layout operations on graphs. Interacts with classes that implement the LayoutEditable interface.
 *
 * @author josephramsey
 * @version $Id: $Id
 */
public class LayoutMenu extends JMenu {

    /**
     * The layout editable object.
     */
    private final LayoutEditable layoutEditable;

    /**
     * The copy layout action.
     */
    private final CopyLayoutAction copyLayoutAction;

    /**
     * 

Constructor for LayoutMenu.

* * @param layoutEditable a {@link edu.cmu.tetradapp.util.LayoutEditable} object */ public LayoutMenu(LayoutEditable layoutEditable) { super("Layout"); this.layoutEditable = layoutEditable; if (layoutEditable.getGraph().isTimeLagModel()) { JMenuItem topToBottom = new JMenuItem("Top to bottom"); add(topToBottom); topToBottom.addActionListener(e -> { LayoutUtils.topToBottomLayout(getLayoutEditable()); // Copy the laid out graph to the clipboard. getCopyLayoutAction().actionPerformed(null); }); JMenuItem leftToRight = new JMenuItem("Left to right"); add(leftToRight); leftToRight.addActionListener(e -> { LayoutUtils.leftToRightLayout(getLayoutEditable()); // Copy the laid out graph to the clipboard. getCopyLayoutAction().actionPerformed(null); }); JMenuItem bottomToTop = new JMenuItem("Bottom to top"); add(bottomToTop); bottomToTop.addActionListener(e -> { LayoutUtils.bottomToTopLayout(getLayoutEditable()); // Copy the laid out graph to the clipboard. getCopyLayoutAction().actionPerformed(null); }); JMenuItem rightToLeft = new JMenuItem("Right to left"); add(rightToLeft); rightToLeft.addActionListener(e -> { LayoutUtils.rightToLeftLayout(getLayoutEditable()); // Copy the laid out graph to the clipboard. getCopyLayoutAction().actionPerformed(null); }); JMenuItem likeLag0 = new JMenuItem("Copy lag 0"); add(likeLag0); likeLag0.addActionListener(e -> { if (LayoutUtils.getLayout() == LayoutUtils.Layout.topToBottom || LayoutUtils.getLayout() == LayoutUtils.Layout.lag0TopToBottom) { LayoutUtils.copyLag0LayoutTopToBottom(LayoutMenu.this.getLayoutEditable()); } else if (LayoutUtils.getLayout() == LayoutUtils.Layout.bottomToTop || LayoutUtils.getLayout() == LayoutUtils.Layout.lag0BottomToTop) { LayoutUtils.copyLag0LayoutBottomToTop(LayoutMenu.this.getLayoutEditable()); } else if (LayoutUtils.getLayout() == LayoutUtils.Layout.leftToRight || LayoutUtils.getLayout() == LayoutUtils.Layout.lag0LeftToRight) { LayoutUtils.copyLag0LayoutLeftToRight(LayoutMenu.this.getLayoutEditable()); } else if (LayoutUtils.getLayout() == LayoutUtils.Layout.rightToLeft || LayoutUtils.getLayout() == LayoutUtils.Layout.lag0RightToLeft) { LayoutUtils.copyLag0LayoutRightToLeft(LayoutMenu.this.getLayoutEditable()); } // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); this.addSeparator(); } JMenuItem circleLayout = new JMenuItem("Circle"); this.add(circleLayout); circleLayout.addActionListener(e -> { LayoutUtils.circleLayout(LayoutMenu.this.getLayoutEditable()); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); JMenuItem squareLayout = new JMenuItem("Square"); this.add(squareLayout); squareLayout.addActionListener(e -> { LayoutUtils.squareLayout(LayoutMenu.this.getLayoutEditable()); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); JMenuItem fruchtermanReingold = new JMenuItem("Fruchterman-Reingold"); this.add(fruchtermanReingold); fruchtermanReingold.addActionListener(e -> { LayoutUtils.fruchtermanReingoldLayout(LayoutMenu.this.getLayoutEditable()); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); JMenuItem kamadaKawai = new JMenuItem("Kamada-Kawai"); this.add(kamadaKawai); kamadaKawai.addActionListener(e -> { LayoutEditable layoutEditable1 = LayoutMenu.this.getLayoutEditable(); LayoutUtils.kamadaKawaiLayout(layoutEditable1); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); JMenuItem distanceFromSelected = new JMenuItem("Distance From Selected"); this.add(distanceFromSelected); distanceFromSelected.addActionListener(e -> { LayoutEditable layoutEditable12 = LayoutMenu.this.getLayoutEditable(); LayoutUtils.distanceFromSelectedLayout(layoutEditable12); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); JMenuItem causalOrder = new JMenuItem("Causal Order"); this.add(causalOrder); causalOrder.addActionListener(e -> { LayoutEditable layoutEditable13 = LayoutMenu.this.getLayoutEditable(); LayoutUtils.layoutByCausalOrder(layoutEditable13); // Copy the laid out graph to the clipboard. getCopyLayoutAction().actionPerformed(null); }); if (this.getLayoutEditable().getKnowledge() != null) { JMenuItem knowledgeTiersLayout = new JMenuItem("Layout by Knowledge"); this.add(knowledgeTiersLayout); knowledgeTiersLayout.addActionListener(e -> { GraphSearchUtils.arrangeByKnowledgeTiers(getLayoutEditable().getGraph(), getLayoutEditable().getKnowledge()); getLayoutEditable().layoutByGraph(getLayoutEditable().getGraph()); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); } JMenuItem knowledgeLayout = new JMenuItem("Layout by Knowledge Indices"); this.add(knowledgeLayout); knowledgeLayout.addActionListener(e -> { LayoutUtils.knowledgeLayout(LayoutMenu.this.getLayoutEditable()); // Copy the laid out graph to the clipboard. LayoutMenu.this.getCopyLayoutAction().actionPerformed(null); }); addSeparator(); this.copyLayoutAction = new CopyLayoutAction(getLayoutEditable()); add(getCopyLayoutAction()); add(new PasteLayoutAction(getLayoutEditable())); } private LayoutEditable getLayoutEditable() { return this.layoutEditable; } private CopyLayoutAction getCopyLayoutAction() { return this.copyLayoutAction; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy