Class MultiRowLayout

  • All Implemented Interfaces:
    Layout

    public class MultiRowLayout
    extends java.lang.Object
    implements Layout
    Handles layouts with muliple rows.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void align​(int[] rowHeights)
      Aligns the heights in this MultiRowLayout to match those in the give row heights array.
      void align​(MultiRowLayout layout, Field dummyField)
      synchronize adjusts this layout and the layout passed as a parameter by adding and resizing rows as necessary to make their vertical layouts match.
      boolean contains​(int yPos)
      Returns true if the the given yPos lies within this layout.
      int cursorBeginning​(FieldLocation cursorLoc)
      Sets the given FieldLocation as far to the left as possible.
      boolean cursorDown​(FieldLocation cursorLoc, int lastX)
      Moves the cursor up down row from its current position.
      int cursorEnd​(FieldLocation cursorLoc)
      Sets the given FieldLocation as far to the right as possible.
      int cursorLeft​(FieldLocation cursorLoc)
      Sets the given FieldLocation one position to the left.
      int cursorRight​(FieldLocation cursorLoc)
      Sets the given FieldLocation one position to the right.
      boolean cursorUp​(FieldLocation cursorLoc, int lastX)
      Moves the cursor up one row from its current position.
      boolean enterLayout​(FieldLocation cursorLoc, int lastX, boolean fromTop)
      Tries to move the cursor into this layout.
      void fillHeights​(int[] rowHeights)
      Fills in the given array with the heights of all the layouts in the MultiRowLayout
      int getBeginRowFieldNum​(int fieldIndex)  
      int getCompressableWidth()
      Returns the smallest possible width of this layout that can display its full contents
      java.awt.Rectangle getCursorRect​(int fieldNum, int row, int col)
      Returns a rectangle which bounds the given cursor position.
      int getEndRowFieldNum​(int fieldIndex)  
      Field getField​(int index)
      Returns the i'th Field in this Layout.
      java.awt.Rectangle getFieldBounds​(int index)
      Returns the bounds of the given field (in coordinates relative to the layout)
      int getFirstRowID()  
      int getHeight()
      Returns the total height of this layout.
      int getIndexSize()
      Returns the number of indexes consumed by this layout.
      int getNumFields()
      Returns the number of Fields in this Layout.
      int getPrimaryOffset()
      Returns the vertical offset (in pixels) of the start of the primary field in the layout.
      int getScrollableUnitIncrement​(int topOfScreen, int direction)
      Returns the amount to scroll to reveal the line of text.
      void insertSpaceAbove​(int size)
      Inserts empty space above the layout
      void insertSpaceBelow​(int size)
      Inserts empty space below the layout
      void paint​(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle rect, LayoutBackgroundColorManager colorManager, FieldLocation cursorLocation)
      Paints this layout on the screen.
      int setCursor​(FieldLocation cursorLoc, int x, int y)
      Sets the cursor to the given point location.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • MultiRowLayout

        public MultiRowLayout​(RowLayout layout,
                              int indexSize)
        Constructs a new MultiRowLayout with a single layout row.
        Parameters:
        layout - the single layout to add to this MultiRowLayout.
      • MultiRowLayout

        public MultiRowLayout​(RowLayout[] layouts,
                              int indexSize)
    • Method Detail

      • getHeight

        public int getHeight()
        Description copied from interface: Layout
        Returns the total height of this layout.
        Specified by:
        getHeight in interface Layout
        See Also:
        Layout.getHeight()
      • getCompressableWidth

        public int getCompressableWidth()
        Description copied from interface: Layout
        Returns the smallest possible width of this layout that can display its full contents
        Specified by:
        getCompressableWidth in interface Layout
        Returns:
        the smallest possible width of this layout that can display its full contents
      • getField

        public Field getField​(int index)
        Description copied from interface: Layout
        Returns the i'th Field in this Layout.
        Specified by:
        getField in interface Layout
        Parameters:
        index - the index of the field to retrieve.
        See Also:
        Layout.getField(int)
      • paint

        public void paint​(javax.swing.JComponent c,
                          java.awt.Graphics g,
                          PaintContext context,
                          java.awt.Rectangle rect,
                          LayoutBackgroundColorManager colorManager,
                          FieldLocation cursorLocation)
        Description copied from interface: Layout
        Paints this layout on the screen.
        Specified by:
        paint in interface Layout
        g - The graphics context with which to paint.
        context - contains various information needed to do the paint
        rect - the screen area that needs to be painted.
        colorManager - indicates where the selection exists
        cursorLocation - the location of the cursor or null if the cursor is not in this layout
        See Also:
        docking.widgets.fieldpanel.Layout#paint(java.awt.Graphics, docking.widgets.fieldpanel.internal.PaintContext, java.awt.Rectangle, ghidra.util.bean.field.LayoutSelection, ghidra.util.bean.field.LayoutSelection, int, int, int)
      • setCursor

        public int setCursor​(FieldLocation cursorLoc,
                             int x,
                             int y)
        Description copied from interface: Layout
        Sets the cursor to the given point location. The cursor will be positioned to the row column position that is closest to the given point.
        Specified by:
        setCursor in interface Layout
        Parameters:
        cursorLoc - the location that is to be filled in.
        x - the x coordinate of the point to be translated into a cursor location.
        y - the y coordinate of the point to be translated into a cursor location.
        Returns:
        the x coordinated of the computed cursor location.
        See Also:
        Layout.setCursor(docking.widgets.fieldpanel.support.FieldLocation, int, int)
      • getCursorRect

        public java.awt.Rectangle getCursorRect​(int fieldNum,
                                                int row,
                                                int col)
        Description copied from interface: Layout
        Returns a rectangle which bounds the given cursor position.
        Specified by:
        getCursorRect in interface Layout
        Parameters:
        fieldNum - the index of the field containing the cursor position.
        row - the the text row in the field containing the cursor position.
        col - the character position in the row containing the cursor position.
        See Also:
        Layout.getCursorRect(int, int, int)
      • cursorLeft

        public int cursorLeft​(FieldLocation cursorLoc)
        Description copied from interface: Layout
        Sets the given FieldLocation one position to the left. If already at the left most position, it tries to move to the end of the previous row.
        Specified by:
        cursorLeft in interface Layout
        Parameters:
        cursorLoc - the cursor location object to be modified.
        Returns:
        the x coordinate of the cursor after the operation. Returns -1 if it was already at the top, left most position.
        See Also:
        Layout.cursorLeft(docking.widgets.fieldpanel.support.FieldLocation)
      • cursorRight

        public int cursorRight​(FieldLocation cursorLoc)
        Description copied from interface: Layout
        Sets the given FieldLocation one position to the right. If already at the right most position, it tries to move to the beginning of the next row.
        Specified by:
        cursorRight in interface Layout
        Parameters:
        cursorLoc - the cursor location object to be modified.
        Returns:
        the x coordinate of the cursor after the operation. Returns -1 if it was already at the bottom, right most position.
        See Also:
        Layout.cursorRight(docking.widgets.fieldpanel.support.FieldLocation)
      • getScrollableUnitIncrement

        public int getScrollableUnitIncrement​(int topOfScreen,
                                              int direction)
        Description copied from interface: Layout
        Returns the amount to scroll to reveal the line of text.
        Specified by:
        getScrollableUnitIncrement in interface Layout
        Parameters:
        topOfScreen - the y coordinate that represents the top or bottom of the screen
        direction - the direction to scroll
        See Also:
        Layout.getScrollableUnitIncrement(int, int)
      • contains

        public boolean contains​(int yPos)
        Description copied from interface: Layout
        Returns true if the the given yPos lies within this layout.
        Specified by:
        contains in interface Layout
        Parameters:
        yPos - the vertical coordinate to check if in this layout.
        See Also:
        Layout.contains(int)
      • align

        public void align​(MultiRowLayout layout,
                          Field dummyField)
        synchronize adjusts this layout and the layout passed as a parameter by adding and resizing rows as necessary to make their vertical layouts match.
        Parameters:
        layout - the other multi-row layout that is to be synchronized with.
        dummyField - empty field used for spacing.
      • getPrimaryOffset

        public int getPrimaryOffset()
        Description copied from interface: Layout
        Returns the vertical offset (in pixels) of the start of the primary field in the layout.
        Specified by:
        getPrimaryOffset in interface Layout
        Returns:
        -1 if layout does not have a primary field.
        See Also:
        Layout.getPrimaryOffset()
      • getFieldBounds

        public java.awt.Rectangle getFieldBounds​(int index)
        Description copied from interface: Layout
        Returns the bounds of the given field (in coordinates relative to the layout)
        Specified by:
        getFieldBounds in interface Layout
        Parameters:
        index - the field id for the field for which to get bounds
        See Also:
        Layout.getFieldBounds(int)
      • insertSpaceAbove

        public void insertSpaceAbove​(int size)
        Description copied from interface: Layout
        Inserts empty space above the layout
        Specified by:
        insertSpaceAbove in interface Layout
        Parameters:
        size - the amount of space to insert above the layout
        See Also:
        Layout.insertSpaceAbove(int)
      • insertSpaceBelow

        public void insertSpaceBelow​(int size)
        Description copied from interface: Layout
        Inserts empty space below the layout
        Specified by:
        insertSpaceBelow in interface Layout
        Parameters:
        size - the amount of space to insert below the layout
        See Also:
        Layout.insertSpaceBelow(int)
      • fillHeights

        public void fillHeights​(int[] rowHeights)
        Fills in the given array with the heights of all the layouts in the MultiRowLayout
        Parameters:
        rowHeights - the array to be filled in with heights. Each height is stored at its layoutRow id as the index into the array.
      • align

        public void align​(int[] rowHeights)
        Aligns the heights in this MultiRowLayout to match those in the give row heights array. Extra is inserted to align the rows in this layout to match those specified in the given array.
        Parameters:
        rowHeights - the aray of row height to align to.
      • getIndexSize

        public int getIndexSize()
        Description copied from interface: Layout
        Returns the number of indexes consumed by this layout.
        Specified by:
        getIndexSize in interface Layout
      • getBeginRowFieldNum

        public int getBeginRowFieldNum​(int fieldIndex)
        Specified by:
        getBeginRowFieldNum in interface Layout
      • getEndRowFieldNum

        public int getEndRowFieldNum​(int fieldIndex)
        Specified by:
        getEndRowFieldNum in interface Layout
      • getFirstRowID

        public int getFirstRowID()