Class JDialogHyperGraph
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Window
-
- java.awt.Frame
-
- javax.swing.JFrame
-
- gov.nih.mipav.view.graphVisualization.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.Window
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
-
-
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 lutprivate MipavGraphPanel
graphPanel
Displays the graph.private javax.swing.JPanel
graphPanel2
private javax.swing.JButton
increaseFontButton
private float
m_fPageMargin
page marginprivate float
m_fPageWidth
page widthprivate int
m_iCurrentFontSize
current font sizeprivate java.lang.String
m_kCurrentDir
current directoryprivate org.apache.pdfbox.pdmodel.font.PDFont
m_kCurrentFont
current fontprivate java.lang.String
m_kFileName
current file nameprivate javax.swing.JPanel
mainPanel
private javax.swing.JButton
saveGraphButton
private javax.swing.JButton
sep
private static long
serialVersionUID
generated serial idprivate ViewToolBarBuilder
toolbarBuilder
private javax.swing.JPanel
toolbarPanel
-
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
-
-
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
-
-
-
-
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
-
graphPanel
private MipavGraphPanel graphPanel
Displays the graph.
-
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
-
toolbarBuilder
private ViewToolBarBuilder toolbarBuilder
-
-
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 interfacejava.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 treemenu
- the current node, or root of the current sub-treemenuComponents
- array of menu items to add to the current sub-treelevel
- 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
- PDDocumentcontentStream
- 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 interfacejava.awt.event.ComponentListener
-
componentMoved
public void componentMoved(java.awt.event.ComponentEvent e)
- Specified by:
componentMoved
in interfacejava.awt.event.ComponentListener
-
componentResized
public void componentResized(java.awt.event.ComponentEvent e)
- Specified by:
componentResized
in interfacejava.awt.event.ComponentListener
-
componentShown
public void componentShown(java.awt.event.ComponentEvent e)
- Specified by:
componentShown
in interfacejava.awt.event.ComponentListener
-
mouseClicked
public void mouseClicked(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseClicked
in interfacecom.jogamp.newt.event.MouseListener
-
mouseDragged
public void mouseDragged(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseDragged
in interfacecom.jogamp.newt.event.MouseListener
-
mouseEntered
public void mouseEntered(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseEntered
in interfacecom.jogamp.newt.event.MouseListener
-
mouseExited
public void mouseExited(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseExited
in interfacecom.jogamp.newt.event.MouseListener
-
mouseMoved
public void mouseMoved(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseMoved
in interfacecom.jogamp.newt.event.MouseListener
-
mousePressed
public void mousePressed(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mousePressed
in interfacecom.jogamp.newt.event.MouseListener
-
mouseReleased
public void mouseReleased(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseReleased
in interfacecom.jogamp.newt.event.MouseListener
-
mouseWheelMoved
public void mouseWheelMoved(com.jogamp.newt.event.MouseEvent arg0)
- Specified by:
mouseWheelMoved
in interfacecom.jogamp.newt.event.MouseListener
-
-