Package ghidra.app.decompiler.component
Class ClangLayoutController
- java.lang.Object
-
- ghidra.app.decompiler.component.ClangLayoutController
-
- All Implemented Interfaces:
LayoutModel,LayoutModelListener
public class ClangLayoutController extends java.lang.Object implements LayoutModel, LayoutModelListener
Control the GUI layout for displaying tokenized C code
-
-
Constructor Summary
Constructors Constructor Description ClangLayoutController(DecompileOptions opt, DecompilerPanel decompilerPanel, java.awt.FontMetrics met, HighlightFactory hlFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddLayoutModelListener(LayoutModelListener listener)Adds a LayoutModelListener to be notified when changes occur.voidbuildLayouts(Function function, ClangTokenGroup doc, java.lang.String errmsg, boolean display)booleanchangePending()voiddataChanged(java.math.BigInteger start, java.math.BigInteger end)Called when the data at an index or range of indexes changes.SearchLocationfindNextTokenForSearch(java.lang.String searchString, FieldLocation currentLocation, boolean forwardSearch)SearchLocationfindNextTokenForSearchRegex(java.lang.String searchString, FieldLocation currentLocation, boolean forwardSearch)voidflushChanges()Returns true if the model knows about changes that haven't yet been told to the LayoutModelListeners.HighFunctiongetHighFunction(int i)java.math.BigIntegergetIndexAfter(java.math.BigInteger index)Returns the closest larger index in the model that has a non-null layout.intgetIndexBefore(int index)java.math.BigIntegergetIndexBefore(java.math.BigInteger index)Returns the closest smaller index in the model that has a non-null layout.LayoutgetLayout(java.math.BigInteger index)Returns a layout for the given index.java.util.ArrayList<ClangLine>getLines()java.math.BigIntegergetNumIndexes()Returns the total number of indexes.java.awt.DimensiongetPreferredViewSize()Returns the width of the largest possible layout.ClangTokenGroupgetRoot()booleanisUniform()Returns true if every index returns a non-null layout and all the layouts are the same height.voidlayoutChanged()voidlocationChanged(FieldLocation loc, Field field, java.awt.Color locationColor, java.awt.Color parenColor)voidmodelChanged()voidmodelSizeChanged(IndexMapper mapper)Called whenever the number of indexes changedvoidremoveLayoutModelListener(LayoutModelListener listener)Removes a LayoutModelListener to be notified when changes occur.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface docking.widgets.fieldpanel.LayoutModel
iterator, iterator
-
-
-
-
Constructor Detail
-
ClangLayoutController
public ClangLayoutController(DecompileOptions opt, DecompilerPanel decompilerPanel, java.awt.FontMetrics met, HighlightFactory hlFactory)
-
-
Method Detail
-
getLines
public java.util.ArrayList<ClangLine> getLines()
-
isUniform
public boolean isUniform()
Description copied from interface:LayoutModelReturns true if every index returns a non-null layout and all the layouts are the same height.- Specified by:
isUniformin interfaceLayoutModel
-
getPreferredViewSize
public java.awt.Dimension getPreferredViewSize()
Description copied from interface:LayoutModelReturns the width of the largest possible layout.- Specified by:
getPreferredViewSizein interfaceLayoutModel
-
getNumIndexes
public java.math.BigInteger getNumIndexes()
Description copied from interface:LayoutModelReturns the total number of indexes.- Specified by:
getNumIndexesin interfaceLayoutModel
-
getLayout
public Layout getLayout(java.math.BigInteger index)
Description copied from interface:LayoutModelReturns a layout for the given index.- Specified by:
getLayoutin interfaceLayoutModel- Parameters:
index- the index of the layout to retrieve.
-
addLayoutModelListener
public void addLayoutModelListener(LayoutModelListener listener)
Description copied from interface:LayoutModelAdds a LayoutModelListener to be notified when changes occur.- Specified by:
addLayoutModelListenerin interfaceLayoutModel- Parameters:
listener- the LayoutModelListener to add.
-
removeLayoutModelListener
public void removeLayoutModelListener(LayoutModelListener listener)
Description copied from interface:LayoutModelRemoves a LayoutModelListener to be notified when changes occur.- Specified by:
removeLayoutModelListenerin interfaceLayoutModel- Parameters:
listener- the LayoutModelListener to remove.
-
modelSizeChanged
public void modelSizeChanged(IndexMapper mapper)
Description copied from interface:LayoutModelListenerCalled whenever the number of indexes changed- Specified by:
modelSizeChangedin interfaceLayoutModelListener- Parameters:
mapper- Maps indexes from before the model size change to indexes after the model size changed.
-
modelChanged
public void modelChanged()
-
dataChanged
public void dataChanged(java.math.BigInteger start, java.math.BigInteger end)Description copied from interface:LayoutModelListenerCalled when the data at an index or range of indexes changes.- Specified by:
dataChangedin interfaceLayoutModelListener- Parameters:
start- the starting index for the region of data changes.end- the ending index (inclusive) for the region of data changes.
-
layoutChanged
public void layoutChanged()
-
getIndexAfter
public java.math.BigInteger getIndexAfter(java.math.BigInteger index)
Description copied from interface:LayoutModelReturns the closest larger index in the model that has a non-null layout.- Specified by:
getIndexAfterin interfaceLayoutModel- Parameters:
index- for which to find the next index with a non-null layout.- Returns:
- returns the closest larger index in the model that has a non-null layout.
-
getIndexBefore
public java.math.BigInteger getIndexBefore(java.math.BigInteger index)
Description copied from interface:LayoutModelReturns the closest smaller index in the model that has a non-null layout.- Specified by:
getIndexBeforein interfaceLayoutModel- Parameters:
index- for which to find the previous index with a non-null layout.- Returns:
- returns the closest smaller index in the model that has a non-null layout.
-
getIndexBefore
public int getIndexBefore(int index)
-
getRoot
public ClangTokenGroup getRoot()
-
buildLayouts
public void buildLayouts(Function function, ClangTokenGroup doc, java.lang.String errmsg, boolean display)
-
getHighFunction
public HighFunction getHighFunction(int i)
-
findNextTokenForSearchRegex
public SearchLocation findNextTokenForSearchRegex(java.lang.String searchString, FieldLocation currentLocation, boolean forwardSearch)
-
findNextTokenForSearch
public SearchLocation findNextTokenForSearch(java.lang.String searchString, FieldLocation currentLocation, boolean forwardSearch)
-
locationChanged
public void locationChanged(FieldLocation loc, Field field, java.awt.Color locationColor, java.awt.Color parenColor)
-
changePending
public boolean changePending()
-
flushChanges
public void flushChanges()
Description copied from interface:LayoutModelReturns true if the model knows about changes that haven't yet been told to the LayoutModelListeners.- Specified by:
flushChangesin interfaceLayoutModel
-
-