Class FrontEndTool

  • All Implemented Interfaces:
    DockingTool, Tool, ToolListener, OptionsChangeListener, ServiceProvider
    Direct Known Subclasses:
    TestFrontEndTool

    public class FrontEndTool
    extends PluginTool
    implements OptionsChangeListener
    Tool that serves as the the Ghidra Project Window. Only those plugins that implement the FrontEndable interface may be directly added to this tool by the user. Other plugins that are not marked as FrontEndable may get pulled in because the FrontEndable plugins depend on them. These plugins are aware of what tool they live in so that they can behave in the appropriate manner.
    • Field Detail

      • AUTOMATICALLY_SAVE_TOOLS

        public static final java.lang.String AUTOMATICALLY_SAVE_TOOLS
        See Also:
        Constant Field Values
    • Constructor Detail

      • FrontEndTool

        public FrontEndTool​(ProjectManager pm)
        Construct a new Ghidra Project Window.
        Parameters:
        pm - project manager
    • Method Detail

      • selectFiles

        public void selectFiles​(java.util.Set<DomainFile> files)
      • optionsChanged

        public void optionsChanged​(ToolOptions options,
                                   java.lang.String optionName,
                                   java.lang.Object oldValue,
                                   java.lang.Object newValue)
        Description copied from interface: OptionsChangeListener
        Notification that an option changed.

        Note: to reject an options change, you can throw a OptionsVetoException.

        Specified by:
        optionsChanged in interface OptionsChangeListener
        Parameters:
        options - options object containing the property that changed
        optionName - name of option that changed
        oldValue - old value of the option
        newValue - new value of the option
      • exit

        public void exit()
        Description copied from interface: Tool
        Tells the tool to stop functioning and release its resources. The tool should dispose of all its windows and other resources.
        Specified by:
        exit in interface Tool
        Overrides:
        exit in class PluginTool
      • close

        public void close()
        Description copied from class: PluginTool
        Close this tool:
        1. if there are no tasks running.
        2. resolve the state of any plugins so they can be closed.
        3. Prompt the user to save any changes.
        4. close all associated plugins (this closes the domain object if one is open).
        5. pop up dialog to save the configuration if it has changed.
        6. notify the project tool services that this tool is going away.
        Specified by:
        close in interface DockingTool
        Overrides:
        close in class PluginTool
      • setActiveProject

        public void setActiveProject​(Project project)
        Set the active project.
        Parameters:
        project - may be null if there is no active project
      • addProjectListener

        public void addProjectListener​(ProjectListener l)
        Add the given project listener.
        Parameters:
        l - listener to add
      • removeProjectListener

        public void removeProjectListener​(ProjectListener l)
        Remove the given project listener.
        Parameters:
        l - listener to remove
      • checkIn

        public void checkIn​(PluginTool tool,
                            DomainFile domainFile,
                            TaskListener taskListener)
        Check in the given domain file.
        Parameters:
        tool - tool that has the domain file opened
        domainFile - domain file to check in
        taskListener - listener that is notified when task completes
      • checkIn

        public void checkIn​(PluginTool tool,
                            java.util.List<DomainFile> fileList,
                            TaskListener taskListener,
                            java.awt.Component parent)
        Check in the list of domain files.
        Parameters:
        tool - tool that has the domain files opened
        fileList - list of DomainFile objects
        taskListener - listener that is notified when task completes
        parent - parent of dialog if an error occurs during checkin
      • merge

        public void merge​(PluginTool tool,
                          DomainFile domainFile,
                          TaskListener taskListener)
        Merge the latest version in the repository with the given checked out domain file. Upon completion of the merge, the domain file appears as though the latest version was checked out.
        Parameters:
        tool - tool that has the domain file opened
        domainFile - domain file where latest version will be merged into
        taskListener - listener that is notified when the merge task completes
      • merge

        public void merge​(PluginTool tool,
                          java.util.List<DomainFile> fileList,
                          TaskListener taskListener)
        Merge the latest version (in the repository) of each checked out file in fileList. Upon completion of the merge, the domain file appears as though the latest version was checked out.
        Parameters:
        tool - tool that has the domain files opened
        fileList - list of files that are checked out and are to be merged
        taskListener - listener that is notified when the merge task completes
      • setVisible

        public void setVisible​(boolean visibility)
        Description copied from interface: DockingTool
        Sets the tool visible or invisible. This method is used by the Project to make it's tools visible or invisible depending on whether this tool is in is the active workspace.
        Specified by:
        setVisible in interface DockingTool
        Overrides:
        setVisible in class AbstractDockingTool
        Parameters:
        visibility - true specifies that the tool should be visible
      • setBusy

        public void setBusy​(boolean busy)
      • getToolTemplate

        public ToolTemplate getToolTemplate​(boolean includeConfigState)
        Description copied from interface: Tool
        Returns a ToolTemplate for this Tool that describes the state of the tool.
        Specified by:
        getToolTemplate in interface Tool
        Overrides:
        getToolTemplate in class PluginTool
        Returns:
        a ToolTemplate for this Tool that describes the state of the tool.
      • canCloseDomainFile

        public boolean canCloseDomainFile​(DomainFile df)
        Description copied from interface: Tool
        Can the domain File be closed?
        Note: This forces plugins to terminate any tasks they have running for the indicated domain object and apply any unsaved data to the domain object. If they can't do this or the user cancels then this returns false.
        Specified by:
        canCloseDomainFile in interface Tool
        Overrides:
        canCloseDomainFile in class PluginTool
        Returns:
        false any of the plugins reports that the domain object should not be closed