⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actiontimelinemove.java

📁 fortran并行计算包
💻 JAVA
字号:
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package viewer.zoomable;import java.awt.*;import java.awt.event.*;import java.net.*;import javax.swing.*;import javax.swing.tree.*;import java.util.*;import viewer.common.Dialogs;public class ActionTimelineMove implements ActionListener{    private Window             root_window;    private ToolBarStatus      toolbar;    private YaxisTree          tree;    private DefaultTreeModel   tree_model;    public ActionTimelineMove( Window           parent_window,                               ToolBarStatus    in_toolbar,                               YaxisTree        in_tree )    {        root_window  = parent_window;        toolbar      = in_toolbar;        tree         = in_tree;        tree_model   = (DefaultTreeModel) tree.getModel();    }    public void actionPerformed( ActionEvent event )    {        if ( Debug.isActive() )            Debug.println( "Action for Move Timeline button" );        Enumeration[]     enum_paths;        Enumeration       paths;        boolean[]         isBufferedPathExpanded;        TreePath          selected_path, parent_path;        TreePath          old_path, new_path, prefix_path;        TreePath[]        child_paths;        MutableTreeNode   selected, parent, child;        int               insertion_idx;        int               idx;        if ( tree.getSelectionCount() != 1 ) {            Dialogs.error( root_window,                "ONE selected tree node is needed as an insertion point!" );            return;        }        selected_path  = tree.getSelectionPath();        child_paths    = tree.getFromCutAndPasteBuffer();                if ( child_paths == null || child_paths.length < 1 ) {            Dialogs.warn( root_window,                          "Nothing has been marked for relocation!" );            return;        }        if ( !tree.isPathLevelSameAsThatOfCutAndPasteBuffer( selected_path ) ) {            Dialogs.error( root_window,                           "The level of insertion point has "                         + "different level than that of marked timelines. "                         + "Select another insertion point!" );            return;        }        // Save the expansion pattern of the marked timelines        // Then collapse any marked timelines which are expanded        enum_paths = new Enumeration[ child_paths.length ];        isBufferedPathExpanded = new boolean[ child_paths.length ];        for ( idx = 0; idx < child_paths.length; idx++ ) {            enum_paths[ idx ] = tree.getExpandedDescendants(                                child_paths[ idx ] );            if ( Debug.isActive() )                Debug.println( "action_timeline_move(): "                             + "emum_paths[" + idx + "] = "                             + enum_paths[ idx ] );            if ( tree.isExpanded( child_paths[ idx ] ) ) {                isBufferedPathExpanded[ idx ] = true;                tree.collapsePath( child_paths[ idx ] );            }            else                isBufferedPathExpanded[ idx ] = false;        }        // Remove the marked timelines from the tree        for ( idx = 0; idx < child_paths.length; idx++ ) {            child = (MutableTreeNode) child_paths[ idx ].getLastPathComponent();            tree_model.removeNodeFromParent( child );            if ( Debug.isActive() )                Debug.println( "\tCut " + child );        }        // Add the marked timelines to the insertion point        parent_path = selected_path.getParentPath();        if ( Debug.isActive() )            Debug.println( "action_timeline_move(): parent_path = "                         + parent_path );        parent   = (MutableTreeNode) parent_path.getLastPathComponent();        selected = (MutableTreeNode) selected_path.getLastPathComponent();        insertion_idx = ( (DefaultMutableTreeNode) parent ).getIndex( selected )                      + 1;        for ( idx = 0; idx < child_paths.length; idx++ ) {            child = (MutableTreeNode) child_paths[ idx ].getLastPathComponent();            tree_model.insertNodeInto( child, parent, insertion_idx + idx );            if ( Debug.isActive() )                Debug.println( "\tPaste " + child                             + " next to " + selected );            // Restore the expansion pattern of marked timelines            prefix_path = parent_path.pathByAddingChild( child );            if ( isBufferedPathExpanded[ idx ] )                tree.expandPath( prefix_path );            if ( enum_paths[ idx ] != null ) {                paths = enum_paths[ idx ];                while ( paths.hasMoreElements() ) {                    old_path = (TreePath) paths.nextElement();                    if ( Debug.isActive() )                        Debug.print( "action_timeline_move(): " + old_path );                    new_path = this.getReplacedPath( prefix_path, old_path );                    if ( Debug.isActive() )                        Debug.println( " is restored as " + new_path );                    tree.expandPath( new_path );                }            }        }        // Clear up the marked timelines in the buffer        tree.clearCutAndPasteBuffer();        // Update leveled_paths[]        tree.update_leveled_paths();        // Set toolbar buttons to reflect status        toolbar.getTimelineMarkButton().setEnabled( true );        toolbar.getTimelineMoveButton().setEnabled( false );        toolbar.getTimelineDeleteButton().setEnabled( false );        toolbar.resetYaxisTreeButtons();    }    private TreePath getReplacedPath( TreePath prefix_path, TreePath old_path )    {        TreePath                new_path;        MutableTreeNode         common_node;        DefaultMutableTreeNode  last_node;        Enumeration             nodes;        common_node = (MutableTreeNode) prefix_path.getLastPathComponent();        new_path    = prefix_path.getParentPath();        last_node   = (DefaultMutableTreeNode) old_path.getLastPathComponent();        nodes       = last_node.pathFromAncestorEnumeration( common_node );        while ( nodes.hasMoreElements() )            new_path = new_path.pathByAddingChild( nodes.nextElement() );        return new_path;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -