mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-22 04:05:39 +00:00
GP-4269 - Minor refactor of plugin category names
This commit is contained in:
parent
fbdc01c33a
commit
ca9cfe9f9a
@ -26,8 +26,9 @@ import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
import ghidra.util.datastruct.ListenerSet;
|
||||
|
||||
//@formatter:off
|
||||
@PluginInfo(
|
||||
category = PluginCategoryNames.MISC,
|
||||
category = PluginCategoryNames.DEBUGGER,
|
||||
shortDescription = "Service for monitoring task progress",
|
||||
description = """
|
||||
Implements a pub-sub model for notifying of tasks and progress. Publishers can create
|
||||
@ -36,7 +37,9 @@ import ghidra.util.datastruct.ListenerSet;
|
||||
""",
|
||||
servicesProvided = { ProgressService.class },
|
||||
packageName = DebuggerPluginPackage.NAME,
|
||||
status = PluginStatus.RELEASED)
|
||||
status = PluginStatus.RELEASED
|
||||
)
|
||||
//@formatter:on
|
||||
public class ProgressServicePlugin extends Plugin implements ProgressService {
|
||||
ListenerSet<ProgressListener> listeners = new ListenerSet<>(ProgressListener.class, true);
|
||||
|
||||
|
@ -15,16 +15,13 @@
|
||||
*/
|
||||
package ghidra.app.merge;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
import ghidra.app.CorePluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.listing.DataTypeArchive;
|
||||
import ghidra.program.model.listing.Program;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
/**
|
||||
* Plugin that provides a merge component provider for data type archives.
|
||||
@ -33,7 +30,7 @@ import javax.swing.JComponent;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.HIDDEN,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "DataType Archive Merge Manager",
|
||||
description = "Manage merge of DataType Archives"
|
||||
)
|
||||
@ -46,187 +43,98 @@ public class DataTypeArchiveMergeManagerPlugin extends MergeManagerPlugin {
|
||||
* @param mergeManager the merge manager that will control the merge process
|
||||
* @param dataTypeArchive the data type archive
|
||||
*/
|
||||
public DataTypeArchiveMergeManagerPlugin( PluginTool tool,
|
||||
DataTypeArchiveMergeManager mergeManager,
|
||||
DataTypeArchive dataTypeArchive) {
|
||||
public DataTypeArchiveMergeManagerPlugin(PluginTool tool,
|
||||
DataTypeArchiveMergeManager mergeManager,
|
||||
DataTypeArchive dataTypeArchive) {
|
||||
super(tool, mergeManager, dataTypeArchive);
|
||||
// registerEventConsumed(ProgramActivatedPluginEvent.class);
|
||||
// registerServiceProvided(ProgramManager.class, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MergeManagerProvider createProvider() {
|
||||
return new MergeManagerProvider(this,
|
||||
"Merge Data Type Archives for " + currentDomainObject.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEvent(PluginEvent event) {
|
||||
// if (event instanceof ProgramActivatedPluginEvent) {
|
||||
// Program activeProgram = ((ProgramActivatedPluginEvent) event).getActiveProgram();
|
||||
// currentProgram = activeProgram;
|
||||
// }
|
||||
}
|
||||
|
||||
public MergeManagerProvider createProvider() {
|
||||
return new MergeManagerProvider(this,
|
||||
"Merge Data Type Archives for " + currentDomainObject.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispose() {
|
||||
public void processEvent(PluginEvent event) {
|
||||
// stub
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispose() {
|
||||
provider.dispose();
|
||||
}
|
||||
|
||||
public static String getDescription() {
|
||||
return "Manage merge of Programs";
|
||||
}
|
||||
|
||||
public static String getDescriptiveName() {
|
||||
return "Program Merge Manager";
|
||||
}
|
||||
|
||||
public static String getCategory() {
|
||||
return "Unmanaged";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the merge manager associated with this plug-in.
|
||||
* @return the merge manager
|
||||
*/
|
||||
@Override
|
||||
DataTypeArchiveMergeManager getMergeManager() {
|
||||
return (DataTypeArchiveMergeManager)mergeManager;
|
||||
DataTypeArchiveMergeManager getMergeManager() {
|
||||
return (DataTypeArchiveMergeManager) mergeManager;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Defines and displays a component for resolving merge conflicts.
|
||||
* @param component the component
|
||||
* @param componentID the identifier for this component
|
||||
*/
|
||||
@Override
|
||||
void setMergeComponent(JComponent component, String componentID) {
|
||||
void setMergeComponent(JComponent component, String componentID) {
|
||||
provider.setMergeComponent(component, componentID);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the merge description at the top of the merge tool.
|
||||
* @param mergeDescription the new description
|
||||
*/
|
||||
@Override
|
||||
void updateMergeDescription(String mergeDescription) {
|
||||
void updateMergeDescription(String mergeDescription) {
|
||||
provider.updateMergeDescription(mergeDescription);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the message below the progress meter in the current phase progress area.
|
||||
* @param progressDescription the new text message to display. If null, then the default message is displayed.
|
||||
*/
|
||||
@Override
|
||||
void updateProgressDetails(String progressDescription) {
|
||||
void updateProgressDetails(String progressDescription) {
|
||||
provider.updateProgressDetails(progressDescription);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the percentage of the progress meter that is filled in for the current phase progress area.
|
||||
* @param currentPercentProgress the percentage of the progress bar to fill in from 0 to 100.
|
||||
*/
|
||||
@Override
|
||||
void setCurrentProgress(int currentPercentProgress) {
|
||||
void setCurrentProgress(int currentPercentProgress) {
|
||||
provider.setCurrentProgress(currentPercentProgress);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Displays the default information in the merge tool.
|
||||
*/
|
||||
@Override
|
||||
void showDefaultComponent() {
|
||||
void showDefaultComponent() {
|
||||
provider.showDefaultComponent();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enables/disables the Apply button at the bottom of the merge tool.
|
||||
* The Apply button is for applying conflicts.
|
||||
* @param state true means enable the button. false means disable it.
|
||||
*/
|
||||
@Override
|
||||
void setApplyEnabled(boolean state) {
|
||||
void setApplyEnabled(boolean state) {
|
||||
provider.setApplyEnabled(state);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the provider for the merge.
|
||||
* @return the provider
|
||||
*/
|
||||
@Override
|
||||
MergeManagerProvider getProvider() {
|
||||
MergeManagerProvider getProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
public boolean closeAllPrograms(boolean ignoreChanges) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean closeProgram() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean closeProgram(Program program, boolean ignoreChanges) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public DataTypeArchive[] getAllOpenDataTypeArchives() {
|
||||
DataTypeArchiveMergeManager archiveMergeManager = (DataTypeArchiveMergeManager)mergeManager;
|
||||
return new DataTypeArchive[] {
|
||||
archiveMergeManager.getDataTypeArchive(MergeConstants.RESULT),
|
||||
archiveMergeManager.getDataTypeArchive(MergeConstants.LATEST),
|
||||
archiveMergeManager.getDataTypeArchive(MergeConstants.MY),
|
||||
archiveMergeManager.getDataTypeArchive(MergeConstants.ORIGINAL)
|
||||
};
|
||||
}
|
||||
|
||||
public DataTypeArchive getCurrentDataTypeArchive() {
|
||||
return (DataTypeArchive)currentDomainObject;
|
||||
}
|
||||
|
||||
public Program getProgram(Address addr) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getSearchPriority(Program p) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean isVisible(Program program) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public Program openProgram(DomainFile domainFile) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Program openProgram(DomainFile df, int version) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Program openProgram(DomainFile domainFile, int version, int state) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void openProgram(Program program) {
|
||||
}
|
||||
|
||||
public void openProgram(Program program, boolean current) {
|
||||
}
|
||||
|
||||
public void openProgram(Program program, int state) {
|
||||
}
|
||||
|
||||
public void releaseProgram(Program program, Object persistentOwner) {
|
||||
}
|
||||
|
||||
public void setCurrentProgram(Program p) {
|
||||
}
|
||||
|
||||
public boolean setPersistentOwner(Program program, Object owner) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setSearchPriority(Program p, int priority) {
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ import ghidra.program.model.listing.Program;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.HIDDEN,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Program Merge Manager",
|
||||
description = "Manage merge of Programs",
|
||||
servicesProvided = { ProgramManager.class },
|
||||
|
@ -30,7 +30,7 @@ import ghidra.program.util.ProgramLocation;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Listing Merge",
|
||||
description = "Merge Panel for Listing",
|
||||
eventsConsumed = { ProgramLocationPluginEvent.class }
|
||||
@ -44,14 +44,14 @@ public class ListingMergePanelPlugin extends Plugin implements ProgramaticUseOnl
|
||||
* @param tool merge tool
|
||||
* @param mergePanel merge panel
|
||||
*/
|
||||
public ListingMergePanelPlugin(PluginTool tool, ListingMergePanel mergePanel) {
|
||||
super(tool);
|
||||
public ListingMergePanelPlugin(PluginTool tool, ListingMergePanel mergePanel) {
|
||||
super(tool);
|
||||
createProvider(mergePanel);
|
||||
firePluginEvent(new ProgramActivatedPluginEvent(this.getName(),
|
||||
mergePanel.getProgram(MergeConstants.RESULT)));
|
||||
createActions();
|
||||
}
|
||||
|
||||
|
||||
private void createActions() {
|
||||
ViewInstructionDetailsAction viewDetailsAction = new ViewInstructionDetailsAction(this);
|
||||
tool.addAction(viewDetailsAction);
|
||||
@ -60,17 +60,18 @@ public class ListingMergePanelPlugin extends Plugin implements ProgramaticUseOnl
|
||||
public ComponentProvider getProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see ghidra.framework.plugintool.Plugin#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void dispose() {
|
||||
public void dispose() {
|
||||
if (provider != null) {
|
||||
provider.dispose();
|
||||
firePluginEvent(new ProgramActivatedPluginEvent(this.getName(), null));
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDescription() {
|
||||
return "Listing Merge";
|
||||
}
|
||||
@ -84,19 +85,18 @@ public class ListingMergePanelPlugin extends Plugin implements ProgramaticUseOnl
|
||||
}
|
||||
|
||||
private void createProvider(ListingMergePanel mergePanel) {
|
||||
provider = new ListingMergePanelProvider(tool,this, getName(), mergePanel);
|
||||
provider = new ListingMergePanelProvider(tool, this, getName(), mergePanel);
|
||||
tool.addComponentProvider(provider, false);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void processEvent(PluginEvent event) {
|
||||
public void processEvent(PluginEvent event) {
|
||||
|
||||
if (event instanceof ProgramLocationPluginEvent) {
|
||||
ProgramLocationPluginEvent evt = (ProgramLocationPluginEvent)event;
|
||||
ProgramLocation location = evt.getLocation();
|
||||
ListingMergePanel mergePanel = (ListingMergePanel)provider.getComponent();
|
||||
mergePanel.goTo(location, true);
|
||||
}
|
||||
}
|
||||
if (event instanceof ProgramLocationPluginEvent) {
|
||||
ProgramLocationPluginEvent evt = (ProgramLocationPluginEvent) event;
|
||||
ProgramLocation location = evt.getLocation();
|
||||
ListingMergePanel mergePanel = (ListingMergePanel) provider.getComponent();
|
||||
mergePanel.goTo(location, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ import docking.action.MenuData;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Apply Module Algorithm to a folder or fragment",
|
||||
description = "This plugin applies the \"module\" algorithm "+
|
||||
" to a Folder or Fragment in a program tree. This algorithm "+
|
||||
|
@ -18,7 +18,6 @@ package ghidra.app.plugin.core.assembler;
|
||||
import docking.ActionContext;
|
||||
import ghidra.app.CorePluginPackage;
|
||||
import ghidra.app.context.ListingActionContext;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.app.plugin.ProgramPlugin;
|
||||
import ghidra.app.plugin.assembler.Assemblers;
|
||||
import ghidra.docking.settings.Settings;
|
||||
@ -40,7 +39,7 @@ import ghidra.program.model.mem.MemBuffer;
|
||||
* The API for instruction assembly is available from {@link Assemblers}. For data assembly, the API
|
||||
* is in {@link DataType#encodeRepresentation(String, MemBuffer, Settings, int)}.
|
||||
*/
|
||||
@PluginInfo(status = PluginStatus.RELEASED, packageName = CorePluginPackage.NAME, category = PluginCategoryNames.PATCHING, shortDescription = "Assembler", description = "This plugin provides functionality for assembly patching. " +
|
||||
@PluginInfo(status = PluginStatus.RELEASED, packageName = CorePluginPackage.NAME, category = "Patching", shortDescription = "Assembler", description = "This plugin provides functionality for assembly patching. " +
|
||||
"The assembler supports most processor languages also supported by the " +
|
||||
"disassembler. Depending on the particular processor, your mileage may vary. " +
|
||||
"We are in the process of testing and improving support for all our processors. " +
|
||||
|
@ -51,7 +51,7 @@ import ghidra.util.exception.NotFoundException;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Provides the block model service",
|
||||
description = "This plugin provides registration and distribution of basic-block "
|
||||
+ "and subroutine models via the block model service.",
|
||||
|
@ -49,7 +49,7 @@ import ghidra.util.task.*;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Clipboard Manager",
|
||||
description = "This plugin manages cut/copy/paste of labels, comments, formatted code, and byte strings to and from the system clipboard.",
|
||||
servicesProvided = { ClipboardService.class }
|
||||
|
@ -47,7 +47,7 @@ import ghidra.util.Swing;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.DIFF,
|
||||
category = PluginCategoryNames.CODE_VIEWER,
|
||||
shortDescription = "Compare Functions",
|
||||
description = "Allows users to compare two or more functions",
|
||||
servicesProvided = { FunctionComparisonService.class },
|
||||
|
@ -40,7 +40,7 @@ import ghidra.program.util.ProgramSelection;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Go To Service",
|
||||
description = "This plugin provides the service used by other plugins to " +
|
||||
"go to an address in the program, or to an address in another program." +
|
||||
@ -225,7 +225,8 @@ public final class GoToServicePlugin extends ProgramPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeHighlightProvider(ListingHighlightProvider highlightProvider, Program program) {
|
||||
public void removeHighlightProvider(ListingHighlightProvider highlightProvider,
|
||||
Program program) {
|
||||
CodeViewerService service = tool.getService(CodeViewerService.class);
|
||||
if (service != null) {
|
||||
service.removeHighlightProvider(highlightProvider, program);
|
||||
@ -233,7 +234,8 @@ public final class GoToServicePlugin extends ProgramPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHighlightProvider(ListingHighlightProvider highlightProvider, Program program) {
|
||||
public void setHighlightProvider(ListingHighlightProvider highlightProvider,
|
||||
Program program) {
|
||||
CodeViewerService service = tool.getService(CodeViewerService.class);
|
||||
if (service != null) {
|
||||
service.setHighlightProvider(highlightProvider, program);
|
||||
|
@ -24,7 +24,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Interpreter panel service",
|
||||
description = "Provides a generic interpreter connection and mates it to a panel"
|
||||
+ " which takes input from the user and displays output from the interpreter.",
|
||||
|
@ -29,7 +29,7 @@ import ghidra.util.HelpLocation;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Provides the marker display",
|
||||
description = "This plugin extends the code browser to include left and right marker" +
|
||||
"components. The left margin shows marks related to the address being shown at " +
|
||||
|
@ -18,8 +18,8 @@ package ghidra.app.plugin.core.misc;
|
||||
import docking.ActionContext;
|
||||
import docking.ComponentProvider;
|
||||
import docking.action.builder.ActionBuilder;
|
||||
import ghidra.app.CorePluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.main.UtilityPluginPackage;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -28,8 +28,8 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
*/
|
||||
@PluginInfo( //@formatter:off
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.MISC,
|
||||
packageName = UtilityPluginPackage.NAME,
|
||||
category = PluginCategoryNames.FRAMEWORK,
|
||||
shortDescription = "Provides generic actions for increasing/decreasing fonts.",
|
||||
description = "This plugin provides actions for increasing fonts used by component providers. "+
|
||||
"ComponentProviders can either override the \"changeFontSize()\" method or register a" +
|
||||
|
@ -39,7 +39,7 @@ import ghidra.util.exception.AssertException;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.MISC,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Generates recovery snapshot files",
|
||||
description = "Facilitates the periodic creation of recovery snapshot files. " +
|
||||
"In the event of a crash or application hang, these files may be used to " +
|
||||
|
@ -52,7 +52,7 @@ import docking.action.MenuData;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Rename Fragment",
|
||||
description = "Rename a fragment in the program tree viewer with either the " +
|
||||
"selected label within the fragment or with the minimum " +
|
||||
|
@ -54,7 +54,7 @@ import ghidra.util.task.*;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Sort Fragments within Module",
|
||||
description = "Plugin to sort Modules and Fragments within a selected Module. " +
|
||||
"Child Module folders are always name-sorted and placed " +
|
||||
|
@ -49,7 +49,7 @@ import ghidra.util.bean.opteditor.OptionsVetoException;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Tool State History",
|
||||
description = "This plugin maintains a history of tool states. "
|
||||
+ "It is used in conjunction with other plugins "
|
||||
|
@ -48,7 +48,7 @@ import ghidra.util.task.*;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Set Language",
|
||||
description = "This plugin provides the set language feature."
|
||||
)
|
||||
|
@ -57,7 +57,7 @@ import ghidra.util.task.TaskLauncher;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Manage open programs",
|
||||
description = "This plugin provides actions for opening and closing programs. It also " +
|
||||
"provides a service to allow plugins to open/close programs. This plugin is " +
|
||||
|
@ -15,6 +15,9 @@
|
||||
*/
|
||||
package ghidra.app.plugin.core.programtree;
|
||||
|
||||
import docking.ActionContext;
|
||||
import docking.action.DockingAction;
|
||||
import docking.action.MenuData;
|
||||
import ghidra.app.CorePluginPackage;
|
||||
import ghidra.app.cmd.module.ComplexityDepthModularizationCmd;
|
||||
import ghidra.app.cmd.module.DominanceModularizationCmd;
|
||||
@ -25,35 +28,30 @@ import ghidra.framework.plugintool.PluginInfo;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
import ghidra.util.HelpLocation;
|
||||
import docking.ActionContext;
|
||||
import docking.action.DockingAction;
|
||||
import docking.action.MenuData;
|
||||
|
||||
/**
|
||||
*
|
||||
* Provides actions for organizing the program tree based on various algorithms. Currently, there
|
||||
* are two algorithms:
|
||||
*
|
||||
* Dominance: organizes the functions in a program such that a function is in a subtree of another
|
||||
* function if all call paths to that function must past through the parent funciton.
|
||||
*
|
||||
* Complexity Depth: organizes the functions into "levels" from the bottom up. All leaf functions are
|
||||
* in the same lowest level (highest number, call it level N). All functions that only call leaf functions
|
||||
* are in the next higher level, N-1. Functions in the highest level (labeled level 0) are those furthest
|
||||
* from the leaves.
|
||||
*
|
||||
*/
|
||||
//@formatter:off
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Program Tree Modularization Plugin",
|
||||
description = "Provides actions for orgainizing a program tree into modules or fragments. " +
|
||||
"Currently there are two organizations, dominance and complexity depth",
|
||||
servicesRequired = { BlockModelService.class }
|
||||
)
|
||||
//@formatter:on
|
||||
/**
|
||||
* Provides actions for organizing the program tree based on various algorithms. Currently, there
|
||||
* are two algorithms:
|
||||
* <p>
|
||||
* Dominance: organizes the functions in a program such that a function is in a subtree of another
|
||||
* function if all call paths to that function must past through the parent function.
|
||||
* <p>
|
||||
* Complexity Depth: organizes the functions into "levels" from the bottom up. All leaf functions
|
||||
* are in the same lowest level (highest number, call it level N). All functions that only call
|
||||
* leaf functions are in the next higher level, N-1. Functions in the highest level (labeled level
|
||||
* 0) are those furthest from the leaves.
|
||||
*/
|
||||
public class ProgramTreeModularizationPlugin extends ProgramPlugin {
|
||||
|
||||
public ProgramTreeModularizationPlugin(PluginTool tool) {
|
||||
|
@ -55,7 +55,7 @@ import resources.Icons;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Show Program Tree Views",
|
||||
description = "This plugin shows a view for " +
|
||||
" each tree in the program. A tree can be organized into " +
|
||||
|
@ -43,7 +43,7 @@ import ghidra.util.HelpLocation;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TREE,
|
||||
category = PluginCategoryNames.PROGRAM_ORGANIZATION,
|
||||
shortDescription = "Selects addresses from Program Tree",
|
||||
description = "Allows the user to select code in the code browser from a selection" +
|
||||
" of nodes (modules and fragments) in the Program Tree.",
|
||||
|
@ -91,7 +91,7 @@ public class SymbolRowObject implements Comparable<SymbolRowObject> {
|
||||
|
||||
/**
|
||||
* The <code>AbstractSortedTableModel.EndOfChainComparator</code> makes it
|
||||
* neccessary to implement this method to avoid use of identity hash equality
|
||||
* necessary to implement this method to avoid use of identity hash equality
|
||||
* when two instances are otherwise equal.
|
||||
*/
|
||||
@Override
|
||||
|
@ -45,7 +45,7 @@ import ghidra.util.task.SwingUpdateManager;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Results table service",
|
||||
description = "Provides a generic results service that takes a list of information "
|
||||
+ "and displays the list to user in the form of a table",
|
||||
|
@ -33,10 +33,10 @@ import help.HelpService;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Show component information",
|
||||
description = "This plugin is a debug aid that displays " +
|
||||
"a table of information about the components in the application."
|
||||
description = "A debug aid that displays a table of information about the components in the " +
|
||||
"application."
|
||||
)
|
||||
//@formatter:on
|
||||
public class ComponentInfoPlugin extends Plugin {
|
||||
|
@ -33,7 +33,7 @@ import resources.Icons;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Show database tables",
|
||||
description = "This plugin is a debug aid that allows the user to browse database tables.",
|
||||
eventsConsumed = { ProgramActivatedPluginEvent.class }
|
||||
|
@ -35,7 +35,7 @@ import help.HelpService;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Displays domain object events",
|
||||
description = "This plugin provides a component to display domain object event " +
|
||||
"as they are generated. The maximum number of messages shown is " +
|
||||
|
@ -27,7 +27,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Show Domain Folder change notifications",
|
||||
description = "Displays active project domain folder change notifications",
|
||||
servicesRequired = { FrontEndService.class }
|
||||
|
@ -31,7 +31,7 @@ import help.HelpService;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Show plugin events",
|
||||
description = "This plugin is a debug aid that prints " +
|
||||
"plugin event information. It can also be used as a sample " +
|
||||
|
@ -56,7 +56,7 @@ import ghidra.util.xml.GenericXMLOutputter;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.MISC,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Generate Old Language File",
|
||||
description = "This plugin allows the user to generate an old-language XML " +
|
||||
"file from the current version of a loaded language. " +
|
||||
|
@ -26,7 +26,7 @@ import docking.*;
|
||||
import docking.action.DockingAction;
|
||||
import docking.action.MenuData;
|
||||
import docking.actions.SharedStubKeyBindingAction;
|
||||
import docking.help.*;
|
||||
import docking.help.HelpManager;
|
||||
import docking.tool.ToolConstants;
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
@ -45,9 +45,9 @@ import help.HelpService;
|
||||
*/
|
||||
//@formatter:off
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Write JavaHelp Info",
|
||||
description = "This plugin identifies " +
|
||||
"those plugin actions that do not have help associated with them. The file, " +
|
||||
|
@ -41,7 +41,7 @@ import ghidra.program.util.*;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Show Markers for Properties",
|
||||
description = "This plugin shows a list of properties in the program."+
|
||||
" For each property selected, navigation markers are displayed to indicate "+
|
||||
|
@ -40,7 +40,7 @@ import ghidra.util.Swing;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = WindowLocationPlugin.NAME,
|
||||
description = "Shows all known window and screen geometry"
|
||||
)
|
||||
|
@ -39,7 +39,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.TESTING,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Capture Screenshots",
|
||||
description = "Capture screen images and export to Portable Network Graphic (.PNG) format."
|
||||
)
|
||||
@ -84,7 +84,8 @@ public class ScreenshotPlugin extends ProgramPlugin {
|
||||
RenderedImage image = generateImage(activeComponent);
|
||||
|
||||
String componentName =
|
||||
((DockableComponent) activeComponent).getComponentWindowingPlaceholder().getName();
|
||||
((DockableComponent) activeComponent).getComponentWindowingPlaceholder()
|
||||
.getName();
|
||||
File file = getFile(componentName + ".png");
|
||||
|
||||
if (file != null) {
|
||||
@ -93,7 +94,8 @@ public class ScreenshotPlugin extends ProgramPlugin {
|
||||
}
|
||||
};
|
||||
captureActiveWindowAction.setAddToAllWindows(true);
|
||||
captureActiveWindowAction.setDescription("Takes a screenshot of the active component provider and exports it to PNG format.");
|
||||
captureActiveWindowAction.setDescription(
|
||||
"Takes a screenshot of the active component provider and exports it to PNG format.");
|
||||
captureActiveWindowAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_F11,
|
||||
InputEvent.ALT_DOWN_MASK));
|
||||
String group = "ScreenCapture";
|
||||
@ -118,7 +120,8 @@ public class ScreenshotPlugin extends ProgramPlugin {
|
||||
}
|
||||
};
|
||||
captureToolFrameAction.setAddToAllWindows(true);
|
||||
captureToolFrameAction.setDescription("Takes a screenshot of the active tool and exports it to PNG format.");
|
||||
captureToolFrameAction.setDescription(
|
||||
"Takes a screenshot of the active tool and exports it to PNG format.");
|
||||
captureToolFrameAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_F12,
|
||||
InputEvent.ALT_DOWN_MASK));
|
||||
captureToolFrameAction.setMenuBarData(new MenuData(new String[] { ToolConstants.MENU_TOOLS,
|
||||
|
@ -27,7 +27,7 @@ import ghidra.util.HelpLocation;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = UtilityPluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Runtime Information",
|
||||
description = "Plugin for displaying runtime information"
|
||||
)
|
||||
|
@ -19,7 +19,6 @@ import java.util.Iterator;
|
||||
|
||||
import ghidra.app.CorePluginPackage;
|
||||
import ghidra.app.events.*;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@ -27,20 +26,33 @@ import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.util.ProgramSelection;
|
||||
import ghidra.util.SystemUtilities;
|
||||
|
||||
//@formatter:off
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = "Byte Viewer",
|
||||
shortDescription = "Displays bytes in memory",
|
||||
description = "Provides a component for showing the bytes in memory. Additional plugins " +
|
||||
"provide capabilites for this plugin to show the bytes in various formats (e.g., hex, " +
|
||||
"octal, decimal). The hex format plugin is loaded by default when this plugin is loaded.",
|
||||
servicesRequired = {
|
||||
ProgramManager.class, GoToService.class, NavigationHistoryService.class,
|
||||
ClipboardService.class
|
||||
},
|
||||
eventsConsumed = {
|
||||
ProgramLocationPluginEvent.class, ProgramActivatedPluginEvent.class,
|
||||
ProgramSelectionPluginEvent.class, ProgramHighlightPluginEvent.class,
|
||||
ProgramClosedPluginEvent.class, ByteBlockChangePluginEvent.class
|
||||
},
|
||||
eventsProduced = {
|
||||
ProgramLocationPluginEvent.class, ProgramSelectionPluginEvent.class,
|
||||
ByteBlockChangePluginEvent.class
|
||||
}
|
||||
)
|
||||
//@formatter:on
|
||||
/**
|
||||
* Visible Plugin to show ByteBlock data in various formats.
|
||||
* Plugin to show ByteBlock data in various formats.
|
||||
*/
|
||||
@PluginInfo(status = PluginStatus.RELEASED, packageName = CorePluginPackage.NAME, category = PluginCategoryNames.BYTE_VIEWER, shortDescription = "Displays bytes in memory", description = "Provides a component for showing the bytes in memory. " +
|
||||
"Additional plugins provide capabilites for this plugin" +
|
||||
" to show the bytes in various formats (e.g., hex, octal, decimal)." +
|
||||
" The hex format plugin is loaded by default when this plugin is loaded.", servicesRequired = {
|
||||
ProgramManager.class, GoToService.class, NavigationHistoryService.class,
|
||||
ClipboardService.class, }, eventsConsumed = { ProgramLocationPluginEvent.class,
|
||||
ProgramActivatedPluginEvent.class, ProgramSelectionPluginEvent.class,
|
||||
ProgramHighlightPluginEvent.class, ProgramClosedPluginEvent.class,
|
||||
ByteBlockChangePluginEvent.class, }, eventsProduced = {
|
||||
ProgramLocationPluginEvent.class, ProgramSelectionPluginEvent.class,
|
||||
ByteBlockChangePluginEvent.class, })
|
||||
public class ByteViewerPlugin extends AbstractByteViewerPlugin<ProgramByteViewerComponentProvider> {
|
||||
|
||||
public ByteViewerPlugin(PluginTool tool) {
|
||||
|
@ -29,7 +29,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.DECOMPILER,
|
||||
category = PluginCategoryNames.ANALYSIS,
|
||||
shortDescription = "Data Type Hover",
|
||||
description = "Displays data type information in a tooltip as you hover over a data type name in the decompiler.",
|
||||
servicesProvided = { DecompilerHoverService.class }
|
||||
|
@ -29,7 +29,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.DECOMPILER,
|
||||
category = PluginCategoryNames.ANALYSIS,
|
||||
shortDescription = "Function Name Hover",
|
||||
description = "Pop-up display of the function prototype of the hovered-over function name in the decompiler",
|
||||
servicesProvided = { DecompilerHoverService.class }
|
||||
|
@ -29,7 +29,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.DECOMPILER,
|
||||
category = PluginCategoryNames.ANALYSIS,
|
||||
shortDescription = "Reference Hover",
|
||||
description = "Pop-up display of \"referred to\" code and data",
|
||||
servicesProvided = { DecompilerHoverService.class }
|
||||
|
@ -29,7 +29,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.DECOMPILER,
|
||||
category = PluginCategoryNames.ANALYSIS,
|
||||
shortDescription = "Scalar Value Hover",
|
||||
description = "Pop-up display of various interpretations of the hovered-over decompiler scalar",
|
||||
servicesProvided = { DecompilerHoverService.class }
|
||||
|
@ -63,7 +63,7 @@ import ghidra.util.task.TaskMonitor;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.STABLE,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.DIAGNOSTIC,
|
||||
shortDescription = "Function ID Debug",
|
||||
description = "This plugin is for debugging function identification libraries."
|
||||
)
|
||||
|
@ -50,7 +50,7 @@ import resources.Icons;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.INTERPRETERS,
|
||||
category = PluginCategoryNames.COMMON,
|
||||
shortDescription = "Python Interpreter",
|
||||
description = "Provides an interactive Python Interpreter that is tightly integrated with a loaded Ghidra program.",
|
||||
servicesRequired = { InterpreterPanelService.class },
|
||||
|
@ -45,7 +45,7 @@ import ghidra.util.Msg;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = CorePluginPackage.NAME,
|
||||
category = PluginCategoryNames.MISC,
|
||||
category = PluginCategoryNames.CODE_VIEWER,
|
||||
shortDescription = "Source Code Lookup Plugin",
|
||||
description = "Plugin to send requests to the development IDE to lookup symbols in source files.",
|
||||
servicesRequired = { EclipseIntegrationService.class },
|
||||
|
@ -15,26 +15,33 @@
|
||||
*/
|
||||
package ghidra.app.plugin;
|
||||
|
||||
import ghidra.framework.main.ApplicationLevelPlugin;
|
||||
import ghidra.framework.plugintool.util.PluginDescription;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
/**
|
||||
* A listing of commonly used {@link PluginDescription} category names.
|
||||
* <p>
|
||||
* Note - the Front End tool automatically include plugins that: 1) implement
|
||||
* {@link ApplicationLevelPlugin}, have the {@link PluginStatus#RELEASED}, and do not have the
|
||||
* {@link #EXAMPLES} category. If you wish to create an {@link ApplicationLevelPlugin} that is not
|
||||
* automatically included in the Front End, the easiest way to do that is to mark its status as
|
||||
* {@link PluginStatus#STABLE}.
|
||||
*/
|
||||
public interface PluginCategoryNames {
|
||||
String COMMON = GenericPluginCategoryNames.COMMON;
|
||||
String SUPPORT = GenericPluginCategoryNames.SUPPORT;
|
||||
String CODE_VIEWER = "Code Viewer";
|
||||
String BYTE_VIEWER = "Byte Viewer";
|
||||
String GRAPH = "Graph";
|
||||
String ANALYSIS = "Analysis";
|
||||
String NAVIGATION = "Navigation";
|
||||
String SEARCH = "Search";
|
||||
String TREE = "Program Tree";
|
||||
String TESTING = GenericPluginCategoryNames.TESTING;
|
||||
String DIAGNOSTIC = "Diagnostic";
|
||||
String DIFF = "Code Difference";
|
||||
String MISC = GenericPluginCategoryNames.MISC;
|
||||
String USER_ANNOTATION = "User Annotation";
|
||||
String EXAMPLES = GenericPluginCategoryNames.EXAMPLES;
|
||||
String SELECTION = "Selection";
|
||||
String INTERPRETERS = "Interpreters";
|
||||
String DEBUGGER = "Debugger";
|
||||
String PATCHING = "Patching";
|
||||
String DECOMPILER = "Decompiler";
|
||||
String UNMANAGED = "Unmanaged";
|
||||
|
||||
public String ANALYSIS = "Analysis";
|
||||
|
||||
// common to tools that open programs
|
||||
public String COMMON = "Common";
|
||||
public String CODE_VIEWER = "Code Viewer";
|
||||
public String DEBUGGER = "Debugger";
|
||||
public String DIAGNOSTIC = "Diagnostic";
|
||||
public String EXAMPLES = "Examples";
|
||||
public String FRAMEWORK = "Framework";
|
||||
public String GRAPH = "Graph";
|
||||
public String NAVIGATION = "Navigation";
|
||||
public String SEARCH = "Search";
|
||||
public String SELECTION = "Selection";
|
||||
public String PROGRAM_ORGANIZATION = "Program Organization";
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import ghidra.util.HelpLocation;
|
||||
@PluginInfo(
|
||||
status = PluginStatus.RELEASED,
|
||||
packageName = UtilityPluginPackage.NAME,
|
||||
category = PluginCategoryNames.SUPPORT,
|
||||
category = PluginCategoryNames.FRAMEWORK,
|
||||
shortDescription = "Manages themes for the Ghidra GUI",
|
||||
description = "Adds actions and options to manage Themes within Ghidra. " +
|
||||
"This plugin is available only in the Ghidra Project Window."
|
||||
|
@ -688,8 +688,8 @@ public class FrontEndPlugin extends Plugin
|
||||
connectionButton.setContentAreaFilled(false);
|
||||
connectionButton.setSelected(isConnected);
|
||||
connectionButton
|
||||
.setBorder(isConnected ? BorderFactory.createBevelBorder(BevelBorder.LOWERED)
|
||||
: BorderFactory.createBevelBorder(BevelBorder.RAISED));
|
||||
.setBorder(isConnected ? BorderFactory.createBevelBorder(BevelBorder.LOWERED)
|
||||
: BorderFactory.createBevelBorder(BevelBorder.RAISED));
|
||||
connectionIconPanel.add(connectionButton);
|
||||
if (isConnected) {
|
||||
|
||||
@ -701,7 +701,7 @@ public class FrontEndPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
repositoryLabel
|
||||
.setText("Project Repository: " + repository.getName() + getAccessString(user));
|
||||
.setText("Project Repository: " + repository.getName() + getAccessString(user));
|
||||
|
||||
String serverName = repository.getServerInfo().getServerName();
|
||||
connectionButton.setToolTipText(
|
||||
@ -973,7 +973,7 @@ public class FrontEndPlugin extends Plugin
|
||||
};
|
||||
renameToolAction.setPopupMenuData(new MenuData(new String[] { "Rename..." }, "tool"));
|
||||
renameToolAction
|
||||
.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Rename Tool"));
|
||||
.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Rename Tool"));
|
||||
|
||||
propertiesAction = new ToolButtonAction(PROPERTIES_ACTION_NAME) {
|
||||
@Override
|
||||
@ -997,7 +997,7 @@ public class FrontEndPlugin extends Plugin
|
||||
new MenuData(new String[] { "Configure Plugins..." }, "zproperties"));
|
||||
|
||||
propertiesAction
|
||||
.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Configure_Tool"));
|
||||
.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Configure_Tool"));
|
||||
|
||||
tool.addLocalAction(frontEndProvider, exportToolAction);
|
||||
tool.addLocalAction(frontEndProvider, renameToolAction);
|
||||
|
@ -43,7 +43,7 @@ import docking.util.image.ToolIconURL;
|
||||
import docking.widgets.OptionDialog;
|
||||
import generic.jar.ResourceFile;
|
||||
import generic.util.WindowUtilities;
|
||||
import ghidra.app.plugin.GenericPluginCategoryNames;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.app.util.GenericHelpTopics;
|
||||
import ghidra.framework.Application;
|
||||
import ghidra.framework.LoggingInitialization;
|
||||
@ -279,7 +279,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener {
|
||||
|
||||
/**
|
||||
* Add those plugins that implement the ApplicationLevelPlugin interface and have a
|
||||
* RELEASED status and not (example || testing) category.
|
||||
* RELEASED status and not example category.
|
||||
*/
|
||||
private void installDefaultApplicationLevelPlugins() {
|
||||
List<String> classNames = new ArrayList<>();
|
||||
@ -288,8 +288,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener {
|
||||
|
||||
PluginDescription pd = PluginDescription.getPluginDescription(pluginClass);
|
||||
String category = pd.getCategory();
|
||||
boolean isBadCategory = category.equals(GenericPluginCategoryNames.EXAMPLES) ||
|
||||
category.equals(GenericPluginCategoryNames.TESTING);
|
||||
boolean isBadCategory = category.equals(PluginCategoryNames.EXAMPLES);
|
||||
if (pd.getStatus() == PluginStatus.RELEASED && !isBadCategory) {
|
||||
classNames.add(pluginClass.getName());
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ public class PluginDescription implements Comparable<PluginDescription> {
|
||||
|
||||
private static HashMap<Class<? extends Plugin>, PluginDescription> CACHE = new HashMap<>();
|
||||
private static final String DOTCLASS_EXT = ".class";
|
||||
private static final String NO_CATEGORY = "NO_CATEGORY";
|
||||
|
||||
private final Class<? extends Plugin> pluginClass;
|
||||
private final String name;
|
||||
@ -370,7 +371,7 @@ public class PluginDescription implements Comparable<PluginDescription> {
|
||||
*/
|
||||
private static PluginDescription createDefaultPluginDescription(Class<? extends Plugin> c) {
|
||||
return new PluginDescription(c, MiscellaneousPluginPackage.NAME,
|
||||
PluginCategoryNames.UNMANAGED, null, null, PluginStatus.UNSTABLE, false,
|
||||
NO_CATEGORY, null, null, PluginStatus.UNSTABLE, false,
|
||||
Collections.emptyList(), Collections.emptyList(), Collections.emptyList(),
|
||||
Collections.emptyList());
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = { CircularServiceA.class },
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = CircularServiceB.class,
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -33,7 +32,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesRequired = { DiamondServiceB.class, DiamondServiceC.class} )
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -33,7 +32,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = DiamondServiceB.class,
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -33,7 +32,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = DiamondServiceC.class,
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -33,7 +32,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = DiamondServiceD.class)
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin" )
|
||||
//@formatter:on
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesRequired = { InitFailServiceB.class } )
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = { InitFailServiceB.class } )
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin")
|
||||
//@formatter:on
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -26,7 +25,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin")
|
||||
//@formatter:on
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -27,7 +26,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesRequired = { MissingDepServiceB.class } )
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -27,7 +26,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin",
|
||||
description = "Test plugin",
|
||||
servicesProvided = MissingDepServiceB.class)
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -28,7 +27,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
*/
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin name collision",
|
||||
description = "Test plugin name collision.")
|
||||
//@formatter:on
|
||||
|
@ -16,7 +16,6 @@
|
||||
package ghidra.framework.plugintool.testplugins.secondconflict;
|
||||
|
||||
import ghidra.app.DeveloperPluginPackage;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
||||
@ -28,7 +27,7 @@ import ghidra.framework.plugintool.util.PluginStatus;
|
||||
//@formatter:off
|
||||
@PluginInfo(status = PluginStatus.HIDDEN,
|
||||
packageName = DeveloperPluginPackage.NAME,
|
||||
category = PluginCategoryNames.UNMANAGED,
|
||||
category = "NONE",
|
||||
shortDescription = "Test plugin name collision",
|
||||
description = "Test plugin name collision.")
|
||||
//@formatter:on
|
||||
|
Loading…
Reference in New Issue
Block a user