Class JDialogHyperGraph

  • All Implemented Interfaces:
    com.jogamp.newt.event.MouseListener, com.jogamp.newt.event.NEWTEventListener, java.awt.event.ActionListener, java.awt.event.ComponentListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

    public class JDialogHyperGraph
    extends javax.swing.JFrame
    implements java.awt.event.ActionListener, java.awt.event.ComponentListener, com.jogamp.newt.event.MouseListener
    Frame and user interface for displaying a HyperGraph in MIPAV.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JFrame

        javax.swing.JFrame.AccessibleJFrame
      • Nested classes/interfaces inherited from class java.awt.Frame

        java.awt.Frame.AccessibleAWTFrame
      • Nested classes/interfaces inherited from class java.awt.Window

        java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private javax.swing.JButton centerRootNodeButton  
      private javax.swing.JButton decreaseFontButton  
      private static java.awt.Color[] fixedColor
      set of colors for tree nodes, based on the mipav striped lut
      private MipavGraphPanel graphPanel
      Displays the graph.
      private javax.swing.JPanel graphPanel2  
      private javax.swing.JButton increaseFontButton  
      private float m_fPageMargin
      page margin
      private float m_fPageWidth
      page width
      private int m_iCurrentFontSize
      current font size
      private java.lang.String m_kCurrentDir
      current directory
      private org.apache.pdfbox.pdmodel.font.PDFont m_kCurrentFont
      current font
      private java.lang.String m_kFileName
      current file name
      private javax.swing.JPanel mainPanel  
      private javax.swing.JButton saveGraphButton  
      private javax.swing.JButton sep  
      private static long serialVersionUID
      generated serial id
      private ViewToolBarBuilder toolbarBuilder  
      private javax.swing.JPanel toolbarPanel  
      • Fields inherited from class javax.swing.JFrame

        accessibleContext, rootPane, rootPaneCheckingEnabled
      • Fields inherited from class java.awt.Frame

        CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
      • Fields inherited from class java.awt.Component

        BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • Fields inherited from interface javax.swing.WindowConstants

        DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
    • Constructor Summary

      Constructors 
      Constructor Description
      JDialogHyperGraph()
      Default Constructor.
      JDialogHyperGraph​(ViewJFrameImage kParent)
      Creates a HyperGraph using the ViewJFrameImage active image and menu bars as the root and tree of the graph.
      JDialogHyperGraph​(java.lang.String dir, java.lang.String file)
      Creates a HyperGraph visualization from the graph located in the given directory and file.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent e)  
      private void addSubTree​(hypergraph.graphApi.Graph tree, hypergraph.graphApi.Node root, hypergraph.graphApi.Node menu, java.awt.Component[] menuComponents, int level)
      Function recursively creates a tree structure based on an array of menu components.
      private void buildMenu()
      Builds the File menu for the HyperGraph interface.
      void componentHidden​(java.awt.event.ComponentEvent e)  
      void componentMoved​(java.awt.event.ComponentEvent e)  
      void componentResized​(java.awt.event.ComponentEvent e)  
      void componentShown​(java.awt.event.ComponentEvent e)  
      hypergraph.visualnet.GraphPanel getGraphPanel()
      Access to the graph panel.
      java.lang.String getGraphXML()
      Returns an xml description of the graph as a String.
      static java.awt.Color getNodeColor​(int level)  
      private void init()
      Initialize the HyperGraph visualization.
      private void initImage​(ViewJFrameImage kParent)
      Initialize the HyperGraph interface based on the ViewJFrameImage parent.
      private void loadPreferences()
      Loads the graph preferences file from the Preferences.grtPreferencesDir directory.
      void mouseClicked​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseDragged​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseEntered​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseExited​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseMoved​(com.jogamp.newt.event.MouseEvent arg0)  
      void mousePressed​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseReleased​(com.jogamp.newt.event.MouseEvent arg0)  
      void mouseWheelMoved​(com.jogamp.newt.event.MouseEvent arg0)  
      void savePreferences()
      Saves the global graph properties (background color, text sizes) to the default mipav graph preferences file in the Preferences.getPreferencesDir directory.
      private void writeGraph​(java.util.HashSet<hypergraph.graphApi.Node> visitedSet, java.io.FileWriter kWriter, hypergraph.graphApi.Node kNode, int iLevel)
      Recursively writes a graph to the text file.
      private void writeGraph​(java.util.HashSet<hypergraph.graphApi.Node> visitedSet, org.apache.pdfbox.pdmodel.PDDocument doc, org.apache.pdfbox.pdmodel.edit.PDPageContentStream[] contentStream, float[] height, hypergraph.graphApi.Node kNode, int iLevel)
      Recursively writes a graph to the pdf file.
      void writeGraphJPG​(java.lang.String dir, java.lang.String file)
      Writes the current HyperGraph as a JPG image.
      void writeGraphPDF​(java.lang.String dir, java.lang.String file)
      Writes the current HyperGraph as a PDF.
      void writeGraphTIF​(java.lang.String dir, java.lang.String file)
      Writes the current HyperGraph as a TIF image.
      void writeGraphTXT​(java.lang.String dir, java.lang.String file)
      Writes the current HyperGraph as a text file.
      void writeGraphXML​(java.lang.String dir, java.lang.String file)
      Writes the current HyperGraph as a xml file.
      private java.lang.String writeImage​(java.lang.String node, java.lang.String dir, java.lang.String file, java.lang.String format, float width)
      Writes the HyperGraph graph panel display as an image file.
      • Methods inherited from class javax.swing.JFrame

        addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
      • Methods inherited from class java.awt.Frame

        addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
      • Methods inherited from class java.awt.Window

        addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.awt.MenuContainer

        getFont, postEvent
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        generated serial id
        See Also:
        Constant Field Values
      • m_kCurrentDir

        private java.lang.String m_kCurrentDir
        current directory
      • m_kFileName

        private java.lang.String m_kFileName
        current file name
      • fixedColor

        private static java.awt.Color[] fixedColor
        set of colors for tree nodes, based on the mipav striped lut
      • m_kCurrentFont

        private org.apache.pdfbox.pdmodel.font.PDFont m_kCurrentFont
        current font
      • m_iCurrentFontSize

        private int m_iCurrentFontSize
        current font size
      • m_fPageWidth

        private float m_fPageWidth
        page width
      • m_fPageMargin

        private float m_fPageMargin
        page margin
      • toolbarPanel

        private javax.swing.JPanel toolbarPanel
      • mainPanel

        private javax.swing.JPanel mainPanel
      • graphPanel2

        private javax.swing.JPanel graphPanel2
      • centerRootNodeButton

        private javax.swing.JButton centerRootNodeButton
      • saveGraphButton

        private javax.swing.JButton saveGraphButton
      • increaseFontButton

        private javax.swing.JButton increaseFontButton
      • decreaseFontButton

        private javax.swing.JButton decreaseFontButton
      • sep

        private javax.swing.JButton sep
    • Constructor Detail

      • JDialogHyperGraph

        public JDialogHyperGraph()
        Default Constructor.
      • JDialogHyperGraph

        public JDialogHyperGraph​(java.lang.String dir,
                                 java.lang.String file)
        Creates a HyperGraph visualization from the graph located in the given directory and file. If either or both are null, the constructor opens a file chooser so the user can select the graph file to open. Graphs are in .xml format, described in the MIPAVGraphXML.xsd file.
        Parameters:
        dir - directory.
        file - file name.
      • JDialogHyperGraph

        public JDialogHyperGraph​(ViewJFrameImage kParent)
        Creates a HyperGraph using the ViewJFrameImage active image and menu bars as the root and tree of the graph. The graph leaves are the menu items. Double-click calls the corresponding action command for the active image.
        Parameters:
        kParent - ViewJFrameImage.
    • Method Detail

      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent e)
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
      • getGraphPanel

        public hypergraph.visualnet.GraphPanel getGraphPanel()
        Access to the graph panel.
        Returns:
        the graph panel.
      • getGraphXML

        public java.lang.String getGraphXML()
        Returns an xml description of the graph as a String.
        Returns:
        an xml description of the graph as a String.
      • getNodeColor

        public static java.awt.Color getNodeColor​(int level)
      • savePreferences

        public void savePreferences()
        Saves the global graph properties (background color, text sizes) to the default mipav graph preferences file in the Preferences.getPreferencesDir directory.
      • writeGraphJPG

        public void writeGraphJPG​(java.lang.String dir,
                                  java.lang.String file)
        Writes the current HyperGraph as a JPG image.
        Parameters:
        dir - directory.
        file - file name.
      • writeGraphPDF

        public void writeGraphPDF​(java.lang.String dir,
                                  java.lang.String file)
        Writes the current HyperGraph as a PDF.
        Parameters:
        dir - directory.
        file - file name.
      • writeGraphTIF

        public void writeGraphTIF​(java.lang.String dir,
                                  java.lang.String file)
        Writes the current HyperGraph as a TIF image.
        Parameters:
        dir - directory.
        file - file name.
      • writeGraphTXT

        public void writeGraphTXT​(java.lang.String dir,
                                  java.lang.String file)
        Writes the current HyperGraph as a text file.
        Parameters:
        dir - directory.
        file - file name.
      • writeGraphXML

        public void writeGraphXML​(java.lang.String dir,
                                  java.lang.String file)
        Writes the current HyperGraph as a xml file.
        Parameters:
        dir - directory.
        file - file name.
      • addSubTree

        private void addSubTree​(hypergraph.graphApi.Graph tree,
                                hypergraph.graphApi.Node root,
                                hypergraph.graphApi.Node menu,
                                java.awt.Component[] menuComponents,
                                int level)
        Function recursively creates a tree structure based on an array of menu components. Used to build a demo of the HyperGraph out of the MIPAV menus.
        Parameters:
        tree - current graph.
        root - the root of the tree
        menu - the current node, or root of the current sub-tree
        menuComponents - array of menu items to add to the current sub-tree
        level - current level of the graph (root = 0).
      • buildMenu

        private void buildMenu()
        Builds the File menu for the HyperGraph interface.
      • init

        private void init()
        Initialize the HyperGraph visualization. The input file and directory are specified in the constructor.
      • initImage

        private void initImage​(ViewJFrameImage kParent)
        Initialize the HyperGraph interface based on the ViewJFrameImage parent. The graph is build recursively from the mipav menus. The leaf nodes are active, when the user double-clicks the action commands are sent to the ViewJFrameImage parent and are performed on the current active image.
        Parameters:
        kParent -
      • loadPreferences

        private void loadPreferences()
        Loads the graph preferences file from the Preferences.grtPreferencesDir directory. If the graph preferences file doesn't exist, a new one is created with the default values.
      • writeGraph

        private void writeGraph​(java.util.HashSet<hypergraph.graphApi.Node> visitedSet,
                                java.io.FileWriter kWriter,
                                hypergraph.graphApi.Node kNode,
                                int iLevel)
        Recursively writes a graph to the text file.
        Parameters:
        visitedSet - lists the nodes that have already been written. Prevents infinite recursion in graphs with loops.
        kWriter - output FileWriter.
        kNode - current node to write.
        iLevel - current level of the node in the graph.
      • writeGraph

        private void writeGraph​(java.util.HashSet<hypergraph.graphApi.Node> visitedSet,
                                org.apache.pdfbox.pdmodel.PDDocument doc,
                                org.apache.pdfbox.pdmodel.edit.PDPageContentStream[] contentStream,
                                float[] height,
                                hypergraph.graphApi.Node kNode,
                                int iLevel)
        Recursively writes a graph to the pdf file.
        Parameters:
        visitedSet - lists the nodes that have already been written. Prevents infinite recursion in graphs with loops.
        doc - PDDocument
        contentStream - current page stream in the document.
        height - current height on the page, where the text is written.
        kNode - current node to write.
        iLevel - level in the tree of the current node.
      • writeImage

        private java.lang.String writeImage​(java.lang.String node,
                                            java.lang.String dir,
                                            java.lang.String file,
                                            java.lang.String format,
                                            float width)
        Writes the HyperGraph graph panel display as an image file.
        Parameters:
        node - name of the root node.
        dir - output directory.
        file - output file name.
        format - format, may be .jpg, .tif, or null.
        width - desired width of the output image (maintains aspect ratio).
        Returns:
        the name of the output file.
      • componentHidden

        public void componentHidden​(java.awt.event.ComponentEvent e)
        Specified by:
        componentHidden in interface java.awt.event.ComponentListener
      • componentMoved

        public void componentMoved​(java.awt.event.ComponentEvent e)
        Specified by:
        componentMoved in interface java.awt.event.ComponentListener
      • componentResized

        public void componentResized​(java.awt.event.ComponentEvent e)
        Specified by:
        componentResized in interface java.awt.event.ComponentListener
      • componentShown

        public void componentShown​(java.awt.event.ComponentEvent e)
        Specified by:
        componentShown in interface java.awt.event.ComponentListener
      • mouseClicked

        public void mouseClicked​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseClicked in interface com.jogamp.newt.event.MouseListener
      • mouseDragged

        public void mouseDragged​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseDragged in interface com.jogamp.newt.event.MouseListener
      • mouseEntered

        public void mouseEntered​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseEntered in interface com.jogamp.newt.event.MouseListener
      • mouseExited

        public void mouseExited​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseExited in interface com.jogamp.newt.event.MouseListener
      • mouseMoved

        public void mouseMoved​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseMoved in interface com.jogamp.newt.event.MouseListener
      • mousePressed

        public void mousePressed​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mousePressed in interface com.jogamp.newt.event.MouseListener
      • mouseReleased

        public void mouseReleased​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseReleased in interface com.jogamp.newt.event.MouseListener
      • mouseWheelMoved

        public void mouseWheelMoved​(com.jogamp.newt.event.MouseEvent arg0)
        Specified by:
        mouseWheelMoved in interface com.jogamp.newt.event.MouseListener