GP-1981 - Theming - Base Module

This commit is contained in:
dragonmacher 2022-09-28 19:09:05 -04:00 committed by ghidragon
parent dd31ff47a2
commit 0971c0088c
228 changed files with 1848 additions and 1694 deletions

View File

@ -21,7 +21,7 @@ import java.util.*;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReadWriteLock;
import javax.swing.ImageIcon; import javax.swing.Icon;
import db.DBHandle; import db.DBHandle;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;
@ -236,7 +236,7 @@ public class DBTraceBookmarkManager extends AbstractDBTraceSpaceBasedManager<DBT
} }
@Override @Override
public synchronized DBTraceBookmarkType defineBookmarkType(String typeName, ImageIcon icon, public synchronized DBTraceBookmarkType defineBookmarkType(String typeName, Icon icon,
Color color, int priority) { Color color, int priority) {
DBTraceBookmarkType type; DBTraceBookmarkType type;
synchronized (this) { synchronized (this) {

View File

@ -18,6 +18,7 @@ package ghidra.trace.database.bookmark;
import java.awt.Color; import java.awt.Color;
import java.util.*; import java.util.*;
import javax.swing.Icon;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import ghidra.trace.model.bookmark.TraceBookmark; import ghidra.trace.model.bookmark.TraceBookmark;
@ -33,14 +34,14 @@ public class DBTraceBookmarkType implements TraceBookmarkType {
protected final DBTraceBookmarkManager manager; protected final DBTraceBookmarkManager manager;
protected final String name; protected final String name;
protected ImageIcon icon; protected Icon icon;
protected Color color; protected Color color;
protected int priority; protected int priority;
protected final int id = nextId(); protected final int id = nextId();
protected final Collection<TraceBookmark> bookmarkView; protected final Collection<TraceBookmark> bookmarkView;
public DBTraceBookmarkType(DBTraceBookmarkManager manager, String name, ImageIcon icon, public DBTraceBookmarkType(DBTraceBookmarkManager manager, String name, Icon icon,
Color color, int priority) { Color color, int priority) {
this.manager = manager; this.manager = manager;
this.name = name; this.name = name;
@ -62,7 +63,7 @@ public class DBTraceBookmarkType implements TraceBookmarkType {
} }
@Override @Override
public ImageIcon getIcon() { public Icon getIcon() {
return icon; return icon;
} }

View File

@ -19,7 +19,7 @@ import java.awt.Color;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import javax.swing.ImageIcon; import javax.swing.Icon;
import org.apache.commons.collections4.IteratorUtils; import org.apache.commons.collections4.IteratorUtils;
@ -52,7 +52,7 @@ public class DBTraceProgramViewBookmarkManager implements TraceProgramViewBookma
} }
@Override @Override
public BookmarkType defineType(String type, ImageIcon icon, Color color, int priority) { public BookmarkType defineType(String type, Icon icon, Color color, int priority) {
return bookmarkManager.defineBookmarkType(type, icon, color, priority); return bookmarkManager.defineBookmarkType(type, icon, color, priority);
} }
@ -284,11 +284,11 @@ public class DBTraceProgramViewBookmarkManager implements TraceProgramViewBookma
* {@link IteratorUtils#filteredIterator(Iterator, org.apache.commons.collections4.Predicate)}. * {@link IteratorUtils#filteredIterator(Iterator, org.apache.commons.collections4.Predicate)}.
* *
* This one understands that the predicate will be testing things of the (possibly * This one understands that the predicate will be testing things of the (possibly
* more-specific) type of elements in the original iterator, not thatof the returned iterator. * more-specific) type of elements in the original iterator, not that of the returned iterator.
* *
* @param it * @param it the iterator
* @param predicate * @param predicate the predicate
* @return * @return the iterator
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected static <T, U extends T> Iterator<T> filteredIterator(Iterator<U> it, protected static <T, U extends T> Iterator<T> filteredIterator(Iterator<U> it,

View File

@ -18,7 +18,7 @@ package ghidra.trace.model.bookmark;
import java.awt.Color; import java.awt.Color;
import java.util.Collection; import java.util.Collection;
import javax.swing.ImageIcon; import javax.swing.Icon;
import ghidra.program.model.address.AddressSpace; import ghidra.program.model.address.AddressSpace;
import ghidra.trace.model.stack.TraceStackFrame; import ghidra.trace.model.stack.TraceStackFrame;
@ -45,7 +45,7 @@ public interface TraceBookmarkManager extends TraceBookmarkOperations {
* the same location * the same location
* @return the newly-defined type * @return the newly-defined type
*/ */
TraceBookmarkType defineBookmarkType(String name, ImageIcon icon, Color color, int priority); TraceBookmarkType defineBookmarkType(String name, Icon icon, Color color, int priority);
/** /**
* Get the defined bookmark types. * Get the defined bookmark types.

View File

@ -16,6 +16,7 @@ data/ElfFunctionsThatDoNotReturn||GHIDRA||||END|
data/ExtensionPoint.manifest||GHIDRA||||END| data/ExtensionPoint.manifest||GHIDRA||||END|
data/MachOFunctionsThatDoNotReturn||GHIDRA||||END| data/MachOFunctionsThatDoNotReturn||GHIDRA||||END|
data/PEFunctionsThatDoNotReturn||GHIDRA||||END| data/PEFunctionsThatDoNotReturn||GHIDRA||||END|
data/base.icons.theme.properties||GHIDRA||||END|
data/base.listing.theme.properties||GHIDRA||||END| data/base.listing.theme.properties||GHIDRA||||END|
data/base.programgraph.theme.properties||GHIDRA||||END| data/base.programgraph.theme.properties||GHIDRA||||END|
data/base.theme.properties||GHIDRA||||END| data/base.theme.properties||GHIDRA||||END|
@ -1101,6 +1102,7 @@ src/main/resources/images/mem_chip3.png||GHIDRA||reviewed||END|
src/main/resources/images/memory16.gif||GHIDRA||||END| src/main/resources/images/memory16.gif||GHIDRA||||END|
src/main/resources/images/menu16.gif||GHIDRA||||END| src/main/resources/images/menu16.gif||GHIDRA||||END|
src/main/resources/images/move.png||GHIDRA||||END| src/main/resources/images/move.png||GHIDRA||||END|
src/main/resources/images/no_small.png||GHIDRA||||END|
src/main/resources/images/notF.gif||GHIDRA||||END| src/main/resources/images/notF.gif||GHIDRA||||END|
src/main/resources/images/notes.gif||GHIDRA||||END| src/main/resources/images/notes.gif||GHIDRA||||END|
src/main/resources/images/nuvola/16x16/cdimage.png||Nuvola Icons - LGPL 2.1|||Nuvola icon set|END| src/main/resources/images/nuvola/16x16/cdimage.png||Nuvola Icons - LGPL 2.1|||Nuvola icon set|END|

View File

@ -0,0 +1,399 @@
[Defaults]
icon.base.delete = icon.delete
icon.base.plus = icon.add
icon.base.edit.bytes = editbytes.gif
icon.base.pinned = pin.png
icon.base.hover.off = hoverOff.gif
icon.base.hover.on = hoverOn.gif
icon.base.lock = lock.gif
icon.base.unlock = unlock.gif
icon.base.search.marker = searchm_obj.gif
icon.base.application.home = GhidraIcon16.png
icon.base.application.16 = GhidraIcon16.png
icon.base.application.24 = GhidraIcon24.png
icon.base.application.32 = GhidraIcon32.png
icon.base.application.40 = GhidraIcon40.png
icon.base.application.48 = GhidraIcon48.png
icon.base.application.64 = GhidraIcon64.png
icon.base.application.128 = GhidraIcon128.png
icon.base.application.256 = GhidraIcon256.png
icon.provider.clone = camera-photo.png
icon.plugin.datatypes.built.in = package_development.png
icon.plugin.datatypes.built.in.disabled = package_development.png [disabled]
icon.plugin.datatypes.default = defaultDt.gif
icon.plugin.datatypes.default.disabled = disabledCode.gif
icon.plugin.datatypes.enum = enum.png
icon.plugin.datatypes.pointer = fingerPointer.png
icon.plugin.datatypes.function = functionDef.png
icon.plugin.datatypes.union = cUnion.png
icon.plugin.datatypes.typedef = typedef.png
icon.plugin.datatypes.structure = cstruct.png
icon.plugin.assembler.question = question_zero.png
icon.plugin.bookmark.add = icon.check
icon.plugin.bookmark.delete = icon.base.delete
icon.plugin.bookmark.select = text_align_justify.png
icon.plugin.bookmark.type.note = notes.gif
icon.plugin.bookmark.type.info = icon.information
icon.plugin.bookmark.type.warning = icon.warning
icon.plugin.bookmark.type.error = icon.base.delete
icon.plugin.bookmark.type.analysis = applications-system.png
icon.plugin.bookmark.type.default = unknown.gif
icon.plugin.calltree.provider =
icon.plugin.calltree.function = FunctionScope.gif
icon.plugin.calltree.recursive = arrow_rotate_clockwise.png
icon.plugin.calltree.refresh = icon.refresh
icon.plugin.calltree.refresh.not.needed = icon.plugin.calltree.refresh [disabled]
icon.plugin.calltree.filter.duplicates = application_double.png
icon.plugin.calltree.filter.select.source = text_align_justify.png
icon.plugin.calltree.node.dead.end = stopNode.png
icon.plugin.calltree.node.external = package.png
icon.plugin.checksum.compute = icon.refresh
icon.plugin.checksum.select = NextSelectionBlock16.gif
icon.plugin.checksum.show.hex = hexData.png
icon.plugin.checksum.xor = xor.png
icon.plugin.checksum.carry = carry.png
icon.plugin.checksum.ones.complement = onesComplement.png
icon.plugin.checksum.twos.complement = twosComplement.png
icon.plugin.clipboard.copy = icon.copy
icon.plugin.clipboard.paste = icon.paste
icon.plugin.codebrowser.cursor.location = cursor_arrow_flipped.gif
icon.plugin.codebrowser.cursor.marker = searchm_obj.gif
icon.plugin.codebrowser.format.collapse =field.header.up.png
icon.plugin.codebrowser.format.expand = field.header.down.png
icon.plugin.codebrowser.hover.off = icon.base.hover.off
icon.plugin.codebrowser.hover.on = icon.base.hover.on
icon.plugin.codebrowser.provider = Browser.gif
icon.plugin.codebrowser.mark.and.select.armed = MarkSelection.png {media-playback-start.png[size(12,12)][move(4,4)]}
icon.plugin.codebrowser.mark.and.select.unarmed = MarkSelection.png {media-playback-stop.png[size(12,12)][move(4,4)]}
icon.plugin.composite.editor.provider = accessories-text-editor.png
icon.plugin.composite.editor.provider.structure = icon.plugin.datatypes.structure
icon.plugin.composite.editor.provider.union = cUnion.png
icon.plugin.composite.editor.apply = disk.png
icon.plugin.composite.editor.array = Array.png
icon.plugin.composite.editor.bit.field.dialog.add = icon.base.plus
icon.plugin.composite.editor.bit.field.dialog.delete = icon.base.delete
icon.plugin.composite.editor.bit.field.dialog.edit = move.png
icon.plugin.composite.editor.bit.field.editor.decrement = Minus.png
icon.plugin.composite.editor.bit.field.editor.increment = icon.base.plus
icon.plugin.composite.editor.clear = icon.clear
icon.plugin.composite.editor.create = icon.plugin.datatypes.structure
icon.plugin.composite.editor.delete = icon.base.delete
icon.plugin.composite.editor.duplicate = DuplicateData.png
icon.plugin.composite.editor.duplicate.multiple = MultiDuplicateData.png
icon.plugin.composite.editor.insert.undefined = icon.base.plus
icon.plugin.composite.editor.move.down = down.png
icon.plugin.composite.editor.move.up = up.png
icon.plugin.composite.editor.search.next = go-down.tango.16.png [size(16,16)]
icon.plugin.composite.editor.search.previous = go-up.tango.16.png [size(16,16)]
icon.plugin.composite.editor.show.type = icon.home
icon.plugin.composite.editor.unpackage = Unpackage.gif
icon.plugin.enum.editor.provider = icon.plugin.datatypes.enum
icon.plugin.enum.editor.add = icon.base.plus
icon.plugin.enum.editor.apply = icon.save
icon.plugin.enum.editor.delete = icon.base.delete
icon.plugin.enum.editor.home = icon.home
icon.plugin.console.provider = monitor.png
icon.plugin.console.clear = icon.clear
icon.plugin.console.scroll.lock = lock.png
icon.plugin.datatypes.provider = dataTypes.png
icon.plugin.datatypes.commit.single.type = smallRightArrow.png
icon.plugin.datatypes.associate.single.type = smallLeftArrow.png
icon.plugin.datatypes.conflict.mode.rename.and.add = conflictRename.png
icon.plugin.datatypes.conflict.mode.use.existing = conflictKeep.png
icon.plugin.datatypes.conflict.mode.replace.existing = conflictReplace.png
icon.plugin.datatypes.conflict.mode.replace.or.rename = conflictReplaceOrRename.png
icon.plugin.datatypes.filter.arrays.off = Array.png
icon.plugin.datatypes.filter.arrays.on = FilterArrays.png
icon.plugin.datatypes.filter.pointers.off = fingerPointer.png
icon.plugin.datatypes.filter.pointers.on = FilterPointers.png
icon.plugin.datatypes.archive.built.in.closed = closedBookBrown.png
icon.plugin.datatypes.archive.built.in.open = openBookBrown.png
icon.plugin.datatypes.archive.file.closed = closedBookGreen.png
icon.plugin.datatypes.archive.file.open = openBookGreen.png
icon.plugin.datatypes.archive.invalid =closedFolderInvalid.png
icon.plugin.datatypes.archive.program.closed = closedBookRed.png
icon.plugin.datatypes.archive.program.open = openBookRed.png
icon.plugin.datatypes.archive.project.closed = closedBookBlue.png
icon.plugin.datatypes.archive.project.open = openBookBlue.png
icon.plugin.datatypes.tree.conflict = doubleArrow.png
icon.plugin.datatypes.tree.change.local = smallRightArrow.png
icon.plugin.datatypes.tree.change.source = smallLeftArrow.png
icon.plugin.datatypes.tree.missing = redQuestionMark.png
icon.plugin.datatypes.tree.node.archive.file.checked.out = icon.check
icon.plugin.datatypes.tree.node.archive.file.checked.out.exclusive = checkex.png
icon.plugin.datatypes.tree.node.archive.file.checked.out.not.latest = checkNotLatest.gif
icon.plugin.datatypes.tree.node.archive.file.hijacked = small_hijack.gif
icon.plugin.datatypes.tree.node.archive.file.read.only = user-busy.png [size(10,10)]
icon.plugin.datatypes.util.root = BookShelf.png
icon.plugin.datatypes.util.open.root = BookShelfOpen.png
icon.plugin.datatypes.util.open.archive = openFolderArchive.png
icon.plugin.datatypes.util.open.folder = openFolder.png
icon.plugin.datatypes.util.open.folder.disabled = disabledOpenFolder.png
icon.plugin.datatypes.util.open.folder.locked = openFolderCheckedOut.png
icon.plugin.datatypes.util.closed.archive = closedFolderArchive.png
icon.plugin.datatypes.util.closed.folder = closedFolder.png
icon.plugin.datatypes.util.closed.folder.disabled = disabledClosedFolder.png
icon.plugin.datatypes.util.closed.folder.locked = closedFolderCheckedOut.png
icon.plugin.datatypes.util.favorite = emblem-favorite.png
icon.plugin.datatypes.util.favorite.disabled = emblem-favorite.png [disabled]
icon.plugin.datawindow.provider = dataW.gif
icon.plugin.functiontags.add = 2rightarrow.png [size(16,16)]
icon.plugin.functiontags.remove = 2leftarrow.png [size(16,16)]
icon.plugin.functioncompare.new = page_white_c.png {bullet_star.png [size(16,16)][move(4,-4)]}
icon.plugin.functioncompare.function.next = arrow_down.png [move(3,1)] {FunctionScope.gif [move(-5,-2)]}
icon.plugin.functioncompare.function.previous = arrow_up.png [move(3,1)] {FunctionScope.gif [move(-5,-2)]}
icon.plugin.functioncompare.function.remove = edit-delete.png [move(3,3)] {FunctionScope.gif [move(-5,-2)]}
icon.plugin.functioncompare.open.function.table = page_white_c.png {icon.add [size(10,10)][move(10,10)]}
icon.plugin.functioncompare.scroll.lock = icon.base.lock
icon.plugin.functioncompare.scroll.unlock = icon.base.unlock
icon.plugin.functionwindow.provider = functions.gif
icon.plugin.instructiontable.address = DOSA_A.png
icon.plugin.instructiontable.scalar = DOSA_S.png
icon.plugin.instructiontable.operand = DOSA_O.png
icon.plugin.instructiontable.undefined = DOSA_D.png
icon.plugin.instructiontable.manual.entry = icon.base.edit.bytes
icon.plugin.instructiontable.binary = binaryData.gif
icon.plugin.instructiontable.hex = hexData.png
icon.plugin.interpreter.provider = monitor.png
icon.plugin.locationreferences.highlight = tag_yellow.png
icon.plugin.memorymap.provider = memory16.gif
icon.plugin.memorymap.add = icon.add
icon.plugin.memorymap.move = move.png
icon.plugin.memorymap.split = verticalSplit.png
icon.plugin.memorymap.expand.up = icon.toggle.collapse
icon.plugin.memorymap.expand.down = icon.toggle.expand
icon.plugin.memorymap.merge = Merge.png
icon.plugin.memorymap.delete = icon.delete
icon.plugin.memorymap.image.base = house.png
icon.plugin.merge = Merge.png
icon.plugin.merge.changed = changed16.gif
icon.plugin.merge.conflict.collapse = icon.toggle.collapse
icon.plugin.merge.conflict.expand = icon.toggle.expand
icon.plugin.merge.conflict.lock = lock.gif
icon.plugin.merge.conflict.unlock = unlock.gif
icon.plugin.merge.status.pending = bullet_green.png
icon.plugin.merge.status.in.progress = right.png
icon.plugin.merge.status.complete = checkmark_green.gif
icon.plugin.myprogramchanges.merge = vcMerge.png
icon.plugin.myprogramchanges.checkin = vcCheckIn.png
icon.plugin.navigation.bookmark = B.gif [size(16,16)]
icon.plugin.navigation.bookmark.analysis = applications-system.png
icon.plugin.navigation.bookmark.error = icon.error
icon.plugin.navigation.bookmark.info = icon.information
icon.plugin.navigation.bookmark.note = notes.gif
icon.plugin.navigation.bookmark.warning = icon.warning
icon.plugin.navigation.bookmark.unknown = unknown.gif
icon.plugin.navigation.bytes = V.png
icon.plugin.navigation.data = D.gif
icon.plugin.navigation.function = F.gif
icon.plugin.navigation.instruction = I.gif
icon.plugin.navigation.label = L.gif
icon.plugin.navigation.undefined = U.gif
icon.plugin.navigation.highlight.range.next = NextHighlightBlock16.gif
icon.plugin.navigation.highlight.range.previous = PreviousHighlightBlock16.gif
icon.plugin.navigation.selection.range.next = NextSelectionBlock16.gif
icon.plugin.navigation.selection.range.previous = PreviousSelectionBlock16.gif
icon.plugin.navigation.location.next = icon.right
icon.plugin.navigation.location.previous = icon.left
icon.plugin.bundlemanager.disable = media-playback-stop.png
icon.plugin.bundlemanager.enable = media-playback-start.png
icon.plugin.overview.provider = x-office-document-template.png
icon.plugin.programmanager.empty.small = empty8x16.png
icon.plugin.programmanager.close = x.gif
icon.plugin.programmanager.close.highlight = pinkX.gif
icon.plugin.programmanager.list = VCRFastForward.gif
icon.plugin.programmanager.transient = link.png
icon.plugin.programmanager.busy = icon.base.edit.bytes
icon.plugin.programtree.docs = openBookBlue.png
icon.plugin.programtree.fragment = codeNotInView.gif
icon.plugin.programtree.fragment.empty = emptyFragment.gif
icon.plugin.programtree.fragment.viewed = codeInView.gif
icon.plugin.programtree.fragment.viewed.empty = emptyFragmentInView.gif
icon.plugin.programtree.fragment.closed.folder = closedFolderInView.png
icon.plugin.programtree.fragment.open.folder = openFolderInView.png
icon.plugin.programtree.fragment.viewed.closed.folder.with.description = closedDescendantsInView.png
icon.plugin.programtree.closed.folder = closedFolder.png
icon.plugin.programtree.open.folder = openFolder.png
icon.plugin.programtree.open.tree = icon.folder.open
icon.plugin.programtree.new.tree = layout_add.png
icon.plugin.programtree.drag.copy = dragMoveCursor.gif
icon.plugin.programtree.drag.move = dragCopyCursor.gif
icon.plugin.reachability.provider = function_graph_curvey.png [rotate(90)]
icon.plugin.register = registerIcon.png
icon.plugin.register.group = registerGroup.png
icon.plugin.register.provider = icon.plugin.register.group
icon.plugin.scalartable.provider = dataW.gif
icon.plugin.scriptmanager.provider = play.png
icon.plugin.scriptmanager.run = play.png
icon.plugin.scriptmanager.run.again = play_again.png
icon.plugin.scriptmanager.edit = accessories-text-editor.png
icon.plugin.scriptmanager.edit.eclipse = eclipse.png
icon.plugin.scriptmanager.keybinding = key.png
icon.plugin.scriptmanager.delete = icon.delete
icon.plugin.scriptmanager.rename = icon.rename
icon.plugin.scriptmanager.new = script_add.png
icon.plugin.scriptmanager.manage = text_list_bullets.png
icon.plugin.scriptmanager.api = red-cross.png
icon.plugin.stringtable.provider = kmessedwords.png
icon.plugin.stringtable.defined = font.png
icon.plugin.stringtable.defined.partial = dialog-warning.png
icon.plugin.stringtable.undefined = magnifier.png
icon.plugin.stringtable.words = view-filter.png
icon.plugin.stringtable.conflicts = dialog-warning_red.png
icon.plugin.symboltree.provider = sitemap_color.png
icon.plugin.symboltree.goto = icon.base.search.marker
icon.plugin.symboltree.set.external = icon.base.edit.bytes
icon.plugin.symboltree.node.root = bullet_green.png
icon.plugin.symboltree.node.class = class.png
icon.plugin.symboltree.node.code = label.png
icon.plugin.symboltree.node.code.pinned = icon.base.pinned
icon.plugin.symboltree.node.code.external = ExternalData.gif
icon.plugin.symboltree.node.function = FunctionScope.gif
icon.plugin.symboltree.node.function.external = ExternalFunction.gif
icon.plugin.symboltree.node.function.thunk = ThunkFunction.gif
icon.plugin.symboltree.node.library = package.png
icon.plugin.symboltree.node.local.variable = LocalVariable.gif
icon.plugin.symboltree.node.parameter = Parameter.gif
icon.plugin.symboltree.node.namespace = Namespace.gif
icon.plugin.symboltree.node.organization.closed = closedFolderGroup.png
icon.plugin.symboltree.node.organization.open = openFolderGroup.png
icon.plugin.symboltree.node.category.classes.closed = closedFolderClasses.png
icon.plugin.symboltree.node.category.classes.open = openFolderClasses.png
icon.plugin.symboltree.node.category.function.closed = closedFolderFunctions.png
icon.plugin.symboltree.node.category.function.open = openFolderFunctions.png
icon.plugin.symboltree.node.category.exports.closed = closedFolder.png
icon.plugin.symboltree.node.category.exports.open = openFolder.png
icon.plugin.symboltree.node.category.imports.closed = closedFolderExternals.png
icon.plugin.symboltree.node.category.imports.open = openFolderExternals.png
icon.plugin.symboltree.node.category.label.closed = closedFolderLabels.png
icon.plugin.symboltree.node.category.label.open = openFolderLabels.png
icon.plugin.symboltree.node.category.namespace.closed = closedFolderNamespaces.png
icon.plugin.symboltree.node.category.namespace.open = openFolderNamespaces.png
icon.plugin.symboltree.node.group.folder.closed = closedFolderGroup.png
icon.plugin.symboltree.node.group.folder.open = openFolderGroup.png
icon.plugin.symboltable.provider = table.png
icon.plugin.symboltable.references.to =references_to.gif
icon.plugin.symboltable.instructions.from = I.gif
icon.plugin.symboltable.data.from = D.gif
icon.plugin.symboltable.referencetable.provider = table_go.png
icon.plugin.table.service = magnifier.png
icon.plugin.table.service.marker = icon.base.search.marker
icon.plugin.table.delete.row = table_delete.png
icon.plugin.totd.provider = help-hint.png
icon.plugin.viewstrings.provider = dataW.gif
icon.plugin.debug.dbviewer.provider = zoom.png
icon.plugin.debug.domaineventviewer.provider = monitor.png
icon.plugin.debug.propertymanager.provider = document-properties.png
icon.plugin.debug.propertymanager.marker = searchm_pink.gif
icon.plugin.fsbrowser.copy = icon.copy
icon.plugin.fsbrowser.cut = icon.cut
icon.plugin.fsbrowser.delete = page_delete.png
icon.plugin.fsbrowser.font = icon.font
icon.plugin.fsbrowser.locked = icon.base.lock
icon.plugin.fsbrowser.new = page_add.png
icon.plugin.fsbrowser.paste = icon.paste
icon.plugin.fsbrowser.redo = icon.redo
icon.plugin.fsbrowser.rename = icon.rename
icon.plugin.fsbrowser.refresh = icon.refresh
icon.plugin.fsbrowser.save = icon.save
icon.plugin.fsbrowser.save.as = icon.save.as
icon.plugin.fsbrowser.undo = icon.undo
icon.plugin.fsbrowser.unlocked = icon.base.unlock
icon.plugin.fsbrowser.close = images/famfamfam_silk_icons_v013/door.png
icon.plugin.fsbrowser.collapse.all = images/famfamfam_silk_icons_v013/arrow_in.png
icon.plugin.fsbrowser.compress = images/famfamfam_silk_icons_v013/compress.png
icon.plugin.fsbrowser.create.firmware = media-flash.png
icon.plugin.fsbrowser.expand.all = images/famfamfam_silk_icons_v013/arrow_inout.png
icon.plugin.fsbrowser.extract = package_green.png
icon.plugin.fsbrowser.info = icon.information
icon.plugin.fsbrowser.open = images/famfamfam_silk_icons_v013/door_open.png
icon.plugin.fsbrowser.open.as.binary = images/famfamfam_silk_icons_v013/controller.png
icon.plugin.fsbrowser.open.in.listing = images/famfamfam_silk_icons_v013/folder_table.png
icon.plugin.fsbrowser.open.file.system = images/famfamfam_silk_icons_v013/folder_brick.png
icon.plugin.fsbrowser.photo = images/famfamfam_silk_icons_v013/photo.png
icon.plugin.fsbrowser.view.as.image = images/oxygen/16x16/games-config-background.png
icon.plugin.fsbrowser.view.as.text = format-text-bold.png
icon.plugin.fsbrowser.eclipse = eclipse.png
icon.plugin.fsbrowser.jar = images/famfamfam_silk_icons_v013/page_white_cup.png
icon.plugin.fsbrowser.import = images/famfamfam_silk_icons_v013/application_get.png
icon.plugin.fsbrowser.ios = images/famfamfam_silk_icons_v013/phone.png
icon.plugin.fsbrowser.open.all = images/famfamfam_silk_icons_v013/application_cascade.png
icon.plugin.fsbrowser.list.mounted = downArrow.png
icon.base.util.fixed.bit.size.field = icon.pulldown
icon.base.util.viewer.fieldfactory.label = icon.base.pinned [move(0,4)]
icon.base.util.viewer.fieldfactory.openclose.closed = small_plus.png
icon.base.util.viewer.fieldfactory.openclose.open = small_minus.png
icon.base.util.viewer.fieldfactory.variable = icon.warning
icon.base.util.listingcompare.provider = table_relationship.png
icon.base.util.listingcompare.cursor = cursor_arrow_flipped.gif
icon.base.util.listingcompare.diff.next = view-sort-ascending.png
icon.base.util.listingcompare.previous.next = view-sort-descending.png
icon.base.util.listingcompare.area.markers.all = text_list_bullets.png
icon.base.util.listingcompare.area.markers.unmatched = icon.navigate.in
icon.base.util.listingcompare.area.markers.diff = table_relationship.png
icon.base.util.listingcompare.hover.off = icon.base.hover.off
icon.base.util.listingcompare.hover.on = icon.base.hover.on
icon.base.util.listingdiff.diffs.not = no_small.png
icon.base.util.listingdiff.diffs.byte = binaryData.gif
icon.base.util.listingdiff.diffs.constants = class.png
icon.base.util.listingdiff.diffs.registers = registerGroup.png
icon.base.util.xml.functions.bookmark = imported_bookmark.gif
icon.base.util.datatree.version.control.archive.dt.checkout.undo = vcUndoCheckOut.png
[Dark Defaults]

View File

@ -159,6 +159,8 @@ color.bg.plugin.windowlocation.window.selected = rgba(0, 255, 0, 200)
color.fg.plugin.windowlocation.window.text = gray color.fg.plugin.windowlocation.window.text = gray
[Dark Defaults] [Dark Defaults]
color.bg = rgb(40, 42, 46) // TODO this should be in a more generic module color.bg = rgb(40, 42, 46) // TODO this should be in a more generic module

View File

@ -22,7 +22,7 @@ import java.io.PrintStream;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import javax.swing.ImageIcon; import javax.swing.Icon;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -40,7 +40,7 @@ import ghidra.program.model.listing.Instruction;
import ghidra.program.model.mem.ByteMemBufferImpl; import ghidra.program.model.mem.ByteMemBufferImpl;
import ghidra.program.model.mem.MemBuffer; import ghidra.program.model.mem.MemBuffer;
import ghidra.util.NumericUtilities; import ghidra.util.NumericUtilities;
import resources.ResourceManager; import resources.Icons;
public class AssemblyThrasherDevScript extends GhidraScript { public class AssemblyThrasherDevScript extends GhidraScript {
public static final String BOOKMARK_FAIL = "AssemblyFailure"; public static final String BOOKMARK_FAIL = "AssemblyFailure";
@ -104,7 +104,7 @@ public class AssemblyThrasherDevScript extends GhidraScript {
clearBackgroundColor(currentProgram.getMemory().getAllInitializedAddressSet()); clearBackgroundColor(currentProgram.getMemory().getAllInitializedAddressSet());
BookmarkManager bm = currentProgram.getBookmarkManager(); BookmarkManager bm = currentProgram.getBookmarkManager();
ImageIcon myIcon = ResourceManager.loadImage("images/warning.png"); Icon myIcon = Icons.WARNING_ICON;
bm.defineType(BOOKMARK_FAIL, myIcon, Palette.YELLOW, 0); bm.defineType(BOOKMARK_FAIL, myIcon, Palette.YELLOW, 0);
bm.removeBookmarks(BOOKMARK_FAIL); bm.removeBookmarks(BOOKMARK_FAIL);

View File

@ -26,6 +26,7 @@ import docking.options.editor.ButtonPanelFactory;
import docking.util.image.ToolIconURL; import docking.util.image.ToolIconURL;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.label.*; import docking.widgets.label.*;
import generic.theme.GIcon;
import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingActionContext;
import ghidra.app.merge.tool.ListingMergePanel; import ghidra.app.merge.tool.ListingMergePanel;
import ghidra.app.nav.Navigatable; import ghidra.app.nav.Navigatable;
@ -36,7 +37,6 @@ import ghidra.framework.plugintool.ComponentProviderAdapter;
import ghidra.program.util.ProgramLocation; import ghidra.program.util.ProgramLocation;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.layout.VerticalLayout; import ghidra.util.layout.VerticalLayout;
import resources.ResourceManager;
/** /**
* Component that displays merge components as needed. * Component that displays merge components as needed.
@ -59,7 +59,7 @@ class MergeManagerProvider extends ComponentProviderAdapter {
private JButton cancelButton; private JButton cancelButton;
private boolean wasCanceled; private boolean wasCanceled;
private ImageIcon MERGE_ICON = ResourceManager.loadImage("images/Merge.png"); private Icon MERGE_ICON = new GIcon("icon.plugin.merge");
private JPanel mainPanel; private JPanel mainPanel;
public MergeManagerProvider(MergeManagerPlugin plugin, String title) { public MergeManagerProvider(MergeManagerPlugin plugin, String title) {

View File

@ -17,16 +17,17 @@ package ghidra.app.merge;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border; import javax.swing.border.Border;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors.Palette; import generic.theme.GThemeDefaults.Colors.Palette;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.layout.VerticalLayout; import ghidra.util.layout.VerticalLayout;
import resources.ResourceManager;
/** /**
* The MergeProgressPanel displays the name of each merge phase along with an icon indicating * The MergeProgressPanel displays the name of each merge phase along with an icon indicating
@ -34,11 +35,10 @@ import resources.ResourceManager;
*/ */
public class MergeProgressPanel extends JPanel { public class MergeProgressPanel extends JPanel {
public static ImageIcon DEFINED_ICON = ResourceManager.loadImage("images/bullet_green.png"); public static Icon DEFINED_ICON = new GIcon("icon.plugin.merge.status.pending");
public static ImageIcon IN_PROGRESS_ICON = ResourceManager.loadImage("images/right.png"); public static Icon IN_PROGRESS_ICON = new GIcon("icon.plugin.merge.status.in.progress");
public static ImageIcon COMPLETED_ICON = public static Icon COMPLETED_ICON = new GIcon("icon.plugin.merge.status.complete");
ResourceManager.loadImage("images/checkmark_green.gif"); private Map<String, JLabel> imageMap = new HashMap<>();
private HashMap<String, JLabel> imageMap = new HashMap<>();
private static int INDENT_IN_PIXELS = 20; private static int INDENT_IN_PIXELS = 20;
/** /**

View File

@ -17,14 +17,12 @@ package ghidra.app.merge;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*; import javax.swing.*;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import resources.ResourceManager; import resources.Icons;
/** /**
* The PhaseProgressPanel provides a title, progress bar and message for the current phase that is * The PhaseProgressPanel provides a title, progress bar and message for the current phase that is
@ -33,7 +31,7 @@ import resources.ResourceManager;
public class PhaseProgressPanel extends JPanel { public class PhaseProgressPanel extends JPanel {
private final static String DEFAULT_INFO = "Merge programs in progress..."; private final static String DEFAULT_INFO = "Merge programs in progress...";
private ImageIcon INFORM_ICON = ResourceManager.loadImage("images/information.png"); private Icon INFORM_ICON = Icons.INFO_ICON;
private JLabel titleLabel; private JLabel titleLabel;
private JProgressBar progressBar; private JProgressBar progressBar;
@ -105,12 +103,7 @@ public class PhaseProgressPanel extends JPanel {
doSetMessage(DEFAULT_INFO); doSetMessage(DEFAULT_INFO);
// Sets up the timer for updating the GUI. // Sets up the timer for updating the GUI.
updateTimer = new Timer(250, new ActionListener() { updateTimer = new Timer(250, e -> update());
@Override
public void actionPerformed(ActionEvent e) {
update();
}
});
} }
// Method for use by the timer to update the progress bar or message. // Method for use by the timer to update the progress bar or message.

View File

@ -30,7 +30,7 @@ import ghidra.app.merge.MergeConstants;
import ghidra.app.merge.util.ConflictCountPanel; import ghidra.app.merge.util.ConflictCountPanel;
import ghidra.framework.data.DomainObjectMergeManager; import ghidra.framework.data.DomainObjectMergeManager;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import resources.ResourceManager; import resources.Icons;
/** /**
* Panel to select a data type in order to resolve a conflict. * Panel to select a data type in order to resolve a conflict.
@ -86,9 +86,6 @@ class DataTypeMergePanel extends JPanel {
buttonGroup.add(originalRB); buttonGroup.add(originalRB);
} }
/**
*
*/
int getSelectedOption() { int getSelectedOption() {
if (latestRB.isSelected()) { if (latestRB.isSelected()) {
return DataTypeMergeManager.OPTION_LATEST; return DataTypeMergeManager.OPTION_LATEST;
@ -105,13 +102,10 @@ class DataTypeMergePanel extends JPanel {
private void create() { private void create() {
buttonGroup = new ButtonGroup(); buttonGroup = new ButtonGroup();
ItemListener listener = new ItemListener() { ItemListener listener = e -> {
@Override if (e.getStateChange() == ItemEvent.SELECTED) {
public void itemStateChanged(ItemEvent e) { mergeManager.clearStatusText();
if (e.getStateChange() == ItemEvent.SELECTED) { mergeManager.setApplyEnabled(true);
mergeManager.clearStatusText();
mergeManager.setApplyEnabled(true);
}
} }
}; };
@ -180,7 +174,7 @@ class DataTypeMergePanel extends JPanel {
private JPanel createInfoPanel() { private JPanel createInfoPanel() {
Icon icon = ResourceManager.loadImage("images/information.png"); Icon icon = Icons.INFO_ICON;
JLabel imageLabel = new GIconLabel(icon); JLabel imageLabel = new GIconLabel(icon);
MultiLineLabel label = MultiLineLabel label =

View File

@ -30,7 +30,7 @@ import ghidra.app.merge.MergeConstants;
import ghidra.app.merge.util.ConflictCountPanel; import ghidra.app.merge.util.ConflictCountPanel;
import ghidra.framework.data.DomainObjectMergeManager; import ghidra.framework.data.DomainObjectMergeManager;
import ghidra.program.model.data.SourceArchive; import ghidra.program.model.data.SourceArchive;
import resources.ResourceManager; import resources.Icons;
/** /**
* Panel to select a source archive in order to resolve a conflict. * Panel to select a source archive in order to resolve a conflict.
@ -104,13 +104,10 @@ class SourceArchiveMergePanel extends JPanel {
private void create() { private void create() {
buttonGroup = new ButtonGroup(); buttonGroup = new ButtonGroup();
ItemListener listener = new ItemListener() { ItemListener listener = e -> {
@Override if (e.getStateChange() == ItemEvent.SELECTED) {
public void itemStateChanged(ItemEvent e) { mergeManager.clearStatusText();
if (e.getStateChange() == ItemEvent.SELECTED) { mergeManager.setApplyEnabled(true);
mergeManager.clearStatusText();
mergeManager.setApplyEnabled(true);
}
} }
}; };
@ -175,7 +172,7 @@ class SourceArchiveMergePanel extends JPanel {
private JPanel createInfoPanel() { private JPanel createInfoPanel() {
Icon icon = ResourceManager.loadImage("images/information.png"); Icon icon = Icons.INFO_ICON;
JLabel imageLabel = new GIconLabel(icon); JLabel imageLabel = new GIconLabel(icon);
MultiLineLabel label = new MultiLineLabel( MultiLineLabel label = new MultiLineLabel(

View File

@ -26,6 +26,7 @@ import docking.widgets.button.GRadioButton;
import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.FieldPanel;
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator; import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import generic.theme.GIcon;
import ghidra.app.merge.MergeConstants; import ghidra.app.merge.MergeConstants;
import ghidra.app.merge.MergeManager; import ghidra.app.merge.MergeManager;
import ghidra.app.merge.util.ConflictCountPanel; import ghidra.app.merge.util.ConflictCountPanel;
@ -45,7 +46,6 @@ import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSet; import ghidra.program.model.address.AddressSet;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.program.model.symbol.ExternalLocation; import ghidra.program.model.symbol.ExternalLocation;
import resources.ResourceManager;
import resources.icons.EmptyIcon; import resources.icons.EmptyIcon;
/** /**
@ -60,8 +60,8 @@ class ExternalAddConflictPanel extends JPanel implements CodeFormatService {
public static final String MERGE_BOTH_BUTTON_NAME = public static final String MERGE_BOTH_BUTTON_NAME =
ExternalFunctionMerger.MERGE_BOTH_BUTTON_NAME; ExternalFunctionMerger.MERGE_BOTH_BUTTON_NAME;
private static Icon hideIcon = ResourceManager.loadImage("images/collapse.gif"); private static final Icon HIDE_ICON = new GIcon("icons.base.listing.conflict.collapse");
private static Icon showIcon = ResourceManager.loadImage("images/expand.gif"); private static final Icon SHOW_ICON = new GIcon("icons.base.listing.conflict.expand");
private DomainObjectMergeManager mergeManager; private DomainObjectMergeManager mergeManager;
private int totalConflicts; private int totalConflicts;
@ -291,18 +291,18 @@ class ExternalAddConflictPanel extends JPanel implements CodeFormatService {
class ShowHeaderButton extends EmptyBorderButton { class ShowHeaderButton extends EmptyBorderButton {
ShowHeaderButton() { ShowHeaderButton() {
super(showIcon); super(SHOW_ICON);
setFocusable(false); setFocusable(false);
setToolTipText("Toggle Format Header"); setToolTipText("Toggle Format Header");
addActionListener(e -> { addActionListener(e -> {
if (isSelected()) { if (isSelected()) {
setSelected(false); setSelected(false);
setIcon(showIcon); setIcon(SHOW_ICON);
latestPanel.showHeader(false); latestPanel.showHeader(false);
} }
else { else {
setSelected(true); setSelected(true);
setIcon(hideIcon); setIcon(HIDE_ICON);
latestPanel.showHeader(true); latestPanel.showHeader(true);
} }
}); });

View File

@ -28,6 +28,7 @@ import docking.widgets.checkbox.GCheckBox;
import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.FieldPanel;
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator; import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
import docking.widgets.fieldpanel.support.BackgroundColorModel; import docking.widgets.fieldpanel.support.BackgroundColorModel;
import generic.theme.GIcon;
import ghidra.app.merge.MergeConstants; import ghidra.app.merge.MergeConstants;
import ghidra.app.nav.Navigatable; import ghidra.app.nav.Navigatable;
import ghidra.app.plugin.core.codebrowser.hover.*; import ghidra.app.plugin.core.codebrowser.hover.*;
@ -54,12 +55,11 @@ import ghidra.util.datastruct.WeakDataStructureFactory;
import ghidra.util.datastruct.WeakSet; import ghidra.util.datastruct.WeakSet;
import ghidra.util.exception.NotYetImplementedException; import ghidra.util.exception.NotYetImplementedException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class ListingMergePanel extends JPanel public class ListingMergePanel extends JPanel
implements MergeConstants, FocusListener, CodeFormatService { implements MergeConstants, FocusListener, CodeFormatService {
private static Icon hideIcon = ResourceManager.loadImage("images/collapse.gif"); private static final Icon HIDE_ICON = new GIcon("icons.base.listing.conflict.collapse");
private static Icon showIcon = ResourceManager.loadImage("images/expand.gif"); private static final Icon SHOW_ICON = new GIcon("icons.base.listing.conflict.expand");
private JComponent topComp; private JComponent topComp;
private JComponent bottomComp; private JComponent bottomComp;
@ -297,9 +297,8 @@ public class ListingMergePanel extends JPanel
} }
/** /**
* Color the background of all 4 listings to the indicated color for * Color the background of all 4 listings to the indicated color for the indicated addresses.
* the indicated addresses. * @param addrSet the addresses
* @param addrSet
*/ */
public void paintAllBackgrounds(AddressSetView addrSet) { public void paintAllBackgrounds(AddressSetView addrSet) {
backgroundColorModel.setAddressSet(addrSet); backgroundColorModel.setAddressSet(addrSet);
@ -509,18 +508,18 @@ public class ListingMergePanel extends JPanel
private class ShowHeaderButton extends EmptyBorderButton { private class ShowHeaderButton extends EmptyBorderButton {
ShowHeaderButton() { ShowHeaderButton() {
super(showIcon); super(SHOW_ICON);
setFocusable(false); setFocusable(false);
setToolTipText("Toggle Format Header"); setToolTipText("Toggle Format Header");
addActionListener(e -> { addActionListener(e -> {
if (isSelected()) { if (isSelected()) {
setSelected(false); setSelected(false);
setIcon(showIcon); setIcon(SHOW_ICON);
listingPanels[RESULT].showHeader(false); listingPanels[RESULT].showHeader(false);
} }
else { else {
setSelected(true); setSelected(true);
setIcon(hideIcon); setIcon(HIDE_ICON);
listingPanels[RESULT].showHeader(true); listingPanels[RESULT].showHeader(true);
} }
}); });
@ -616,14 +615,12 @@ public class ListingMergePanel extends JPanel
} }
class LockComponent extends GCheckBox { class LockComponent extends GCheckBox {
private static final Icon lock = ResourceManager.loadImage("images/lock.gif");
private static final Icon unlock = ResourceManager.loadImage("images/unlock.gif");
LockComponent() { LockComponent() {
super(unlock); super(new GIcon("icon.plugin.merge.conflict.unlock"));
setToolTipText("Lock/Unlock with other views"); setToolTipText("Lock/Unlock with other views");
setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));
setSelectedIcon(lock); setSelectedIcon(new GIcon("icon.plugin.merge.conflict.lock"));
setSelected(true); setSelected(true);
} }
@ -635,26 +632,3 @@ class LockComponent extends GCheckBox {
setSelected(lock); setSelected(lock);
} }
} }
/***
// class LockComponent extends ToolbarButton {
// private static final Icon lock = ResourceManager.loadImage("images/lock.gif");
// private static final Icon unlock = ResourceManager.loadImage("images/unlock.gif");
// LockComponent() {
// super(unlock);
// setBorder(BorderFactory.createEmptyBorder(0,2,0,2));
// setSelectedIcon(lock);
// setSelected(true);
// addActionListener(new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// setSelected(!isSelected());
// }
// });
// }
// boolean isLocked() {
// return isSelected();
// }
// void setLocked(boolean lock) {
// setSelected(lock);
// }
// }
***/

View File

@ -16,7 +16,6 @@
package ghidra.app.merge.tree; package ghidra.app.merge.tree;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import javax.swing.*; import javax.swing.*;
@ -27,7 +26,7 @@ import docking.widgets.label.GDLabel;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import ghidra.app.merge.MergeConstants; import ghidra.app.merge.MergeConstants;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import resources.ResourceManager; import resources.Icons;
/** /**
* Panel to get user input to resolve name conflicts when private name of tree * Panel to get user input to resolve name conflicts when private name of tree
@ -129,7 +128,7 @@ class NameConflictsPanel extends JPanel {
iconPanel.setLayout(new BoxLayout(iconPanel, BoxLayout.X_AXIS)); iconPanel.setLayout(new BoxLayout(iconPanel, BoxLayout.X_AXIS));
conflictsLabel = new GDLabel("'My' name already exists in Latest Version"); conflictsLabel = new GDLabel("'My' name already exists in Latest Version");
ImageIcon icon = ResourceManager.loadImage("images/information.png"); Icon icon = Icons.INFO_ICON;
iconPanel.add(new GIconLabel(icon)); iconPanel.add(new GIconLabel(icon));
iconPanel.add(Box.createHorizontalStrut(5)); iconPanel.add(Box.createHorizontalStrut(5));
iconPanel.add(conflictsLabel); iconPanel.add(conflictsLabel);
@ -158,12 +157,9 @@ class NameConflictsPanel extends JPanel {
panel.add(rbPanel, BorderLayout.CENTER); panel.add(rbPanel, BorderLayout.CENTER);
add(panel); add(panel);
ItemListener itemListener = new ItemListener() { ItemListener itemListener = e -> {
@Override if (listener != null) {
public void itemStateChanged(ItemEvent e) { listener.stateChanged(null);
if (listener != null) {
listener.stateChanged(null);
}
} }
}; };
keepOtherRB.addItemListener(itemListener); keepOtherRB.addItemListener(itemListener);

View File

@ -21,10 +21,11 @@ import javax.swing.*;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import generic.theme.GThemeDefaults.Colors.Messages; import generic.theme.GThemeDefaults.Colors.Messages;
import ghidra.util.layout.PairLayout; import ghidra.util.layout.PairLayout;
import resources.ResourceManager; import resources.Icons;
/** /**
* Panel to show whether tree name and tree structure changed. * Panel to show whether tree name and tree structure changed.
@ -41,9 +42,8 @@ class TreeChangePanel extends JPanel {
private JLabel nameIconLabel; private JLabel nameIconLabel;
private JLabel structureIconLabel; private JLabel structureIconLabel;
private final static ImageIcon CHANGED_ICON = ResourceManager.loadImage("images/changed16.gif"); private final static Icon CHANGED_ICON = new GIcon("icon.plugin.merge.changed");
private final static ImageIcon NO_CHANGE_ICON = private final static Icon NO_CHANGE_ICON = Icons.EMPTY_ICON;
ResourceManager.loadImage("images/EmptyIcon16.gif");
private final static Color CHANGED_COLOR = Colors.FOREGROUND; private final static Color CHANGED_COLOR = Colors.FOREGROUND;
private final static Color NO_CHANGE_COLOR = Messages.HINT; private final static Color NO_CHANGE_COLOR = Messages.HINT;

View File

@ -21,6 +21,7 @@ import java.awt.Point;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors.Palette; import generic.theme.GThemeDefaults.Colors.Palette;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager; import resources.ResourceManager;
@ -29,8 +30,7 @@ import resources.icons.TranslateIcon;
public class NavigatableIconFactory { public class NavigatableIconFactory {
private static final ImageIcon SNAPSHOT_ICON = private static final Icon SNAPSHOT_ICON = new GIcon("icon.provider.clone");
ResourceManager.loadImage("images/camera-photo.png");
public static ImageIcon createSnapshotOverlayIcon(Icon primaryIcon) { public static ImageIcon createSnapshotOverlayIcon(Icon primaryIcon) {
MultiIcon newOuterIcon = new MultiIcon(primaryIcon); MultiIcon newOuterIcon = new MultiIcon(primaryIcon);

View File

@ -28,6 +28,7 @@ import docking.widgets.autocomplete.*;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.textfield.TextFieldLinker; import docking.widgets.textfield.TextFieldLinker;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import ghidra.GhidraApplicationLayout; import ghidra.GhidraApplicationLayout;
import ghidra.GhidraLaunchable; import ghidra.GhidraLaunchable;
@ -43,7 +44,6 @@ import ghidra.program.model.address.Address;
import ghidra.program.model.lang.LanguageID; import ghidra.program.model.lang.LanguageID;
import ghidra.program.model.listing.Instruction; import ghidra.program.model.listing.Instruction;
import ghidra.util.NumericUtilities; import ghidra.util.NumericUtilities;
import resources.ResourceManager;
/** /**
* A pair of text fields suitable for guided assembly * A pair of text fields suitable for guided assembly
@ -336,7 +336,7 @@ public class AssemblyDualTextField {
@Override @Override
protected void addContent(JPanel content) { protected void addContent(JPanel content) {
Box controls = Box.createHorizontalBox(); Box controls = Box.createHorizontalBox();
Icon icon = ResourceManager.loadImage("images/question_zero.png"); Icon icon = new GIcon("icon.plugin.assembler.question");
EmptyBorderToggleButton button = new EmptyBorderToggleButton(icon); EmptyBorderToggleButton button = new EmptyBorderToggleButton(icon);
button.setToolTipText("Exhaust unspecified bits, otherwise zero them"); button.setToolTipText("Exhaust unspecified bits, otherwise zero them");
button.addActionListener((e) -> { button.addActionListener((e) -> {

View File

@ -17,11 +17,12 @@ package ghidra.app.plugin.core.bookmark;
import java.awt.Color; import java.awt.Color;
import javax.swing.ImageIcon; import javax.swing.Icon;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import ghidra.app.services.*; import ghidra.app.services.*;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSet; import ghidra.program.model.address.AddressSet;
@ -29,7 +30,6 @@ import ghidra.program.model.listing.*;
import ghidra.program.util.MarkerLocation; import ghidra.program.util.MarkerLocation;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import ghidra.util.Swing; import ghidra.util.Swing;
import resources.ResourceManager;
/** /**
* Handles navigation/display of bookmarks in the browser marker margins. * Handles navigation/display of bookmarks in the browser marker margins.
@ -38,13 +38,12 @@ public class BookmarkNavigator {
private static final int BIG_CHANGE = 1000; private static final int BIG_CHANGE = 1000;
final static ImageIcon NOTE_ICON = ResourceManager.loadImage("images/notes.gif"); final static Icon NOTE_ICON = new GIcon("icon.plugin.bookmark.type.note");
final static ImageIcon INFO_ICON = ResourceManager.loadImage("images/information.png"); final static Icon INFO_ICON = new GIcon("icon.plugin.bookmark.type.info");
final static ImageIcon WARNING_ICON = ResourceManager.loadImage("images/warning.png"); final static Icon WARNING_ICON = new GIcon("icon.plugin.bookmark.type.warning");
final static ImageIcon ERROR_ICON = ResourceManager.loadImage("images/edit-delete.png"); final static Icon ERROR_ICON = new GIcon("icon.plugin.bookmark.type.error");
final static ImageIcon ANALYSIS_ICON = final static Icon ANALYSIS_ICON = new GIcon("icon.plugin.bookmark.type.analysis");
ResourceManager.loadImage("images/applications-system.png"); final static Icon DEFAULT_ICON = new GIcon("icon.plugin.bookmark.type.default");
final static ImageIcon DEFAULT_ICON = ResourceManager.loadImage("images/unknown.gif");
final static int NOTE_PRIORITY = MarkerService.BOOKMARK_PRIORITY; final static int NOTE_PRIORITY = MarkerService.BOOKMARK_PRIORITY;
final static int ERROR_PRIORITY = MarkerService.BOOKMARK_PRIORITY + BIG_CHANGE; final static int ERROR_PRIORITY = MarkerService.BOOKMARK_PRIORITY + BIG_CHANGE;
@ -81,7 +80,7 @@ public class BookmarkNavigator {
priority = DEFAULT_PRIORITY; priority = DEFAULT_PRIORITY;
} }
ImageIcon icon = bmt.getIcon(); Icon icon = bmt.getIcon();
if (icon == null) { if (icon == null) {
icon = DEFAULT_ICON; icon = DEFAULT_ICON;
} }

View File

@ -26,6 +26,7 @@ import docking.Tool;
import docking.action.*; import docking.action.*;
import docking.actions.PopupActionProvider; import docking.actions.PopupActionProvider;
import docking.widgets.table.GTable; import docking.widgets.table.GTable;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
@ -43,7 +44,8 @@ import ghidra.program.util.*;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.table.SelectionNavigationAction; import ghidra.util.table.SelectionNavigationAction;
import ghidra.util.task.SwingUpdateManager; import ghidra.util.task.SwingUpdateManager;
import resources.*; import resources.Icons;
import resources.MultiIconBuilder;
/** /**
* Plugin to for adding/deleting/editing bookmarks. * Plugin to for adding/deleting/editing bookmarks.
@ -115,7 +117,7 @@ public class BookmarkPlugin extends ProgramPlugin
tool.addAction(addAction); tool.addAction(addAction);
MultiIconBuilder builder = new MultiIconBuilder(Icons.CONFIGURE_FILTER_ICON); MultiIconBuilder builder = new MultiIconBuilder(Icons.CONFIGURE_FILTER_ICON);
builder.addLowerRightIcon(ResourceManager.loadImage("images/check.png")); builder.addLowerRightIcon(new GIcon("icon.plugin.bookmark.add"));
Icon filterTypesChanged = builder.build(); Icon filterTypesChanged = builder.build();
Icon filterTypesUnchanged = Icons.CONFIGURE_FILTER_ICON; Icon filterTypesUnchanged = Icons.CONFIGURE_FILTER_ICON;
DockingAction filterAction = new DockingAction("Filter Bookmarks", getName()) { DockingAction filterAction = new DockingAction("Filter Bookmarks", getName()) {
@ -150,7 +152,7 @@ public class BookmarkPlugin extends ProgramPlugin
provider.delete(); provider.delete();
} }
}; };
Icon icon = ResourceManager.loadImage("images/edit-delete.png"); Icon icon = new GIcon("icon.plugin.bookmark.delete");
deleteAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_DELETE, 0)); deleteAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_DELETE, 0));
deleteAction.setPopupMenuData(new MenuData(new String[] { "Delete" }, icon)); deleteAction.setPopupMenuData(new MenuData(new String[] { "Delete" }, icon));
deleteAction.setDescription("Delete Selected Bookmarks"); deleteAction.setDescription("Delete Selected Bookmarks");
@ -164,7 +166,7 @@ public class BookmarkPlugin extends ProgramPlugin
select(provider.getBookmarkLocations()); select(provider.getBookmarkLocations());
} }
}; };
icon = ResourceManager.loadImage("images/text_align_justify.png"); icon = new GIcon("icon.plugin.bookmark.select");
selectionAction.setPopupMenuData( selectionAction.setPopupMenuData(
new MenuData(new String[] { "Select Bookmark Locations" }, icon)); new MenuData(new String[] { "Select Bookmark Locations" }, icon));
selectionAction.setToolBarData(new ToolBarData(icon)); selectionAction.setToolBarData(new ToolBarData(icon));

View File

@ -49,10 +49,6 @@ public class CreateBookmarkDialog extends DialogComponentProvider {
private JTextField commentTextField; private JTextField commentTextField;
private JCheckBox selectionCB; private JCheckBox selectionCB;
/**
* Creates new CreateBookmarkDialog
*
*/
CreateBookmarkDialog(BookmarkPlugin plugin, CodeUnit cu, boolean hasSelection) { CreateBookmarkDialog(BookmarkPlugin plugin, CodeUnit cu, boolean hasSelection) {
super(BookmarkType.NOTE + " Bookmark", true, true, true, false); super(BookmarkType.NOTE + " Bookmark", true, true, true, false);
@ -71,6 +67,7 @@ public class CreateBookmarkDialog extends DialogComponentProvider {
setHelpLocation(new HelpLocation("BookmarkPlugin", "CreateBookmarkDialog")); setHelpLocation(new HelpLocation("BookmarkPlugin", "CreateBookmarkDialog"));
} }
@Override
public void dispose() { public void dispose() {
this.plugin = null; this.plugin = null;
this.program = null; this.program = null;
@ -202,7 +199,7 @@ public class CreateBookmarkDialog extends DialogComponentProvider {
gbc.anchor = GridBagConstraints.WEST; gbc.anchor = GridBagConstraints.WEST;
mainPanel.add(commentTextField, gbc); mainPanel.add(commentTextField, gbc);
ImageIcon icon = BookmarkNavigator.NOTE_ICON; Icon icon = BookmarkNavigator.NOTE_ICON;
JLabel imageLabel = new GIconLabel(icon); JLabel imageLabel = new GIconLabel(icon);
imageLabel.setPreferredSize( imageLabel.setPreferredSize(
new Dimension(icon.getIconWidth() + 20, icon.getIconHeight() + 20)); new Dimension(icon.getIconWidth() + 20, icon.getIconHeight() + 20));

View File

@ -23,6 +23,7 @@ import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.action.MenuData; import docking.action.MenuData;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingActionContext;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
@ -37,7 +38,6 @@ import ghidra.program.model.symbol.ReferenceManager;
import ghidra.program.util.ProgramLocation; import ghidra.program.util.ProgramLocation;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.Icons; import resources.Icons;
import resources.ResourceManager;
/** /**
* Assuming a function <b>foo</b>, this plugin will show all callers of <b>foo</b> and all * Assuming a function <b>foo</b>, this plugin will show all callers of <b>foo</b> and all
@ -58,9 +58,8 @@ import resources.ResourceManager;
public class CallTreePlugin extends ProgramPlugin { public class CallTreePlugin extends ProgramPlugin {
static final Icon PROVIDER_ICON = Icons.ARROW_DOWN_RIGHT_ICON; static final Icon PROVIDER_ICON = Icons.ARROW_DOWN_RIGHT_ICON;
static final Icon FUNCTION_ICON = ResourceManager.loadImage("images/FunctionScope.gif"); static final Icon FUNCTION_ICON = new GIcon("icon.plugin.calltree.function");
static final Icon RECURSIVE_ICON = static final Icon RECURSIVE_ICON = new GIcon("icon.plugin.calltree.recursive");
ResourceManager.loadImage("images/arrow_rotate_clockwise.png");
private List<CallTreeProvider> providers = new ArrayList<>(); private List<CallTreeProvider> providers = new ArrayList<>();
private DockingAction showCallTreeFromMenuAction; private DockingAction showCallTreeFromMenuAction;

View File

@ -33,6 +33,7 @@ import docking.widgets.tree.*;
import docking.widgets.tree.support.GTreeSelectionEvent.EventOrigin; import docking.widgets.tree.support.GTreeSelectionEvent.EventOrigin;
import docking.widgets.tree.support.GTreeSelectionListener; import docking.widgets.tree.support.GTreeSelectionListener;
import docking.widgets.tree.tasks.GTreeExpandAllTask; import docking.widgets.tree.tasks.GTreeExpandAllTask;
import generic.theme.GIcon;
import ghidra.app.events.ProgramLocationPluginEvent; import ghidra.app.events.ProgramLocationPluginEvent;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
import ghidra.app.services.GoToService; import ghidra.app.services.GoToService;
@ -51,18 +52,18 @@ import ghidra.util.exception.CancelledException;
import ghidra.util.task.SwingUpdateManager; import ghidra.util.task.SwingUpdateManager;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.Icons; import resources.Icons;
import resources.ResourceManager;
public class CallTreeProvider extends ComponentProviderAdapter implements DomainObjectListener { public class CallTreeProvider extends ComponentProviderAdapter implements DomainObjectListener {
static final String EXPAND_ACTION_NAME = "Fully Expand Selected Nodes"; static final String EXPAND_ACTION_NAME = "Fully Expand Selected Nodes";
static final String TITLE = "Function Call Trees"; static final String TITLE = "Function Call Trees";
private static final Icon EMPTY_ICON = ResourceManager.loadImage("images/EmptyIcon16.gif"); private static final Icon EMPTY_ICON = Icons.EMPTY_ICON;
private static final Icon EXPAND_ICON = Icons.EXPAND_ALL_ICON; private static final Icon EXPAND_ICON = Icons.EXPAND_ALL_ICON;
private static final Icon COLLAPSE_ICON = Icons.COLLAPSE_ALL_ICON; private static final Icon COLLAPSE_ICON = Icons.COLLAPSE_ALL_ICON;
private static Icon REFRESH_ICON = Icons.REFRESH_ICON; private static Icon REFRESH_ICON = new GIcon("icon.plugin.calltree.refresh");
private static Icon REFRESH_NOT_NEEDED_ICON = ResourceManager.getDisabledIcon(REFRESH_ICON, 60); private static Icon REFRESH_NOT_NEEDED_ICON =
new GIcon("icon.plugin.calltree.refresh.not.needed");
private static final String RECURSE_DEPTH_PROPERTY_NAME = "call.tree.recurse.depth"; private static final String RECURSE_DEPTH_PROPERTY_NAME = "call.tree.recurse.depth";
private static final String DEFAULT_RECURSE_DEPTH = "5"; private static final String DEFAULT_RECURSE_DEPTH = "5";
@ -365,9 +366,9 @@ public class CallTreeProvider extends ComponentProviderAdapter implements Domain
doUpdate(); doUpdate();
} }
}; };
filterDuplicates.setToolBarData( filterDuplicates
new ToolBarData(ResourceManager.loadImage("images/application_double.png"), .setToolBarData(new ToolBarData(new GIcon("icon.plugin.calltree.filter.duplicates"),
filterOptionsToolbarGroup, "1")); filterOptionsToolbarGroup, "1"));
filterDuplicates.setSelected(true); filterDuplicates.setSelected(true);
filterDuplicates filterDuplicates
.setHelpLocation(new HelpLocation(plugin.getName(), "Call_Tree_Action_Filter")); .setHelpLocation(new HelpLocation(plugin.getName(), "Call_Tree_Action_Filter"));
@ -503,7 +504,7 @@ public class CallTreeProvider extends ComponentProviderAdapter implements Domain
return true; return true;
} }
}; };
ImageIcon icon = ResourceManager.loadImage("images/text_align_justify.png"); Icon icon = new GIcon("icon.plugin.calltree.filter.select.source");
selectSourceAction.setPopupMenuData( selectSourceAction.setPopupMenuData(
new MenuData(new String[] { "Select Call Source" }, icon, selectionMenuGroup)); new MenuData(new String[] { "Select Call Source" }, icon, selectionMenuGroup));
selectSourceAction.setHelpLocation( selectSourceAction.setHelpLocation(
@ -581,8 +582,7 @@ public class CallTreeProvider extends ComponentProviderAdapter implements Domain
return currentFunction != null; return currentFunction != null;
} }
}; };
homeAction.setToolBarData( homeAction.setToolBarData(new ToolBarData(Icons.HOME_ICON, homeToolbarGroup));
new ToolBarData(ResourceManager.loadImage("images/go-home.png"), homeToolbarGroup));
homeAction.setHelpLocation(new HelpLocation(plugin.getName(), "Call_Tree_Action_Home")); homeAction.setHelpLocation(new HelpLocation(plugin.getName(), "Call_Tree_Action_Home"));
tool.addLocalAction(this, homeAction); tool.addLocalAction(this, homeAction);

View File

@ -15,6 +15,14 @@
*/ */
package ghidra.app.plugin.core.calltree; package ghidra.app.plugin.core.calltree;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import javax.swing.Icon;
import docking.widgets.tree.GTreeNode;
import generic.theme.GIcon;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
@ -23,18 +31,9 @@ import ghidra.program.util.ProgramLocation;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import javax.swing.Icon;
import resources.ResourceManager;
import docking.widgets.tree.GTreeNode;
public class DeadEndNode extends CallNode { public class DeadEndNode extends CallNode {
private static final Icon ICON = ResourceManager.loadImage("images/stopNode.png"); private static final Icon ICON = new GIcon("icon.plugin.calltree.node.dead.end");
private final Reference reference; private final Reference reference;
private String name; private String name;
@ -100,6 +99,6 @@ public class DeadEndNode extends CallNode {
@Override @Override
public List<GTreeNode> generateChildren(TaskMonitor monitor) throws CancelledException { public List<GTreeNode> generateChildren(TaskMonitor monitor) throws CancelledException {
return new ArrayList<GTreeNode>(); return new ArrayList<>();
} }
} }

View File

@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import javax.swing.Icon; import javax.swing.Icon;
import docking.widgets.tree.GTreeNode; import docking.widgets.tree.GTreeNode;
import generic.theme.GIcon;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.program.util.FunctionSignatureFieldLocation; import ghidra.program.util.FunctionSignatureFieldLocation;
@ -29,12 +30,11 @@ import ghidra.program.util.ProgramLocation;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class ExternalCallNode extends CallNode { public class ExternalCallNode extends CallNode {
private static final Icon EXTERNAL_ICON = ResourceManager.loadImage("images/package.png"); private static final Icon EXTERNAL_ICON = new GIcon("icon.plugin.calltree.node.external");
private final Icon EXTERNAL_FUNCTION_ICON; private final Icon EXTERNAL_FUNCTION_ICON;
private final Icon baseIcon; private final Icon baseIcon;
@ -77,7 +77,7 @@ public class ExternalCallNode extends CallNode {
@Override @Override
public List<GTreeNode> generateChildren(TaskMonitor monitor) throws CancelledException { public List<GTreeNode> generateChildren(TaskMonitor monitor) throws CancelledException {
return new ArrayList<GTreeNode>(); return new ArrayList<>();
} }
@Override @Override

View File

@ -24,6 +24,7 @@ import javax.swing.*;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import ghidra.app.context.ProgramContextAction; import ghidra.app.context.ProgramContextAction;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
@ -31,8 +32,6 @@ import ghidra.util.HelpLocation;
import ghidra.util.classfinder.ClassSearcher; import ghidra.util.classfinder.ClassSearcher;
import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTable;
import ghidra.util.task.TaskLauncher; import ghidra.util.task.TaskLauncher;
import resources.Icons;
import resources.ResourceManager;
/** /**
* Provider to invoke computation of various checksums and display them in a table. * Provider to invoke computation of various checksums and display them in a table.
@ -233,7 +232,8 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
}; };
computeAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "compute")); computeAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "compute"));
computeAction.setEnabled(true); computeAction.setEnabled(true);
computeAction.setToolBarData(new ToolBarData(Icons.REFRESH_ICON, null)); computeAction
.setToolBarData(new ToolBarData(new GIcon("icon.plugin.checksum.compute"), null));
computeAction.setDescription("Refreshes checksums"); computeAction.setDescription("Refreshes checksums");
selectionAction = new ToggleDockingAction("On Selection", plugin.getName()) { selectionAction = new ToggleDockingAction("On Selection", plugin.getName()) {
@ -251,7 +251,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
selectionAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "On_Selection")); selectionAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "On_Selection"));
selectionAction.setEnabled(plugin.hasSelection()); selectionAction.setEnabled(plugin.hasSelection());
selectionAction.setToolBarData( selectionAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/NextSelectionBlock16.gif"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.select"), null));
selectionAction.setDescription("When toggled, generates checksums on " + selectionAction.setDescription("When toggled, generates checksums on " +
"selection. Otherwise checksums are generated over the entire program"); "selection. Otherwise checksums are generated over the entire program");
@ -269,7 +269,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
showHexAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "As_Hex")); showHexAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "As_Hex"));
showHexAction.setEnabled(true); showHexAction.setEnabled(true);
showHexAction.setToolBarData( showHexAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/hexData.png"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.show.hex"), null));
showHexAction.setDescription("Toggle to show the hex values instead of decimal values."); showHexAction.setDescription("Toggle to show the hex values instead of decimal values.");
xorAction = new ToggleDockingAction("XOR Checksum Values", plugin.getName()) { xorAction = new ToggleDockingAction("XOR Checksum Values", plugin.getName()) {
@ -289,7 +289,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
xorAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "xor")); xorAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "xor"));
xorAction.setEnabled(true); xorAction.setEnabled(true);
xorAction.setToolBarData( xorAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/xor.png"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.xor"), null));
xorAction.setDescription("Toggle to recompute values with a xor operation."); xorAction.setDescription("Toggle to recompute values with a xor operation.");
carryAction = new ToggleDockingAction("Carry Checksum Values", plugin.getName()) { carryAction = new ToggleDockingAction("Carry Checksum Values", plugin.getName()) {
@ -310,7 +310,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
carryAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "carry")); carryAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "carry"));
carryAction.setEnabled(true); carryAction.setEnabled(true);
carryAction.setToolBarData( carryAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/carry.png"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.carry"), null));
carryAction.setDescription("Toggle to recompute values with a carry operation."); carryAction.setDescription("Toggle to recompute values with a carry operation.");
onesCompAction = new ToggleDockingAction("Ones Complement", plugin.getName()) { onesCompAction = new ToggleDockingAction("Ones Complement", plugin.getName()) {
@ -330,7 +330,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
onesCompAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "ones_comp")); onesCompAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "ones_comp"));
onesCompAction.setEnabled(true); onesCompAction.setEnabled(true);
onesCompAction.setToolBarData( onesCompAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/onesComplement.png"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.ones.complement"), null));
onesCompAction.setDescription("Toggle to recompute values with a one's complement."); onesCompAction.setDescription("Toggle to recompute values with a one's complement.");
twosCompAction = new ToggleDockingAction("Twos Complement", plugin.getName()) { twosCompAction = new ToggleDockingAction("Twos Complement", plugin.getName()) {
@ -350,7 +350,7 @@ public class ComputeChecksumsProvider extends ComponentProviderAdapter {
twosCompAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "twos_comp")); twosCompAction.setHelpLocation(new HelpLocation("ComputeChecksumsPlugin", "twos_comp"));
twosCompAction.setEnabled(true); twosCompAction.setEnabled(true);
twosCompAction.setToolBarData( twosCompAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/twosComplement.png"), null)); new ToolBarData(new GIcon("icon.plugin.checksum.twos.complement"), null));
twosCompAction.setDescription("Toggle to recompute values with a two's complement."); twosCompAction.setDescription("Toggle to recompute values with a two's complement.");
tool.addLocalAction(this, onesCompAction); tool.addLocalAction(this, onesCompAction);

View File

@ -29,6 +29,7 @@ import javax.swing.event.ChangeListener;
import docking.*; import docking.*;
import docking.action.*; import docking.action.*;
import docking.dnd.GClipboard; import docking.dnd.GClipboard;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingActionContext;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
@ -43,7 +44,6 @@ import ghidra.program.model.listing.Program;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.task.*; import ghidra.util.task.*;
import resources.ResourceManager;
//@formatter:off //@formatter:off
@PluginInfo( @PluginInfo(
@ -361,7 +361,7 @@ public class ClipboardPlugin extends ProgramPlugin implements ClipboardOwner, Cl
this.clipboardService = clipboardService; this.clipboardService = clipboardService;
setPopupMenuData(new MenuData(new String[] { "Copy" }, "Clipboard")); setPopupMenuData(new MenuData(new String[] { "Copy" }, "Clipboard"));
setToolBarData(new ToolBarData(ResourceManager.loadImage("images/page_white_copy.png"), setToolBarData(new ToolBarData(new GIcon("icon.plugin.clipboard.copy"),
"Clipboard")); "Clipboard"));
setKeyBindingData(new KeyBindingData(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK)); setKeyBindingData(new KeyBindingData(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK));
setHelpLocation(new HelpLocation("ClipboardPlugin", "Copy")); setHelpLocation(new HelpLocation("ClipboardPlugin", "Copy"));
@ -395,7 +395,7 @@ public class ClipboardPlugin extends ProgramPlugin implements ClipboardOwner, Cl
setPopupMenuData(new MenuData(new String[] { "Paste" }, "Clipboard")); setPopupMenuData(new MenuData(new String[] { "Paste" }, "Clipboard"));
setToolBarData( setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/page_paste.png"), "Clipboard")); new ToolBarData(new GIcon("icon.plugin.clipboard.paste"), "Clipboard"));
setKeyBindingData(new KeyBindingData(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK)); setKeyBindingData(new KeyBindingData(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK));
setHelpLocation(new HelpLocation("ClipboardPlugin", "Paste")); setHelpLocation(new HelpLocation("ClipboardPlugin", "Paste"));
} }

View File

@ -20,7 +20,7 @@ import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
@ -31,6 +31,7 @@ import docking.widgets.fieldpanel.field.Field;
import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldLocation;
import docking.widgets.fieldpanel.support.FieldSelection; import docking.widgets.fieldpanel.support.FieldSelection;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.app.events.ProgramHighlightPluginEvent; import ghidra.app.events.ProgramHighlightPluginEvent;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
@ -56,7 +57,6 @@ import ghidra.program.model.listing.Program;
import ghidra.program.util.ProgramLocation; import ghidra.program.util.ProgramLocation;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
import ghidra.util.*; import ghidra.util.*;
import resources.ResourceManager;
public abstract class AbstractCodeBrowserPlugin<P extends CodeViewerProvider> extends Plugin public abstract class AbstractCodeBrowserPlugin<P extends CodeViewerProvider> extends Plugin
implements CodeViewerService, CodeFormatService, OptionsChangeListener, FormatModelListener, implements CodeViewerService, CodeFormatService, OptionsChangeListener, FormatModelListener,
@ -74,8 +74,8 @@ public abstract class AbstractCodeBrowserPlugin<P extends CodeViewerProvider> ex
//@formatter:on //@formatter:on
// - Icon - // - Icon -
private ImageIcon CURSOR_LOC_ICON = private static final Icon CURSOR_LOC_ICON =
ResourceManager.loadImage("images/cursor_arrow_flipped.gif"); new GIcon("icon.plugin.codebrowser.cursor.location");
protected final P connectedProvider; protected final P connectedProvider;
protected List<P> disconnectedProviders = new ArrayList<>(); protected List<P> disconnectedProviders = new ArrayList<>();
protected FormatManager formatMgr; protected FormatManager formatMgr;

View File

@ -15,10 +15,11 @@
*/ */
package ghidra.app.plugin.core.codebrowser; package ghidra.app.plugin.core.codebrowser;
import javax.swing.ImageIcon; import javax.swing.Icon;
import docking.action.builder.ActionBuilder; import docking.action.builder.ActionBuilder;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import generic.theme.GIcon;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
@ -38,7 +39,6 @@ import ghidra.util.datastruct.Accumulator;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.table.*; import ghidra.util.table.*;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
/** /**
* Plugin for adding some basic selection actions for Code Browser Listings. * Plugin for adding some basic selection actions for Code Browser Listings.
@ -129,7 +129,7 @@ public class CodeBrowserSelectionPlugin extends Plugin {
GhidraProgramTableModel<Address> model = createTableModel(program, codeUnits, selection); GhidraProgramTableModel<Address> model = createTableModel(program, codeUnits, selection);
String title = "Selection Table"; String title = "Selection Table";
ImageIcon markerIcon = ResourceManager.loadImage("images/searchm_obj.gif"); Icon markerIcon = new GIcon("icon.plugin.codebrowser.cursor.marker");
TableComponentProvider<Address> tableProvider = TableComponentProvider<Address> tableProvider =
tableService.showTableWithMarkers(title + " " + model.getName(), "Selection", tableService.showTableWithMarkers(title + " " + model.getName(), "Selection",
model, PluginConstants.SEARCH_HIGHLIGHT_COLOR, markerIcon, title, null); model, PluginConstants.SEARCH_HIGHLIGHT_COLOR, markerIcon, title, null);

View File

@ -37,6 +37,7 @@ import docking.widgets.fieldpanel.FieldPanel;
import docking.widgets.fieldpanel.HoverHandler; import docking.widgets.fieldpanel.HoverHandler;
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator; import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
import docking.widgets.fieldpanel.support.*; import docking.widgets.fieldpanel.support.*;
import generic.theme.GIcon;
import ghidra.app.nav.*; import ghidra.app.nav.*;
import ghidra.app.plugin.core.clipboard.CodeBrowserClipboardProvider; import ghidra.app.plugin.core.clipboard.CodeBrowserClipboardProvider;
import ghidra.app.plugin.core.codebrowser.actions.*; import ghidra.app.plugin.core.codebrowser.actions.*;
@ -56,7 +57,6 @@ import ghidra.program.model.listing.*;
import ghidra.program.util.*; import ghidra.program.util.*;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.Swing; import ghidra.util.Swing;
import resources.ResourceManager;
public class CodeViewerProvider extends NavigatableComponentProviderAdapter public class CodeViewerProvider extends NavigatableComponentProviderAdapter
implements ProgramLocationListener, ProgramSelectionListener, Draggable, Droppable, implements ProgramLocationListener, ProgramSelectionListener, Draggable, Droppable,
@ -67,12 +67,12 @@ public class CodeViewerProvider extends NavigatableComponentProviderAdapter
private static final String TITLE = NAME + ": "; private static final String TITLE = NAME + ": ";
private static final Icon LISTING_FORMAT_EXPAND_ICON = private static final Icon LISTING_FORMAT_EXPAND_ICON =
ResourceManager.loadImage("images/field.header.down.png"); new GIcon("icon.plugin.codebrowser.format.expand");
private static final Icon LISTING_FORMAT_COLLAPSE_ICON = private static final Icon LISTING_FORMAT_COLLAPSE_ICON =
ResourceManager.loadImage("images/field.header.up.png"); new GIcon("icon.plugin.codebrowser.format.collapse");
private static final Icon HOVER_ON_ICON = ResourceManager.loadImage("images/hoverOn.gif"); private static final Icon HOVER_ON_ICON = new GIcon("icon.plugin.codebrowser.hover.on");
private static final Icon HOVER_OFF_ICON = ResourceManager.loadImage("images/hoverOff.gif"); private static final Icon HOVER_OFF_ICON = new GIcon("icon.plugin.codebrowser.hover.off");
private static final String HOVER_MODE = "Hover Mode"; private static final String HOVER_MODE = "Hover Mode";
private static final String DIVIDER_LOCATION = "DividerLocation"; private static final String DIVIDER_LOCATION = "DividerLocation";
@ -130,7 +130,7 @@ public class CodeViewerProvider extends NavigatableComponentProviderAdapter
ComponentProvider.registerProviderNameOwnerChange(OLD_NAME, owner, NAME, owner); ComponentProvider.registerProviderNameOwnerChange(OLD_NAME, owner, NAME, owner);
setConnected(isConnected); setConnected(isConnected);
setIcon(ResourceManager.loadImage("images/Browser.gif")); setIcon(new GIcon("icon.plugin.codebrowser.provider"));
if (!isConnected) { if (!isConnected) {
setTransient(); setTransient();
} }

View File

@ -16,11 +16,11 @@
package ghidra.app.plugin.core.codebrowser; package ghidra.app.plugin.core.codebrowser;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import generic.theme.GIcon;
import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableActionContext;
import ghidra.app.nav.Navigatable; import ghidra.app.nav.Navigatable;
import ghidra.app.util.HelpTopics; import ghidra.app.util.HelpTopics;
@ -28,8 +28,6 @@ import ghidra.program.model.address.Address;
import ghidra.program.util.ProgramLocation; import ghidra.program.util.ProgramLocation;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIconBuilder;
import resources.ResourceManager;
/** /**
* Actions for creating a selection using two distinct steps. The first time the action * Actions for creating a selection using two distinct steps. The first time the action
@ -61,17 +59,8 @@ public class MarkAndSelectionAction extends ToggleDockingAction {
} }
private void buildIcons() { private void buildIcons() {
ImageIcon baseImage = ResourceManager.loadImage("images/MarkSelection.png"); unarmedIcon = new GIcon("icon.plugin.codebrowser.mark.and.select.unarmed");
ImageIcon mediaStart = ResourceManager.loadImage("images/media-playback-start.png"); armedIcon = new GIcon("icon.plugin.codebrowser.mark.and.select.armed");
ImageIcon mediaStop = ResourceManager.loadImage("images/media-playback-stop.png");
MultiIconBuilder builder = new MultiIconBuilder(baseImage);
builder.addLowerRightIcon(mediaStart, 12, 12);
unarmedIcon = builder.build();
builder = new MultiIconBuilder(baseImage);
builder.addLowerRightIcon(mediaStop, 12, 12);
armedIcon = builder.build();
} }
@Override @Override

View File

@ -15,19 +15,17 @@
*/ */
package ghidra.app.plugin.core.codebrowser.actions; package ghidra.app.plugin.core.codebrowser.actions;
import ghidra.app.context.ProgramActionContext;
import ghidra.app.plugin.core.codebrowser.CodeViewerProvider;
import ghidra.util.HelpLocation;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import resources.ResourceManager;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.context.ProgramActionContext;
import ghidra.app.plugin.core.codebrowser.CodeViewerProvider;
import ghidra.util.HelpLocation;
public class CloneCodeViewerAction extends DockingAction { public class CloneCodeViewerAction extends DockingAction {
@ -36,27 +34,26 @@ public class CloneCodeViewerAction extends DockingAction {
public CloneCodeViewerAction(String owner, CodeViewerProvider provider) { public CloneCodeViewerAction(String owner, CodeViewerProvider provider) {
super("Code Viewer Clone", owner); super("Code Viewer Clone", owner);
this.provider = provider; this.provider = provider;
ImageIcon image = ResourceManager.loadImage("images/camera-photo.png"); Icon image = new GIcon("icon.provider.clone");
setToolBarData( new ToolBarData( image, "zzzz" ) ); setToolBarData(new ToolBarData(image, "zzzz"));
setDescription("Create a snapshot (disconnected) copy of this Listing window "); setDescription("Create a snapshot (disconnected) copy of this Listing window ");
setHelpLocation(new HelpLocation("Snapshots", "Snapshots_Start")); setHelpLocation(new HelpLocation("Snapshots", "Snapshots_Start"));
setKeyBindingData( new KeyBindingData( KeyEvent.VK_T, setKeyBindingData(new KeyBindingData(KeyEvent.VK_T,
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK ) ); InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
} }
@Override @Override
public boolean isEnabledForContext( ActionContext context ) { public boolean isEnabledForContext(ActionContext context) {
if (context instanceof ProgramActionContext) { if (context instanceof ProgramActionContext) {
ProgramActionContext programContext = (ProgramActionContext)context; ProgramActionContext programContext = (ProgramActionContext) context;
return programContext.getProgram() != null; return programContext.getProgram() != null;
} }
return false; return false;
} }
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
provider.cloneWindow(); provider.cloneWindow();
} }
} }

View File

@ -15,12 +15,12 @@
*/ */
package ghidra.app.plugin.core.compositeeditor; package ghidra.app.plugin.core.compositeeditor;
import javax.swing.ImageIcon; import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import generic.theme.GIcon;
import ghidra.app.util.datatype.EmptyCompositeException; import ghidra.app.util.datatype.EmptyCompositeException;
import ghidra.program.model.data.InvalidDataTypeException; import ghidra.program.model.data.InvalidDataTypeException;
import resources.ResourceManager;
/** /**
* ApplyAction is an action for applying editor changes. * ApplyAction is an action for applying editor changes.
@ -29,7 +29,7 @@ public class ApplyAction extends CompositeEditorTableAction {
public final static String ACTION_NAME = "Apply Editor Changes"; public final static String ACTION_NAME = "Apply Editor Changes";
private final static String GROUP_NAME = BASIC_ACTION_GROUP; private final static String GROUP_NAME = BASIC_ACTION_GROUP;
private final static ImageIcon ICON = ResourceManager.loadImage("images/disk.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.apply");
private final static String[] POPUP_PATH = new String[] { "Apply Edits" }; private final static String[] POPUP_PATH = new String[] { "Apply Edits" };
public ApplyAction(CompositeEditorProvider provider) { public ApplyAction(CompositeEditorProvider provider) {

View File

@ -17,13 +17,13 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import resources.ResourceManager;
/** /**
* Action for use in the composite data type editor. * Action for use in the composite data type editor.
@ -31,7 +31,7 @@ import resources.ResourceManager;
*/ */
public class ArrayAction extends CompositeEditorTableAction { public class ArrayAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = ResourceManager.loadImage("images/Array.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.array");
public final static String ACTION_NAME = "Create Array"; public final static String ACTION_NAME = "Create Array";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Create an array"; private final static String DESCRIPTION = "Create an array";

View File

@ -23,16 +23,18 @@ import docking.*;
import docking.action.*; import docking.action.*;
import docking.menu.DockingCheckboxMenuItemUI; import docking.menu.DockingCheckboxMenuItemUI;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GIcon;
import ghidra.app.services.DataTypeManagerService; import ghidra.app.services.DataTypeManagerService;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager;
public class BitFieldEditorDialog extends DialogComponentProvider { public class BitFieldEditorDialog extends DialogComponentProvider {
private static final Icon ADD_ICON = ResourceManager.loadImage("images/Plus.png"); //@formatter:off
private static final Icon EDIT_ICON = ResourceManager.loadImage("images/move.png"); private static final Icon ADD_ICON = new GIcon("icon.plugin.composite.editor.bit.field.dialog.add");
private static final Icon DELETE_ICON = ResourceManager.loadImage("images/edit-delete.png"); private static final Icon EDIT_ICON = new GIcon("icon.plugin.composite.editor.bit.field.dialog.edit");
private static final Icon DELETE_ICON = new GIcon("icon.plugin.composite.editor.bit.field.dialog.delete");
//@formatter:on
private DataTypeManagerService dtmService; private DataTypeManagerService dtmService;
private Composite composite; private Composite composite;

View File

@ -28,6 +28,7 @@ import docking.ActionContext;
import docking.widgets.DropDownSelectionTextField; import docking.widgets.DropDownSelectionTextField;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import ghidra.app.plugin.core.compositeeditor.BitFieldPlacementComponent.BitAttributes; import ghidra.app.plugin.core.compositeeditor.BitFieldPlacementComponent.BitAttributes;
import ghidra.app.plugin.core.compositeeditor.BitFieldPlacementComponent.BitFieldAllocation; import ghidra.app.plugin.core.compositeeditor.BitFieldPlacementComponent.BitFieldAllocation;
@ -38,7 +39,6 @@ import ghidra.program.model.data.*;
import ghidra.program.model.data.Composite; import ghidra.program.model.data.Composite;
import ghidra.util.data.DataTypeParser.AllowedDataTypes; import ghidra.util.data.DataTypeParser.AllowedDataTypes;
import ghidra.util.layout.*; import ghidra.util.layout.*;
import resources.ResourceManager;
/** /**
* <code>BitFieldEditorPanel</code> provides the ability to add or modify bitfields * <code>BitFieldEditorPanel</code> provides the ability to add or modify bitfields
@ -46,8 +46,10 @@ import resources.ResourceManager;
*/ */
public class BitFieldEditorPanel extends JPanel { public class BitFieldEditorPanel extends JPanel {
private static final Icon DECREMENT_ICON = ResourceManager.loadImage("images/Minus.png"); //@formatter:off
private static final Icon INCREMENT_ICON = ResourceManager.loadImage("images/Plus.png"); private static final Icon DECREMENT_ICON = new GIcon("icon.plugin.composite.editor.bit.field.editor.decrement");
private static final Icon INCREMENT_ICON = new GIcon("icon.plugin.composite.editor.bit.field.editor.increment");
//@formatter:on
private DataTypeManagerService dtmService; private DataTypeManagerService dtmService;
private Composite composite; private Composite composite;

View File

@ -17,20 +17,19 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import ghidra.util.Msg; import generic.theme.GIcon;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import resources.ResourceManager;
public class ClearAction extends CompositeEditorTableAction { public class ClearAction extends CompositeEditorTableAction {
public final static String ACTION_NAME = "Clear Components"; public final static String ACTION_NAME = "Clear Components";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static ImageIcon ICON = ResourceManager.loadImage("images/erase16.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.clear");
private final static String[] POPUP_PATH = new String[] { "Clear" }; private final static String[] POPUP_PATH = new String[] { "Clear" };
private final static KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_C, 0); private final static KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_C, 0);
@ -47,10 +46,6 @@ public class ClearAction extends CompositeEditorTableAction {
try { try {
model.clearSelectedComponents(); model.clearSelectedComponents();
} }
catch (OutOfMemoryError memExc) {
String errMsg = "Couldn't clear components. Out of memory.";
Msg.showError(this, null, "Out of Memory", errMsg, memExc);
}
catch (UsrException ue) { catch (UsrException ue) {
model.setStatus(ue.getMessage()); model.setStatus(ue.getMessage());
} }

View File

@ -22,6 +22,7 @@ import javax.swing.*;
import docking.ActionContext; import docking.ActionContext;
import docking.ComponentProvider; import docking.ComponentProvider;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GIcon;
import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramActionContext;
import ghidra.app.services.DataTypeManagerService; import ghidra.app.services.DataTypeManagerService;
import ghidra.app.util.datatype.EmptyCompositeException; import ghidra.app.util.datatype.EmptyCompositeException;
@ -33,7 +34,6 @@ import ghidra.util.HelpLocation;
import ghidra.util.datastruct.WeakDataStructureFactory; import ghidra.util.datastruct.WeakDataStructureFactory;
import ghidra.util.datastruct.WeakSet; import ghidra.util.datastruct.WeakSet;
import ghidra.util.exception.AssertException; import ghidra.util.exception.AssertException;
import resources.ResourceManager;
/** /**
* Editor provider for a Composite Data Type. * Editor provider for a Composite Data Type.
@ -41,8 +41,7 @@ import resources.ResourceManager;
public abstract class CompositeEditorProvider extends ComponentProviderAdapter public abstract class CompositeEditorProvider extends ComponentProviderAdapter
implements EditorProvider, EditorActionListener { implements EditorProvider, EditorActionListener {
protected static final ImageIcon EDITOR_ICON = protected static final Icon EDITOR_ICON = new GIcon("icon.plugin.composite.editor.provider");
ResourceManager.loadImage("images/accessories-text-editor.png");
protected Plugin plugin; protected Plugin plugin;
protected Category category; protected Category category;
@ -56,9 +55,6 @@ public abstract class CompositeEditorProvider extends ComponentProviderAdapter
/** /**
* Construct a new stack editor provider. * Construct a new stack editor provider.
* @param plugin owner of this provider * @param plugin owner of this provider
* @param program program for data type; may be null if data type
* is part of an archive
* @param stack the stack frame to be edited
*/ */
protected CompositeEditorProvider(Plugin plugin) { protected CompositeEditorProvider(Plugin plugin) {
super(plugin.getTool(), "Composite Editor", plugin.getName()); super(plugin.getTool(), "Composite Editor", plugin.getName());
@ -283,6 +279,7 @@ public abstract class CompositeEditorProvider extends ComponentProviderAdapter
/** /**
* Prompts the user if the editor has unsaved changes. Saves the changes if * Prompts the user if the editor has unsaved changes. Saves the changes if
* the user indicates to do so. * the user indicates to do so.
* @param allowCancel true if allowed to cancel
* @return 0 if the user canceled; 1 if the user saved changes; * @return 0 if the user canceled; 1 if the user saved changes;
* 2 if the user did not to save changes; 3 if there was an error when * 2 if the user did not to save changes; 3 if there was an error when
* the changes were applied. * the changes were applied.

View File

@ -17,15 +17,15 @@ package ghidra.app.plugin.core.compositeeditor;
import java.util.Arrays; import java.util.Arrays;
import javax.swing.ImageIcon; import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import generic.theme.GIcon;
import ghidra.util.Swing; import ghidra.util.Swing;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import ghidra.util.task.TaskLauncher; import ghidra.util.task.TaskLauncher;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
/** /**
* Action for use in the structure data type editor. * Action for use in the structure data type editor.
@ -33,8 +33,7 @@ import resources.ResourceManager;
*/ */
public class CreateInternalStructureAction extends CompositeEditorTableAction { public class CreateInternalStructureAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = private final static Icon ICON = new GIcon("icon.plugin.composite.editor.create");
ResourceManager.loadImage("images/cstruct.png");
public final static String ACTION_NAME = "Create Structure From Selection"; public final static String ACTION_NAME = "Create Structure From Selection";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = private final static String DESCRIPTION =

View File

@ -17,22 +17,22 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import ghidra.util.task.TaskLauncher; import ghidra.util.task.TaskLauncher;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class DeleteAction extends CompositeEditorTableAction { public class DeleteAction extends CompositeEditorTableAction {
public final static String ACTION_NAME = "Delete Components"; public final static String ACTION_NAME = "Delete Components";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static ImageIcon ICON = ResourceManager.loadImage("images/edit-delete.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.delete");
private final static String[] popupPath = new String[] { "Delete" }; private final static String[] popupPath = new String[] { "Delete" };
private final static KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0); private final static KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);

View File

@ -18,21 +18,21 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
/** /**
* Action to duplicate the selected row * Action to duplicate the selected row
*/ */
public class DuplicateAction extends CompositeEditorTableAction { public class DuplicateAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = ResourceManager.loadImage("images/DuplicateData.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.duplicate");
public final static String ACTION_NAME = "Duplicate Component"; public final static String ACTION_NAME = "Duplicate Component";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Duplicate the selected component"; private final static String DESCRIPTION = "Duplicate the selected component";

View File

@ -18,26 +18,26 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import docking.widgets.dialogs.NumberInputDialog; import docking.widgets.dialogs.NumberInputDialog;
import generic.theme.GIcon;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import ghidra.util.task.TaskLauncher; import ghidra.util.task.TaskLauncher;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
/** /**
* Action that allows the user to make multiple duplicates of the selected item * Action that allows the user to make multiple duplicates of the selected item
*/ */
public class DuplicateMultipleAction extends CompositeEditorTableAction { public class DuplicateMultipleAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = private final static Icon ICON =
ResourceManager.loadImage("images/MultiDuplicateData.png"); new GIcon("icon.plugin.composite.editor.duplicate.multiple");
public final static String ACTION_NAME = "Duplicate Multiple of Component"; public final static String ACTION_NAME = "Duplicate Multiple of Component";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Duplicate multiple of the selected component"; private final static String DESCRIPTION = "Duplicate multiple of the selected component";

View File

@ -18,14 +18,14 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import resources.ResourceManager;
/** /**
* Action for use in the structure data type editor. * Action for use in the structure data type editor.
@ -33,8 +33,7 @@ import resources.ResourceManager;
*/ */
public class InsertUndefinedAction extends CompositeEditorTableAction { public class InsertUndefinedAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = private final static Icon ICON = new GIcon("icon.plugin.composite.editor.insert.undefined");
ResourceManager.loadImage("images/Plus.png");
public final static String ACTION_NAME = "Insert Undefined Byte"; public final static String ACTION_NAME = "Insert Undefined Byte";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Insert an undefined byte before the selection"; private final static String DESCRIPTION = "Insert an undefined byte before the selection";

View File

@ -18,13 +18,13 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import resources.ResourceManager;
/** /**
* Action for use in the composite data type editor. * Action for use in the composite data type editor.
@ -32,7 +32,7 @@ import resources.ResourceManager;
*/ */
public class MoveDownAction extends CompositeEditorTableAction { public class MoveDownAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = ResourceManager.loadImage("images/down.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.move.down");
public final static String ACTION_NAME = "Move Components Down"; public final static String ACTION_NAME = "Move Components Down";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Move the selected components down"; private final static String DESCRIPTION = "Move the selected components down";

View File

@ -18,13 +18,13 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import generic.theme.GIcon;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import resources.ResourceManager;
/** /**
* Action for use in the composite data type editor. * Action for use in the composite data type editor.
@ -32,7 +32,7 @@ import resources.ResourceManager;
*/ */
public class MoveUpAction extends CompositeEditorTableAction { public class MoveUpAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = ResourceManager.loadImage("images/up.png"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.move.up");
public final static String ACTION_NAME = "Move Components Up"; public final static String ACTION_NAME = "Move Components Up";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Move selected components up"; private final static String DESCRIPTION = "Move selected components up";

View File

@ -25,14 +25,12 @@ import javax.swing.event.DocumentListener;
import docking.widgets.EmptyBorderButton; import docking.widgets.EmptyBorderButton;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import resources.ResourceManager; import generic.theme.GIcon;
public class SearchControlPanel extends JPanel { public class SearchControlPanel extends JPanel {
private static final Icon NEXT_ICON = ResourceManager.getScaledIcon( private static final Icon NEXT_ICON = new GIcon("icon.plugin.composite.editor.search.next");
ResourceManager.loadImage("images/go-down.tango.16.png"), 16, 16); private static final Icon PREV_ICON = new GIcon("icon.plugin.composite.editor.search.previous");
private static final Icon PREV_ICON = ResourceManager.getScaledIcon(
ResourceManager.loadImage("images/go-up.tango.16.png"), 16, 16);
private CompositeEditorPanel editorPanel; private CompositeEditorPanel editorPanel;
private JTextField textField; private JTextField textField;

View File

@ -19,9 +19,9 @@ import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import generic.theme.GIcon;
import ghidra.app.services.DataTypeManagerService; import ghidra.app.services.DataTypeManagerService;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import resources.ResourceManager;
/** /**
* Shows the editor's data type in the UI using the {@link DataTypeManagerService}. * Shows the editor's data type in the UI using the {@link DataTypeManagerService}.
@ -31,14 +31,13 @@ public class ShowDataTypeInTreeAction extends CompositeEditorTableAction {
// This action should go after the row-based actions, which have this group: // This action should go after the row-based actions, which have this group:
// 3_COMPONENT_EDITOR_ACTION // 3_COMPONENT_EDITOR_ACTION
private static final String TOOLBAR_GROUP = "4_COMPONENT_EDITOR_ACTION"; private static final String TOOLBAR_GROUP = "4_COMPONENT_EDITOR_ACTION";
private static final Icon ICON = ResourceManager.loadImage("images/go-home.png"); private static final Icon ICON = new GIcon("icon.plugin.composite.editor.show.type");
public ShowDataTypeInTreeAction(CompositeEditorProvider provider) { public ShowDataTypeInTreeAction(CompositeEditorProvider provider) {
super(provider, "Show In Data Type Manager", TOOLBAR_GROUP, null /*popupPath*/, super(provider, "Show In Data Type Manager", TOOLBAR_GROUP, null /*popupPath*/,
null /*menuPath*/, ICON); null /*menuPath*/, ICON);
setToolBarData( setToolBarData(new ToolBarData(ICON, TOOLBAR_GROUP));
new ToolBarData(ResourceManager.loadImage("images/go-home.png"), TOOLBAR_GROUP));
} }
@Override @Override

View File

@ -15,19 +15,19 @@
*/ */
package ghidra.app.plugin.core.compositeeditor; package ghidra.app.plugin.core.compositeeditor;
import javax.swing.ImageIcon; import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.Plugin;
import ghidra.program.model.data.Structure; import ghidra.program.model.data.Structure;
import resources.ResourceManager;
/** /**
* Editor for a Structure Data Type. * Editor for a Structure Data Type.
*/ */
public class StructureEditorProvider extends CompositeEditorProvider { public class StructureEditorProvider extends CompositeEditorProvider {
protected static final ImageIcon STRUCTURE_EDITOR_ICON = protected static final Icon STRUCTURE_EDITOR_ICON =
ResourceManager.loadImage("images/cstruct.png"); new GIcon("icon.plugin.composite.editor.provider.structure");
public StructureEditorProvider(Plugin plugin, Structure structureDataType, public StructureEditorProvider(Plugin plugin, Structure structureDataType,
boolean showHexNumbers) { boolean showHexNumbers) {

View File

@ -15,19 +15,19 @@
*/ */
package ghidra.app.plugin.core.compositeeditor; package ghidra.app.plugin.core.compositeeditor;
import javax.swing.ImageIcon; import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.Plugin;
import ghidra.program.model.data.Union; import ghidra.program.model.data.Union;
import resources.ResourceManager;
/** /**
* Editor for a Union Data Type. * Editor for a Union Data Type.
*/ */
public class UnionEditorProvider extends CompositeEditorProvider { public class UnionEditorProvider extends CompositeEditorProvider {
protected static final ImageIcon UNION_EDITOR_ICON = protected static final Icon UNION_EDITOR_ICON =
ResourceManager.loadImage("images/cUnion.png"); new GIcon("icon.plugin.composite.editor.provider.union");
public UnionEditorProvider(Plugin plugin, Union unionDataType, boolean showInHex) { public UnionEditorProvider(Plugin plugin, Union unionDataType, boolean showInHex) {
super(plugin); super(plugin);

View File

@ -17,17 +17,17 @@ package ghidra.app.plugin.core.compositeeditor;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.KeyBindingData; import docking.action.KeyBindingData;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GIcon;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.exception.UsrException; import ghidra.util.exception.UsrException;
import ghidra.util.task.TaskLauncher; import ghidra.util.task.TaskLauncher;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
/** /**
* Action for use in the composite data type editor. * Action for use in the composite data type editor.
@ -35,7 +35,7 @@ import resources.ResourceManager;
*/ */
public class UnpackageAction extends CompositeEditorTableAction { public class UnpackageAction extends CompositeEditorTableAction {
private final static ImageIcon ICON = ResourceManager.loadImage("images/Unpackage.gif"); private final static Icon ICON = new GIcon("icon.plugin.composite.editor.unpackage");
public final static String ACTION_NAME = "Unpackage Component"; public final static String ACTION_NAME = "Unpackage Component";
private final static String GROUP_NAME = COMPONENT_ACTION_GROUP; private final static String GROUP_NAME = COMPONENT_ACTION_GROUP;
private final static String DESCRIPTION = "Replace the selected composite with its components"; private final static String DESCRIPTION = "Replace the selected composite with its components";

View File

@ -25,6 +25,7 @@ import javax.swing.text.Document;
import docking.*; import docking.*;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.services.*; import ghidra.app.services.*;
import ghidra.framework.main.ConsoleTextPane; import ghidra.framework.main.ConsoleTextPane;
import ghidra.framework.options.OptionsChangeListener; import ghidra.framework.options.OptionsChangeListener;
@ -36,7 +37,6 @@ import ghidra.program.model.listing.Program;
import ghidra.program.model.symbol.SymbolIterator; import ghidra.program.model.symbol.SymbolIterator;
import ghidra.program.model.symbol.SymbolTable; import ghidra.program.model.symbol.SymbolTable;
import ghidra.util.*; import ghidra.util.*;
import resources.ResourceManager;
public class ConsoleComponentProvider extends ComponentProviderAdapter public class ConsoleComponentProvider extends ComponentProviderAdapter
implements ConsoleService, OptionsChangeListener { implements ConsoleService, OptionsChangeListener {
@ -44,10 +44,6 @@ public class ConsoleComponentProvider extends ComponentProviderAdapter
private static final String OLD_NAME = "ConsolePlugin"; private static final String OLD_NAME = "ConsolePlugin";
private static final String NAME = "Console"; private static final String NAME = "Console";
private static final String CONSOLE_GIF = "images/monitor.png";
private static final String CLEAR_GIF = "images/erase16.png";
private static final String SCROLL_LOCK_GIF = "images/lock.png";
private static final Font DEFAULT_FONT = new Font("monospaced", Font.PLAIN, 12); private static final Font DEFAULT_FONT = new Font("monospaced", Font.PLAIN, 12);
private static final String FONT_OPTION_LABEL = "Font"; private static final String FONT_OPTION_LABEL = "Font";
private static final String FONT_DESCRIPTION = private static final String FONT_DESCRIPTION =
@ -74,7 +70,7 @@ public class ConsoleComponentProvider extends ComponentProviderAdapter
setDefaultWindowPosition(WindowPosition.BOTTOM); setDefaultWindowPosition(WindowPosition.BOTTOM);
setHelpLocation(new HelpLocation(owner, owner)); setHelpLocation(new HelpLocation(owner, owner));
setIcon(ResourceManager.loadImage(CONSOLE_GIF)); setIcon(new GIcon("icon.plugin.console.provider"));
setWindowMenuGroup("Console"); setWindowMenuGroup("Console");
setSubTitle("Scripting"); setSubTitle("Scripting");
setTitle("Console"); setTitle("Console");
@ -281,7 +277,7 @@ public class ConsoleComponentProvider extends ComponentProviderAdapter
}; };
clearAction.setDescription("Clear Console"); clearAction.setDescription("Clear Console");
// ACTIONS - auto generated // ACTIONS - auto generated
clearAction.setToolBarData(new ToolBarData(ResourceManager.loadImage(CLEAR_GIF), null)); clearAction.setToolBarData(new ToolBarData(new GIcon("icon.plugin.console.clear"), null));
clearAction.setEnabled(true); clearAction.setEnabled(true);
@ -293,7 +289,8 @@ public class ConsoleComponentProvider extends ComponentProviderAdapter
}; };
scrollAction.setDescription("Scroll Lock"); scrollAction.setDescription("Scroll Lock");
scrollAction scrollAction
.setToolBarData(new ToolBarData(ResourceManager.loadImage(SCROLL_LOCK_GIF), null)); .setToolBarData(
new ToolBarData(new GIcon("icon.plugin.console.scroll.lock"), null));
scrollAction.setEnabled(true); scrollAction.setEnabled(true);
scrollAction.setSelected(scrollLock); scrollAction.setSelected(scrollLock);

View File

@ -44,7 +44,6 @@ import ghidra.util.HelpLocation;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.filechooser.ExtensionFileFilter; import ghidra.util.filechooser.ExtensionFileFilter;
import resources.Icons; import resources.Icons;
import resources.ResourceManager;
/** /**
* Dialog that shows files used for parsing C header files. The profile has a list of * Dialog that shows files used for parsing C header files. The profile has a list of
@ -341,7 +340,7 @@ class ParseDialog extends DialogComponentProvider {
} }
}; };
saveAction.setEnabled(false); saveAction.setEnabled(false);
Icon icon = ResourceManager.loadImage("images/disk.png"); Icon icon = Icons.SAVE_ICON;
String saveGroup = "save"; String saveGroup = "save";
saveAction.setMenuBarData(new MenuData(new String[] { "Save" }, icon, saveGroup)); saveAction.setMenuBarData(new MenuData(new String[] { "Save" }, icon, saveGroup));
saveAction.setToolBarData(new ToolBarData(icon, saveGroup)); saveAction.setToolBarData(new ToolBarData(icon, saveGroup));
@ -355,7 +354,7 @@ class ParseDialog extends DialogComponentProvider {
} }
}; };
saveAsAction.setEnabled(true); saveAsAction.setEnabled(true);
icon = ResourceManager.loadImage("images/disk_save_as.png"); icon = Icons.SAVE_AS_ICON;
saveAsAction.setMenuBarData(new MenuData(new String[] { "Save As..." }, icon, saveGroup)); saveAsAction.setMenuBarData(new MenuData(new String[] { "Save As..." }, icon, saveGroup));
saveAsAction.setToolBarData(new ToolBarData(icon, saveGroup)); saveAsAction.setToolBarData(new ToolBarData(icon, saveGroup));
saveAsAction.setDescription("Save profile to new name"); saveAsAction.setDescription("Save profile to new name");
@ -369,7 +368,7 @@ class ParseDialog extends DialogComponentProvider {
}; };
clearAction.setEnabled(true); clearAction.setEnabled(true);
icon = ResourceManager.loadImage("images/erase16.png"); icon = Icons.CLEAR_ICON;
String clearGroup = "clear"; String clearGroup = "clear";
clearAction clearAction
.setMenuBarData(new MenuData(new String[] { "Clear Profile" }, icon, clearGroup)); .setMenuBarData(new MenuData(new String[] { "Clear Profile" }, icon, clearGroup));
@ -399,7 +398,7 @@ class ParseDialog extends DialogComponentProvider {
} }
}; };
deleteAction.setEnabled(false); deleteAction.setEnabled(false);
icon = ResourceManager.loadImage("images/edit-delete.png"); icon = Icons.DELETE_ICON;
String deleteGroup = "Xdelete"; String deleteGroup = "Xdelete";
deleteAction.setMenuBarData(new MenuData(new String[] { "Delete" }, icon, deleteGroup)); deleteAction.setMenuBarData(new MenuData(new String[] { "Delete" }, icon, deleteGroup));
deleteAction.setToolBarData(new ToolBarData(icon, deleteGroup)); deleteAction.setToolBarData(new ToolBarData(icon, deleteGroup));

View File

@ -37,6 +37,7 @@ import docking.widgets.PopupWindow;
import docking.widgets.textpane.GHtmlTextPane; import docking.widgets.textpane.GHtmlTextPane;
import docking.widgets.tree.*; import docking.widgets.tree.*;
import docking.widgets.tree.support.GTreeSelectionEvent.EventOrigin; import docking.widgets.tree.support.GTreeSelectionEvent.EventOrigin;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.actions.*; import ghidra.app.plugin.core.datamgr.actions.*;
import ghidra.app.plugin.core.datamgr.actions.associate.*; import ghidra.app.plugin.core.datamgr.actions.associate.*;
import ghidra.app.plugin.core.datamgr.archive.*; import ghidra.app.plugin.core.datamgr.archive.*;
@ -55,12 +56,10 @@ import ghidra.program.model.listing.DataTypeArchive;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.util.*; import ghidra.util.*;
import ghidra.util.task.SwingUpdateManager; import ghidra.util.task.SwingUpdateManager;
import resources.ResourceManager;
import util.HistoryList; import util.HistoryList;
public class DataTypesProvider extends ComponentProviderAdapter { public class DataTypesProvider extends ComponentProviderAdapter {
private static final String DATA_TYPES_ICON = "images/dataTypes.png";
private static final String TITLE = "Data Type Manager"; private static final String TITLE = "Data Type Manager";
private static final String POINTER_FILTER_STATE = "PointerFilterState"; private static final String POINTER_FILTER_STATE = "PointerFilterState";
private static final String ARRAY_FILTER_STATE = "ArrayFilterState"; private static final String ARRAY_FILTER_STATE = "ArrayFilterState";
@ -103,7 +102,7 @@ public class DataTypesProvider extends ComponentProviderAdapter {
this.plugin = plugin; this.plugin = plugin;
setTitle(TITLE); setTitle(TITLE);
setIcon(ResourceManager.loadImage(DATA_TYPES_ICON)); setIcon(new GIcon("icon.plugin.datatypes.provider"));
addToToolbar(); addToToolbar();
navigationHistory.setAllowDuplicates(true); navigationHistory.setAllowDuplicates(true);

View File

@ -20,11 +20,11 @@ import javax.swing.Icon;
import docking.menu.ActionState; import docking.menu.ActionState;
import docking.menu.MultiStateDockingAction; import docking.menu.MultiStateDockingAction;
import docking.widgets.EventTrigger; import docking.widgets.EventTrigger;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin; import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
import ghidra.program.model.data.DataTypeConflictHandler; import ghidra.program.model.data.DataTypeConflictHandler;
import ghidra.program.model.data.DataTypeConflictHandler.ConflictResolutionPolicy; import ghidra.program.model.data.DataTypeConflictHandler.ConflictResolutionPolicy;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager;
public class ConflictHandlerModesAction extends public class ConflictHandlerModesAction extends
MultiStateDockingAction<DataTypeConflictHandler.ConflictResolutionPolicy> { MultiStateDockingAction<DataTypeConflictHandler.ConflictResolutionPolicy> {
@ -41,10 +41,12 @@ public class ConflictHandlerModesAction extends
new HelpLocation(plugin.getName(), "conflict_mode"); new HelpLocation(plugin.getName(), "conflict_mode");
setHelpLocation(conflictModesHelpLocation); setHelpLocation(conflictModesHelpLocation);
Icon renameAndAddIcon = ResourceManager.loadImage("images/conflictRename.png"); //@formatter:off
Icon useExistingIcon = ResourceManager.loadImage("images/conflictKeep.png"); Icon renameAndAddIcon = new GIcon("icon.plugin.datatypes.conflict.mode.rename.and.add");
Icon replaceExistingIcon = ResourceManager.loadImage("images/conflictReplace.png"); Icon useExistingIcon = new GIcon("icon.plugin.datatypes.conflict.mode.use.existing");
Icon replaceDefaultIcon = ResourceManager.loadImage("images/conflictReplaceOrRename.png"); Icon replaceExistingIcon = new GIcon("icon.plugin.datatypes.conflict.mode.replace.existing");
Icon replaceDefaultIcon = new GIcon("icon.plugin.datatypes.conflict.mode.replace.or.rename");
//@formatter:on
ActionState<DataTypeConflictHandler.ConflictResolutionPolicy> renameAndAddState = ActionState<DataTypeConflictHandler.ConflictResolutionPolicy> renameAndAddState =
new ActionState<>( new ActionState<>(

View File

@ -23,22 +23,23 @@ import javax.swing.tree.TreePath;
import docking.ActionContext; import docking.ActionContext;
import docking.action.ToggleDockingAction; import docking.action.ToggleDockingAction;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin; import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
import ghidra.app.plugin.core.datamgr.DataTypesActionContext; import ghidra.app.plugin.core.datamgr.DataTypesActionContext;
import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree; import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import resources.ResourceManager;
public class FilterArraysAction extends ToggleDockingAction { public class FilterArraysAction extends ToggleDockingAction {
private static final Icon FILTER_ARRAYS_ICON = //@formatter:off
ResourceManager.loadImage("images/FilterArrays.png"); private static final Icon FILTER_ON_ICON = new GIcon("icon.plugin.datatypes.filter.arrays.on");
private static final Icon ARRAY_ICON = ResourceManager.loadImage("images/Array.png"); private static final Icon FILTER_OFF_ICON = new GIcon("icon.plugin.datatypes.filter.arrays.off");
//@formatter:on
public FilterArraysAction(DataTypeManagerPlugin plugin) { public FilterArraysAction(DataTypeManagerPlugin plugin) {
super("Filter Arrays", plugin.getName()); super("Filter Arrays", plugin.getName());
this.setToolBarData(new ToolBarData(FILTER_ARRAYS_ICON, "filters")); this.setToolBarData(new ToolBarData(FILTER_ON_ICON, "filters"));
setDescription(HTMLUtilities.toHTML( setDescription(HTMLUtilities.toHTML(
"Toggle whether or not Arrays are\n" + "displayed in the Data Type Manager tree.")); "Toggle whether or not Arrays are\n" + "displayed in the Data Type Manager tree."));
@ -66,7 +67,7 @@ public class FilterArraysAction extends ToggleDockingAction {
@Override @Override
public void setSelected(boolean selected) { public void setSelected(boolean selected) {
getToolBarData().setIcon(selected ? FILTER_ARRAYS_ICON : ARRAY_ICON); getToolBarData().setIcon(selected ? FILTER_ON_ICON : FILTER_OFF_ICON);
super.setSelected(selected); super.setSelected(selected);
} }
} }

View File

@ -23,21 +23,23 @@ import javax.swing.tree.TreePath;
import docking.ActionContext; import docking.ActionContext;
import docking.action.ToggleDockingAction; import docking.action.ToggleDockingAction;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin; import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
import ghidra.app.plugin.core.datamgr.DataTypesActionContext; import ghidra.app.plugin.core.datamgr.DataTypesActionContext;
import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree; import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import resources.ResourceManager;
public class FilterPointersAction extends ToggleDockingAction { public class FilterPointersAction extends ToggleDockingAction {
private static final Icon FILTER_POINTERS_ICON =
ResourceManager.loadImage("images/FilterPointers.png"); //@formatter:off
private static final Icon POINTER_ICON = ResourceManager.loadImage("images/fingerPointer.png"); private static final Icon FILTER_ON_ICON = new GIcon("icon.plugin.datatypes.filter.pointers.on");
private static final Icon FILTER_OFF_ICON = new GIcon("icon.plugin.datatypes.filter.pointers.off");
//@formatter:on
public FilterPointersAction(DataTypeManagerPlugin plugin) { public FilterPointersAction(DataTypeManagerPlugin plugin) {
super("Filter Pointers", plugin.getName()); super("Filter Pointers", plugin.getName());
this.setToolBarData(new ToolBarData(FILTER_POINTERS_ICON, "filters")); this.setToolBarData(new ToolBarData(FILTER_ON_ICON, "filters"));
setDescription(HTMLUtilities.toHTML( setDescription(HTMLUtilities.toHTML(
"Toggle whether or not Pointers are\n" + "displayed in the Data Type Manager tree.")); "Toggle whether or not Pointers are\n" + "displayed in the Data Type Manager tree."));
@ -67,7 +69,7 @@ public class FilterPointersAction extends ToggleDockingAction {
@Override @Override
public void setSelected(boolean selected) { public void setSelected(boolean selected) {
getToolBarData().setIcon(selected ? FILTER_POINTERS_ICON : POINTER_ICON); getToolBarData().setIcon(selected ? FILTER_ON_ICON : FILTER_OFF_ICON);
super.setSelected(selected); super.setSelected(selected);
} }
} }

View File

@ -15,7 +15,7 @@
*/ */
package ghidra.app.plugin.core.datamgr.actions.associate; package ghidra.app.plugin.core.datamgr.actions.associate;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import docking.ActionContext; import docking.ActionContext;
@ -24,6 +24,7 @@ import docking.action.MenuData;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.tree.GTree; import docking.widgets.tree.GTree;
import docking.widgets.tree.GTreeNode; import docking.widgets.tree.GTreeNode;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.*; import ghidra.app.plugin.core.datamgr.*;
import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler; import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler;
import ghidra.app.plugin.core.datamgr.tree.DataTypeNode; import ghidra.app.plugin.core.datamgr.tree.DataTypeNode;
@ -31,13 +32,12 @@ import ghidra.app.plugin.core.datamgr.util.DataTypeUtils;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.util.Msg; import ghidra.util.Msg;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.EmptyIcon; import resources.icons.EmptyIcon;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class CommitSingleDataTypeAction extends DockingAction { public class CommitSingleDataTypeAction extends DockingAction {
private static ImageIcon COMMIT_ICON = ResourceManager.loadImage("images/smallRightArrow.png"); private static Icon COMMIT_ICON = new GIcon("icon.plugin.datatypes.commit.single.type");
private final DataTypeManagerPlugin plugin; private final DataTypeManagerPlugin plugin;

View File

@ -15,7 +15,7 @@
*/ */
package ghidra.app.plugin.core.datamgr.actions.associate; package ghidra.app.plugin.core.datamgr.actions.associate;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import docking.ActionContext; import docking.ActionContext;
@ -24,19 +24,19 @@ import docking.action.MenuData;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.tree.GTree; import docking.widgets.tree.GTree;
import docking.widgets.tree.GTreeNode; import docking.widgets.tree.GTreeNode;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.*; import ghidra.app.plugin.core.datamgr.*;
import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler; import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler;
import ghidra.app.plugin.core.datamgr.tree.DataTypeNode; import ghidra.app.plugin.core.datamgr.tree.DataTypeNode;
import ghidra.app.plugin.core.datamgr.util.DataTypeUtils; import ghidra.app.plugin.core.datamgr.util.DataTypeUtils;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.EmptyIcon; import resources.icons.EmptyIcon;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class UpdateSingleDataTypeAction extends DockingAction { public class UpdateSingleDataTypeAction extends DockingAction {
private static ImageIcon UPDATE_ICON = ResourceManager.loadImage("images/smallLeftArrow.png"); private static Icon UPDATE_ICON = new GIcon("icon.plugin.datatypes.associate.single.type");
private final DataTypeManagerPlugin plugin; private final DataTypeManagerPlugin plugin;

View File

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,13 +15,13 @@
*/ */
package ghidra.app.plugin.core.datamgr.archive; package ghidra.app.plugin.core.datamgr.archive;
import ghidra.app.merge.DataTypeManagerOwner;
import ghidra.util.exception.DuplicateFileException;
import java.awt.Component; import java.awt.Component;
import java.io.IOException; import java.io.IOException;
import javax.swing.ImageIcon; import javax.swing.Icon;
import ghidra.app.merge.DataTypeManagerOwner;
import ghidra.util.exception.DuplicateFileException;
/** /**
* This is an interface for data type archives. * This is an interface for data type archives.
@ -63,13 +62,15 @@ public interface Archive extends DataTypeManagerOwner, Comparable<Archive> {
/** /**
* Saves this archive. Some archives cannot be saved. * Saves this archive. Some archives cannot be saved.
* @throws DuplicateFileException if there is an exception saving
* @throws IOException if there is an exception saving
*/ */
public void save() throws DuplicateFileException, IOException; public void save() throws DuplicateFileException, IOException;
/** /**
* Saves this archive to a newly named file. * Saves this archive to a newly named file.
* @param component * @param component the parent component the any dialogs shown
* @throws IOException * @throws IOException if there is an exception saving
*/ */
public void saveAs(Component component) throws IOException; public void saveAs(Component component) throws IOException;
@ -79,5 +80,5 @@ public interface Archive extends DataTypeManagerOwner, Comparable<Archive> {
* false indicates the node is closed. * false indicates the node is closed.
* @return the archive's icon. * @return the archive's icon.
*/ */
public ImageIcon getIcon(boolean expanded); public Icon getIcon(boolean expanded);
} }

View File

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,21 +15,20 @@
*/ */
package ghidra.app.plugin.core.datamgr.archive; package ghidra.app.plugin.core.datamgr.archive;
import java.awt.Component;
import java.io.IOException;
import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.program.model.data.BuiltInDataTypeManager; import ghidra.program.model.data.BuiltInDataTypeManager;
import ghidra.program.model.data.DataTypeManager; import ghidra.program.model.data.DataTypeManager;
import ghidra.util.exception.DuplicateFileException; import ghidra.util.exception.DuplicateFileException;
import java.awt.Component;
import java.io.IOException;
import javax.swing.ImageIcon;
import resources.ResourceManager;
public class BuiltInArchive implements Archive { public class BuiltInArchive implements Archive {
private static ImageIcon CLOSED_ICON = ResourceManager.loadImage("images/closedBookBrown.png"); private static Icon CLOSED_ICON = new GIcon("icon.plugin.datatypes.archive.built.in.closed");
private static ImageIcon OPEN_ICON = ResourceManager.loadImage("images/openBookBrown.png"); private static Icon OPEN_ICON = new GIcon("icon.plugin.datatypes.archive.built.in.open");
private DataTypeManagerHandler archiveManager; private DataTypeManagerHandler archiveManager;
private BuiltInDataTypeManager dataTypeManager; private BuiltInDataTypeManager dataTypeManager;
@ -39,43 +37,53 @@ public class BuiltInArchive implements Archive {
this.dataTypeManager = dataTypeManager; this.dataTypeManager = dataTypeManager;
} }
@Override
public DataTypeManager getDataTypeManager() { public DataTypeManager getDataTypeManager() {
return dataTypeManager; return dataTypeManager;
} }
@Override
public String getName() { public String getName() {
return dataTypeManager.getName(); return dataTypeManager.getName();
} }
@Override
public int compareTo(Archive archive) { public int compareTo(Archive archive) {
return -1; // Built-ins are always at the top return -1; // Built-ins are always at the top
} }
@Override
public boolean isModifiable() { public boolean isModifiable() {
return false; // Can't change the data types that are in Built-Ins. return false; // Can't change the data types that are in Built-Ins.
} }
@Override
public void close() { public void close() {
// Not allowed to close the Built In Data Type Manager. // Not allowed to close the Built In Data Type Manager.
} }
@Override
public boolean isChanged() { public boolean isChanged() {
return false; // Can't change. return false; // Can't change.
} }
@Override
public boolean isSavable() { public boolean isSavable() {
return false; // Can't save. return false; // Can't save.
} }
@Override
public void save() throws DuplicateFileException, IOException { public void save() throws DuplicateFileException, IOException {
// Can't "Save" so do nothing. // Can't "Save" so do nothing.
} }
@Override
public void saveAs(Component component) throws IOException { public void saveAs(Component component) throws IOException {
// Can't "Save As" so do nothing. // Can't "Save As" so do nothing.
} }
public ImageIcon getIcon(boolean expanded) { @Override
public Icon getIcon(boolean expanded) {
return expanded ? OPEN_ICON : CLOSED_ICON; return expanded ? OPEN_ICON : CLOSED_ICON;
} }
} }

View File

@ -19,13 +19,13 @@ import java.awt.Component;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import javax.swing.ImageIcon; import javax.swing.Icon;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import generic.theme.GIcon;
import ghidra.framework.store.LockException; import ghidra.framework.store.LockException;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.util.exception.DuplicateFileException; import ghidra.util.exception.DuplicateFileException;
import resources.ResourceManager;
/** /**
* Manages a DataTypeFileManager and relative state. For example, whether the manager is writable * Manages a DataTypeFileManager and relative state. For example, whether the manager is writable
@ -33,8 +33,8 @@ import resources.ResourceManager;
*/ */
public class FileArchive implements Archive { public class FileArchive implements Archive {
private static ImageIcon CLOSED_ICON = ResourceManager.loadImage("images/closedBookGreen.png"); private static Icon CLOSED_ICON = new GIcon("icon.plugin.datatypes.archive.file.closed");
private static ImageIcon OPEN_ICON = ResourceManager.loadImage("images/openBookGreen.png"); private static Icon OPEN_ICON = new GIcon("icon.plugin.datatypes.archive.file.open");
private ResourceFile archiveFile; private ResourceFile archiveFile;
private boolean hasWriteLock; private boolean hasWriteLock;
private boolean changed; private boolean changed;
@ -292,7 +292,7 @@ public class FileArchive implements Archive {
} }
@Override @Override
public ImageIcon getIcon(boolean expanded) { public Icon getIcon(boolean expanded) {
return expanded ? OPEN_ICON : CLOSED_ICON; return expanded ? OPEN_ICON : CLOSED_ICON;
} }
} }

View File

@ -18,17 +18,17 @@ package ghidra.app.plugin.core.datamgr.archive;
import java.awt.Component; import java.awt.Component;
import java.io.IOException; import java.io.IOException;
import javax.swing.ImageIcon; import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.util.UniversalID; import ghidra.util.UniversalID;
import ghidra.util.exception.DuplicateFileException; import ghidra.util.exception.DuplicateFileException;
import resources.ResourceManager;
public class InvalidFileArchive implements Archive { public class InvalidFileArchive implements Archive {
private static final ImageIcon INVALID_ARCHIVE_ICON = private static final Icon INVALID_ARCHIVE_ICON =
ResourceManager.loadImage("images/closedFolderInvalid.png"); new GIcon("icon.plugin.datatypes.archive.invalid");
private DataTypeManagerHandler archiveManager; private DataTypeManagerHandler archiveManager;
private UniversalID universalID; private UniversalID universalID;
private ArchiveType archiveType; private ArchiveType archiveType;
@ -104,7 +104,7 @@ public class InvalidFileArchive implements Archive {
} }
@Override @Override
public ImageIcon getIcon(boolean expanded) { public Icon getIcon(boolean expanded) {
return INVALID_ARCHIVE_ICON; return INVALID_ARCHIVE_ICON;
} }
} }

View File

@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,23 +15,22 @@
*/ */
package ghidra.app.plugin.core.datamgr.archive; package ghidra.app.plugin.core.datamgr.archive;
import java.awt.Component;
import java.io.IOException;
import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFile;
import ghidra.program.model.data.DataTypeManager; import ghidra.program.model.data.DataTypeManager;
import ghidra.program.model.data.DataTypeManagerChangeListener; import ghidra.program.model.data.DataTypeManagerChangeListener;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.util.exception.DuplicateFileException; import ghidra.util.exception.DuplicateFileException;
import java.awt.Component;
import java.io.IOException;
import javax.swing.ImageIcon;
import resources.ResourceManager;
public class ProgramArchive implements DomainFileArchive { public class ProgramArchive implements DomainFileArchive {
private static ImageIcon CLOSED_ICON = ResourceManager.loadImage("images/closedBookRed.png"); private static Icon CLOSED_ICON = new GIcon("icon.plugin.datatypes.archive.program.closed");
private static ImageIcon OPEN_ICON = ResourceManager.loadImage("images/openBookRed.png"); private static Icon OPEN_ICON = new GIcon("icon.plugin.datatypes.archive.program.open");
private final Program program; private final Program program;
DataTypeManagerChangeListener categoryListener; // hold on to since it is stored in a weak set DataTypeManagerChangeListener categoryListener; // hold on to since it is stored in a weak set
private DataTypeManager dataTypeManager; private DataTypeManager dataTypeManager;
@ -105,7 +103,7 @@ public class ProgramArchive implements DomainFileArchive {
} }
@Override @Override
public ImageIcon getIcon(boolean expanded) { public Icon getIcon(boolean expanded) {
return expanded ? OPEN_ICON : CLOSED_ICON; return expanded ? OPEN_ICON : CLOSED_ICON;
} }
} }

View File

@ -15,21 +15,20 @@
*/ */
package ghidra.app.plugin.core.datamgr.archive; package ghidra.app.plugin.core.datamgr.archive;
import java.awt.Component;
import java.io.IOException;
import javax.swing.Icon;
import generic.theme.GIcon;
import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFile;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.program.model.listing.DataTypeArchive; import ghidra.program.model.listing.DataTypeArchive;
import java.awt.Component;
import java.io.IOException;
import javax.swing.ImageIcon;
import resources.ResourceManager;
public class ProjectArchive implements DomainFileArchive { public class ProjectArchive implements DomainFileArchive {
private static ImageIcon CLOSED_ICON = ResourceManager.loadImage("images/closedBookBlue.png"); private static Icon CLOSED_ICON = new GIcon("icon.plugin.datatypes.archive.project.closed");
private static ImageIcon OPEN_ICON = ResourceManager.loadImage("images/openBookBlue.png"); private static Icon OPEN_ICON = new GIcon("icon.plugin.datatypes.archive.project.open");
private DataTypeArchive dataTypeArchive; private DataTypeArchive dataTypeArchive;
private DomainFile originalDomainFile; private DomainFile originalDomainFile;
DataTypeManagerChangeListener categoryListener; // hold on to since it is stored in a weak set DataTypeManagerChangeListener categoryListener; // hold on to since it is stored in a weak set
@ -115,7 +114,7 @@ public class ProjectArchive implements DomainFileArchive {
} }
@Override @Override
public ImageIcon getIcon(boolean expanded) { public Icon getIcon(boolean expanded) {
return expanded ? OPEN_ICON : CLOSED_ICON; return expanded ? OPEN_ICON : CLOSED_ICON;
} }
@ -140,7 +139,8 @@ public class ProjectArchive implements DomainFileArchive {
} }
@Override @Override
public void categoryRenamed(DataTypeManager dtm, CategoryPath oldPath, CategoryPath newPath) { public void categoryRenamed(DataTypeManager dtm, CategoryPath oldPath,
CategoryPath newPath) {
if (!oldPath.equals(newPath)) { if (!oldPath.equals(newPath)) {
fireStateChanged(); fireStateChanged();
} }
@ -167,7 +167,8 @@ public class ProjectArchive implements DomainFileArchive {
} }
@Override @Override
public void dataTypeRenamed(DataTypeManager dtm, DataTypePath oldPath, DataTypePath newPath) { public void dataTypeRenamed(DataTypeManager dtm, DataTypePath oldPath,
DataTypePath newPath) {
fireStateChanged(); fireStateChanged();
} }

View File

@ -19,7 +19,7 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.*; import java.util.*;
import javax.swing.ImageIcon; import javax.swing.Icon;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
@ -31,6 +31,7 @@ import docking.ActionContext;
import docking.ComponentProvider; import docking.ComponentProvider;
import docking.action.*; import docking.action.*;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import ghidra.app.plugin.core.compositeeditor.EditorListener; import ghidra.app.plugin.core.compositeeditor.EditorListener;
import ghidra.app.plugin.core.compositeeditor.EditorProvider; import ghidra.app.plugin.core.compositeeditor.EditorProvider;
@ -46,7 +47,6 @@ import ghidra.util.*;
import ghidra.util.datastruct.WeakDataStructureFactory; import ghidra.util.datastruct.WeakDataStructureFactory;
import ghidra.util.datastruct.WeakSet; import ghidra.util.datastruct.WeakSet;
import ghidra.util.exception.DuplicateNameException; import ghidra.util.exception.DuplicateNameException;
import resources.ResourceManager;
import util.CollectionUtils; import util.CollectionUtils;
/** /**
@ -55,11 +55,10 @@ import util.CollectionUtils;
public class EnumEditorProvider extends ComponentProviderAdapter public class EnumEditorProvider extends ComponentProviderAdapter
implements ChangeListener, EditorProvider { implements ChangeListener, EditorProvider {
static final ImageIcon EDITOR_ICON = ResourceManager.loadImage("images/enum.png"); static final Icon EDITOR_ICON = new GIcon("icon.plugin.enum.editor.provider");
private final static ImageIcon APPLY_ICON = ResourceManager.loadImage("images/disk.png"); private final static Icon APPLY_ICON = new GIcon("icon.plugin.enum.editor.apply");
private final static ImageIcon ADD_ICON = ResourceManager.loadImage("images/Plus.png"); private final static Icon ADD_ICON = new GIcon("icon.plugin.enum.editor.add");
private final static ImageIcon DELETE_ICON = private final static Icon DELETE_ICON = new GIcon("icon.plugin.enum.editor.delete");
ResourceManager.loadImage("images/edit-delete.png");
private final static String HELP_TOPIC = "DataTypeEditors"; private final static String HELP_TOPIC = "DataTypeEditors";
private final static int CANCEL = 0; private final static int CANCEL = 0;
@ -303,7 +302,7 @@ public class EnumEditorProvider extends ComponentProviderAdapter
showEnumAction.setEnabled(true); showEnumAction.setEnabled(true);
String thirdGroup = "FThirdGroup"; String thirdGroup = "FThirdGroup";
showEnumAction.setToolBarData( showEnumAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/go-home.png"), thirdGroup)); new ToolBarData(new GIcon("icon.plugin.enum.editor.home"), thirdGroup));
tool.addLocalAction(this, applyAction); tool.addLocalAction(this, applyAction);
tool.addLocalAction(this, addAction); tool.addLocalAction(this, addAction);

View File

@ -27,6 +27,7 @@ import javax.swing.tree.TreePath;
import docking.widgets.tree.*; import docking.widgets.tree.*;
import docking.widgets.tree.internal.DefaultGTreeDataTransformer; import docking.widgets.tree.internal.DefaultGTreeDataTransformer;
import docking.widgets.tree.support.GTreeRenderer; import docking.widgets.tree.support.GTreeRenderer;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.*; import ghidra.app.plugin.core.datamgr.*;
import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler; import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler;
import ghidra.app.plugin.core.datamgr.archive.FileArchive; import ghidra.app.plugin.core.datamgr.archive.FileArchive;
@ -39,16 +40,13 @@ import ghidra.program.model.listing.Program;
import ghidra.util.UniversalID; import ghidra.util.UniversalID;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class DataTypeArchiveGTree extends GTree { public class DataTypeArchiveGTree extends GTree {
private static ImageIcon LOCAL_DELTA_ICON = private static Icon LOCAL_DELTA_ICON = new GIcon("icon.plugin.datatypes.tree.change.local");
ResourceManager.loadImage("images/smallRightArrow.png"); private static Icon SOURCE_DELTA_ICON = new GIcon("icon.plugin.datatypes.tree.change.source");
private static ImageIcon SOURCE_DELTA_ICON = private static Icon CONFLICT_ICON = new GIcon("icon.plugin.datatypes.tree.conflict");
ResourceManager.loadImage("images/smallLeftArrow.png"); private static Icon MISSING_ICON = new GIcon("icon.plugin.datatypes.tree.missing");
private static ImageIcon CONFLICT_ICON = ResourceManager.loadImage("images/doubleArrow.png");
private static ImageIcon MISSING_ICON = ResourceManager.loadImage("images/redQuestionMark.png");
private DataTypeManagerPlugin plugin; private DataTypeManagerPlugin plugin;
private GTreeNode armedNode; private GTreeNode armedNode;

View File

@ -16,27 +16,25 @@
package ghidra.app.plugin.core.datamgr.tree; package ghidra.app.plugin.core.datamgr.tree;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.archive.DomainFileArchive; import ghidra.app.plugin.core.datamgr.archive.DomainFileArchive;
import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFile;
import ghidra.framework.model.DomainObject; import ghidra.framework.model.DomainObject;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class DomainFileArchiveNode extends ArchiveNode { public class DomainFileArchiveNode extends ArchiveNode {
private static ImageIcon CHECKED_OUT_ICON = ResourceManager.loadImage("images/check.png"); //@formatter:off
private static ImageIcon CHECKED_OUT_EXCLUSIVE_ICON = private static Icon CHECKED_OUT_ICON = new GIcon("icon.plugin.datatypes.tree.node.archive.file.checked.out");
ResourceManager.loadImage("images/checkex.png"); private static Icon CHECKED_OUT_EXCLUSIVE_ICON = new GIcon("icon.plugin.datatypes.tree.node.archive.file.checked.out.exclusive");
private static ImageIcon HIJACKED_ICON = ResourceManager.loadImage("images/small_hijack.gif"); private static Icon HIJACKED_ICON = new GIcon("icon.plugin.datatypes.tree.node.archive.file.hijacked");
private static ImageIcon READ_ONLY_ICON = private static Icon READ_ONLY_ICON = new GIcon("icon.plugin.datatypes.tree.node.archive.file.read.only");
ResourceManager.loadImage("images/user-busy.png", 10, 10); private static Icon NOT_LATEST_CHECKED_OUT_ICON = new GIcon("icon.plugin.datatypes.tree.node.archive.file.checked.out.not.latest");
private static ImageIcon NOT_LATEST_CHECKED_OUT_ICON = //@formatter:on
ResourceManager.loadImage("images/checkNotLatest.gif");
private boolean isChanged; private boolean isChanged;
private boolean isReadOnly; private boolean isReadOnly;
@ -116,7 +114,7 @@ public class DomainFileArchiveNode extends ArchiveNode {
@Override @Override
public Icon getIcon(boolean expanded) { public Icon getIcon(boolean expanded) {
ImageIcon baseIcon = archive.getIcon(expanded); Icon baseIcon = archive.getIcon(expanded);
BackgroundIcon bgIcon = new BackgroundIcon(24, 16, isVersioned); BackgroundIcon bgIcon = new BackgroundIcon(24, 16, isVersioned);
MultiIcon multiIcon = new MultiIcon(bgIcon); MultiIcon multiIcon = new MultiIcon(bgIcon);
multiIcon.addIcon(baseIcon); multiIcon.addIcon(baseIcon);

View File

@ -16,19 +16,18 @@
package ghidra.app.plugin.core.datamgr.tree; package ghidra.app.plugin.core.datamgr.tree;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import generic.theme.GIcon;
import ghidra.app.plugin.core.datamgr.archive.FileArchive; import ghidra.app.plugin.core.datamgr.archive.FileArchive;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import resources.MultiIcon; import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon; import resources.icons.TranslateIcon;
public class FileArchiveNode extends ArchiveNode { public class FileArchiveNode extends ArchiveNode {
private static ImageIcon CHECKED_OUT_EXCLUSIVE_ICON = private static Icon CHECKED_OUT_EXCLUSIVE_ICON =
ResourceManager.loadImage("images/checkex.png"); new GIcon("icon.plugin.datatypes.tree.node.archive.file.checked.out.exclusive");
FileArchive fileArchive; // casted reference for easy access FileArchive fileArchive; // casted reference for easy access
@ -42,7 +41,7 @@ public class FileArchiveNode extends ArchiveNode {
BackgroundIcon bgIcon = new BackgroundIcon(24, 16, false); BackgroundIcon bgIcon = new BackgroundIcon(24, 16, false);
MultiIcon multiIcon = new MultiIcon(bgIcon); MultiIcon multiIcon = new MultiIcon(bgIcon);
boolean hasWriteLock = fileArchive.hasWriteLock(); boolean hasWriteLock = fileArchive.hasWriteLock();
ImageIcon baseIcon = fileArchive.getIcon(expanded); Icon baseIcon = fileArchive.getIcon(expanded);
multiIcon.addIcon(baseIcon); multiIcon.addIcon(baseIcon);
if (hasWriteLock) { if (hasWriteLock) {
multiIcon.addIcon(new TranslateIcon(CHECKED_OUT_EXCLUSIVE_ICON, 8, -4)); multiIcon.addIcon(new TranslateIcon(CHECKED_OUT_EXCLUSIVE_ICON, 8, -4));

View File

@ -16,7 +16,8 @@
package ghidra.app.plugin.core.datamgr.util; package ghidra.app.plugin.core.datamgr.util;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.event.*; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*; import javax.swing.*;
@ -24,8 +25,8 @@ import docking.DialogComponentProvider;
import docking.widgets.button.GRadioButton; import docking.widgets.button.GRadioButton;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import generic.theme.GIcon;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager;
/** /**
* Dialog to get user input on how to handle data type conflicts. * Dialog to get user input on how to handle data type conflicts.
@ -43,12 +44,12 @@ public class ConflictDialog extends DialogComponentProvider {
private JButton applyToAllButton; private JButton applyToAllButton;
private int selectedOption = RENAME; private int selectedOption = RENAME;
private ImageIcon INFORM_ICON = ResourceManager.loadImage("images/warning.png"); private Icon INFORM_ICON = new GIcon("icon.warning");
/** /**
* Constructor * Constructor
* @param dtName data type name * @param dtName data type name
* @param categoryName category path * @param categoryPath category path
* @param newDTName new name to resolve conflict * @param newDTName new name to resolve conflict
*/ */
public ConflictDialog(String dtName, String categoryPath, String newDTName) { public ConflictDialog(String dtName, String categoryPath, String newDTName) {
@ -58,27 +59,18 @@ public class ConflictDialog extends DialogComponentProvider {
addOKButton(); addOKButton();
applyToAllButton = new JButton("Apply to All"); applyToAllButton = new JButton("Apply to All");
applyToAllButton.addActionListener(new ActionListener() { applyToAllButton.addActionListener(e -> {
@Override applyToAll = true;
public void actionPerformed(ActionEvent e) { close();
applyToAll = true;
close();
}
}); });
addButton(applyToAllButton); addButton(applyToAllButton);
} }
/* (non-Javadoc)
* @see ghidra.util.bean.GhidraDialog#okCallback()
*/
@Override @Override
protected void okCallback() { protected void okCallback() {
close(); close();
} }
/* (non-Javadoc)
* @see ghidra.util.bean.GhidraDialog#cancelCallback()
*/
@Override @Override
protected void cancelCallback() { protected void cancelCallback() {
close(); close();
@ -101,20 +93,17 @@ public class ConflictDialog extends DialogComponentProvider {
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
ItemListener listener = new ItemListener() { ItemListener listener = e -> {
@Override if (e.getStateChange() == ItemEvent.SELECTED) {
public void itemStateChanged(ItemEvent e) { Object source = e.getSource();
if (e.getStateChange() == ItemEvent.SELECTED) { if (source == replaceRB) {
Object source = e.getSource(); selectedOption = REPLACE;
if (source == replaceRB) { }
selectedOption = REPLACE; else if (source == useExistingRB) {
} selectedOption = USE_EXISTING;
else if (source == useExistingRB) { }
selectedOption = USE_EXISTING; else {
} selectedOption = RENAME;
else {
selectedOption = RENAME;
}
} }
} }
}; };

View File

@ -20,9 +20,9 @@ import java.util.*;
import java.util.List; import java.util.List;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import ghidra.app.services.DataTypeQueryService; import ghidra.app.services.DataTypeQueryService;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.program.model.data.Enum; import ghidra.program.model.data.Enum;
@ -43,27 +43,6 @@ public class DataTypeUtils {
private static Map<Icon, MultiIcon> highlightIconMap = new HashMap<>(); private static Map<Icon, MultiIcon> highlightIconMap = new HashMap<>();
private static String OPEN_FOLDER = "images/openFolder.png";
private static String CLOSED_FOLDER = "images/closedFolder.png";
private static String DISABLED_OPEN_FOLDER = "images/disabledOpenFolder.png";
private static String DISABLED_CLOSED_FOLDER = "images/disabledClosedFolder.png";
private static String DEFAULT_ICON = "images/defaultDt.gif";
private static String DISABLED_DEFAULT_ICON = "images/disabledCode.gif";
private static String LOCKED_OPEN_FOLDER = "images/openFolderCheckedOut.png";
private static String LOCKED_CLOSED_FOLDER = "images/closedFolderCheckedOut.png";
private static String OPEN_ARCHIVE_FOLDER = "images/openFolderArchive.png";
private static String CLOSED_ARCHIVE_FOLDER = "images/closedFolderArchive.png";
private static String ROOT_ICON = "images/BookShelf.png";
private static String OPEN_ROOT_ICON = "images/BookShelfOpen.png";
private static String FAVORITE_ICON = "images/emblem-favorite.png";
private static String BUILT_IN_ICON = "images/package_development.png";
private static String STRUCTURE_ICON = "images/cstruct.png";
private static String UNION_ICON = "images/cUnion.png";
private static String TYPEDEF_ICON = "images/typedef.png";
private static String FUNCTION_ICON = "images/functionDef.png";
private static String ENUM_ICON = "images/enum.png";
private static String POINTER_ICON = "images/fingerPointer.png";
private static Icon defaultIcon; private static Icon defaultIcon;
private static Icon disabledIcon; private static Icon disabledIcon;
private static Icon favoriteIcon; private static Icon favoriteIcon;
@ -93,29 +72,29 @@ public class DataTypeUtils {
return; return;
} }
imagesLoaded = true; imagesLoaded = true;
defaultIcon = ResourceManager.loadImage(DEFAULT_ICON); defaultIcon = new GIcon("icon.plugin.datatypes.default");
disabledIcon = ResourceManager.loadImage(DISABLED_DEFAULT_ICON); disabledIcon = new GIcon("icon.plugin.datatypes.default.disabled");
favoriteIcon = ResourceManager.loadImage(FAVORITE_ICON); favoriteIcon = new GIcon("icon.plugin.datatypes.util.favorite");
disabledFavoriteIcon = ResourceManager.getDisabledIcon((ImageIcon) favoriteIcon); disabledFavoriteIcon = new GIcon("icon.plugin.datatypes.util.favorite.disabled");
builtInIcon = ResourceManager.loadImage(BUILT_IN_ICON); builtInIcon = new GIcon("icon.plugin.datatypes.built.in");
disabledBuiltInIcon = ResourceManager.getDisabledIcon((ImageIcon) builtInIcon); disabledBuiltInIcon = new GIcon("icon.plugin.datatypes.built.in.disabled");
rootIcon = ResourceManager.loadImage(ROOT_ICON); rootIcon = new GIcon("icon.plugin.datatypes.util.root");
openRootIcon = ResourceManager.loadImage(OPEN_ROOT_ICON); openRootIcon = new GIcon("icon.plugin.datatypes.util.open.root");
openFolderIcon = ResourceManager.loadImage(OPEN_FOLDER); openFolderIcon = new GIcon("icon.plugin.datatypes.util.open.folder");
disabledOpenFolderIcon = ResourceManager.loadImage(DISABLED_OPEN_FOLDER); disabledOpenFolderIcon = new GIcon("icon.plugin.datatypes.util.open.folder.disabled");
closedFolderIcon = ResourceManager.loadImage(CLOSED_FOLDER); closedFolderIcon = new GIcon("icon.plugin.datatypes.util.closed.folder");
disabledClosedFolderIcon = ResourceManager.loadImage(DISABLED_CLOSED_FOLDER); disabledClosedFolderIcon = new GIcon("icon.plugin.datatypes.util.closed.folder.disabled");
lockedOpenFolderIcon = ResourceManager.loadImage(LOCKED_OPEN_FOLDER); lockedOpenFolderIcon = new GIcon("icon.plugin.datatypes.util.open.folder.locked");
lockedClosedFolderIcon = ResourceManager.loadImage(LOCKED_CLOSED_FOLDER); lockedClosedFolderIcon = new GIcon("icon.plugin.datatypes.util.closed.folder.locked");
openArchiveFolderIcon = ResourceManager.loadImage(OPEN_ARCHIVE_FOLDER); openArchiveFolderIcon = new GIcon("icon.plugin.datatypes.util.open.archive");
closedArchiveFolderIcon = ResourceManager.loadImage(CLOSED_ARCHIVE_FOLDER); closedArchiveFolderIcon = new GIcon("icon.plugin.datatypes.util.closed.archive");
createDataTypeIcons(); createDataTypeIcons();
@ -124,29 +103,29 @@ public class DataTypeUtils {
private static void createDataTypeIcons() { private static void createDataTypeIcons() {
List<DataTypeIconWrapper> list = new ArrayList<>(); List<DataTypeIconWrapper> list = new ArrayList<>();
Icon enumIcon = ResourceManager.loadImage(ENUM_ICON); Icon enumIcon = new GIcon("icon.plugin.datatypes.enum");
list.add(new DataTypeIconWrapper(Enum.class, enumIcon, list.add(new DataTypeIconWrapper(Enum.class, enumIcon,
ResourceManager.getDisabledIcon((ImageIcon) enumIcon))); ResourceManager.getDisabledIcon(enumIcon)));
Icon functionIcon = ResourceManager.loadImage(FUNCTION_ICON); Icon functionIcon = new GIcon("icon.plugin.datatypes.function");
list.add(new DataTypeIconWrapper(FunctionDefinition.class, functionIcon, list.add(new DataTypeIconWrapper(FunctionDefinition.class, functionIcon,
ResourceManager.getDisabledIcon((ImageIcon) functionIcon))); ResourceManager.getDisabledIcon(functionIcon)));
Icon pointerIcon = ResourceManager.loadImage(POINTER_ICON); Icon pointerIcon = new GIcon("icon.plugin.datatypes.pointer");
list.add(new DataTypeIconWrapper(Pointer.class, pointerIcon, list.add(new DataTypeIconWrapper(Pointer.class, pointerIcon,
ResourceManager.getDisabledIcon((ImageIcon) pointerIcon))); ResourceManager.getDisabledIcon(pointerIcon)));
Icon typedefIcon = ResourceManager.loadImage(TYPEDEF_ICON); Icon typedefIcon = new GIcon("icon.plugin.datatypes.typedef");
list.add(new DataTypeIconWrapper(TypeDef.class, typedefIcon, list.add(new DataTypeIconWrapper(TypeDef.class, typedefIcon,
ResourceManager.getDisabledIcon((ImageIcon) typedefIcon))); ResourceManager.getDisabledIcon(typedefIcon)));
Icon unionIcon = ResourceManager.loadImage(UNION_ICON); Icon unionIcon = new GIcon("icon.plugin.datatypes.union");
list.add(new DataTypeIconWrapper(Union.class, unionIcon, list.add(new DataTypeIconWrapper(Union.class, unionIcon,
ResourceManager.getDisabledIcon((ImageIcon) unionIcon))); ResourceManager.getDisabledIcon(unionIcon)));
Icon structureIcon = ResourceManager.loadImage(STRUCTURE_ICON); Icon structureIcon = new GIcon("icon.plugin.datatypes.structure");
list.add(new DataTypeIconWrapper(Structure.class, structureIcon, list.add(new DataTypeIconWrapper(Structure.class, structureIcon,
ResourceManager.getDisabledIcon((ImageIcon) structureIcon))); ResourceManager.getDisabledIcon(structureIcon)));
dataTypeIconWrappers = list.toArray(new DataTypeIconWrapper[list.size()]); dataTypeIconWrappers = list.toArray(new DataTypeIconWrapper[list.size()]);
} }

View File

@ -29,6 +29,7 @@ import docking.action.*;
import docking.dnd.DropTgtAdapter; import docking.dnd.DropTgtAdapter;
import docking.dnd.Droppable; import docking.dnd.Droppable;
import docking.widgets.table.AbstractSortedTableModel; import docking.widgets.table.AbstractSortedTableModel;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
import ghidra.app.plugin.ProgramPlugin; import ghidra.app.plugin.ProgramPlugin;
@ -48,7 +49,7 @@ import ghidra.util.data.DataTypeParser.AllowedDataTypes;
import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTable;
import ghidra.util.task.SwingUpdateManager; import ghidra.util.task.SwingUpdateManager;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager; import resources.Icons;
import util.CollectionUtils; import util.CollectionUtils;
//@formatter:off //@formatter:off
@ -301,7 +302,7 @@ public class DataTypePreviewPlugin extends ProgramPlugin {
} }
}; };
addAction.setPopupMenuData(new MenuData(new String[] { "Add" })); addAction.setPopupMenuData(new MenuData(new String[] { "Add" }));
addAction.setToolBarData(new ToolBarData(ResourceManager.loadImage("images/Plus.png"))); addAction.setToolBarData(new ToolBarData(Icons.ADD_ICON));
addAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_PLUS, 0)); addAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_PLUS, 0));
addAction.setDescription("Add Datatypes"); addAction.setDescription("Add Datatypes");
@ -316,8 +317,7 @@ public class DataTypePreviewPlugin extends ProgramPlugin {
} }
}; };
deleteAction.setPopupMenuData(new MenuData(new String[] { "Delete" })); deleteAction.setPopupMenuData(new MenuData(new String[] { "Delete" }));
deleteAction.setToolBarData( deleteAction.setToolBarData(new ToolBarData(new GIcon("icon.delete")));
new ToolBarData(ResourceManager.loadImage("images/edit-delete.png")));
deleteAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_DELETE, 0)); deleteAction.setKeyBindingData(new KeyBindingData(KeyEvent.VK_DELETE, 0));
deleteAction.setDescription("Delete Selected Datatypes"); deleteAction.setDescription("Delete Selected Datatypes");

View File

@ -23,6 +23,7 @@ import javax.swing.*;
import javax.swing.table.JTableHeader; import javax.swing.table.JTableHeader;
import docking.ActionContext; import docking.ActionContext;
import generic.theme.GIcon;
import ghidra.app.services.GoToService; import ghidra.app.services.GoToService;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
@ -30,14 +31,13 @@ import ghidra.program.model.listing.Program;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.table.*; import ghidra.util.table.*;
import resources.ResourceManager;
/** /**
* Provider for the equates table. * Provider for the equates table.
*/ */
class DataWindowProvider extends ComponentProviderAdapter { class DataWindowProvider extends ComponentProviderAdapter {
public static final ImageIcon ICON = ResourceManager.loadImage("images/dataW.gif"); public static final Icon ICON = new GIcon("icon.plugin.datawindow.provider");
private DataWindowPlugin plugin; private DataWindowPlugin plugin;

View File

@ -35,12 +35,13 @@ import docking.actions.KeyBindingUtils;
import docking.options.editor.FontEditor; import docking.options.editor.FontEditor;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooser;
import generic.theme.GIcon;
import ghidra.framework.options.SaveState; import ghidra.framework.options.SaveState;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.datastruct.FixedSizeStack; import ghidra.util.datastruct.FixedSizeStack;
import resources.ResourceManager; import resources.Icons;
public class TextEditorComponentProvider extends ComponentProviderAdapter { public class TextEditorComponentProvider extends ComponentProviderAdapter {
private static final String TITLE = "Text Editor"; private static final String TITLE = "Text Editor";
@ -200,7 +201,7 @@ public class TextEditorComponentProvider extends ComponentProviderAdapter {
}; };
undoAction.setDescription("Undo"); undoAction.setDescription("Undo");
undoAction.setToolBarData( undoAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/undo.png"), "UndoRedo")); new ToolBarData(new GIcon("icon.undo"), "UndoRedo"));
undoAction.setEnabled(false); undoAction.setEnabled(false);
plugin.getTool().addLocalAction(this, undoAction); plugin.getTool().addLocalAction(this, undoAction);
@ -218,7 +219,7 @@ public class TextEditorComponentProvider extends ComponentProviderAdapter {
}; };
redoAction.setDescription("Redo"); redoAction.setDescription("Redo");
redoAction.setToolBarData( redoAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/redo.png"), "UndoRedo")); new ToolBarData(new GIcon("icon.redo"), "UndoRedo"));
redoAction.setEnabled(false); redoAction.setEnabled(false);
plugin.getTool().addLocalAction(this, redoAction); plugin.getTool().addLocalAction(this, redoAction);
@ -236,7 +237,7 @@ public class TextEditorComponentProvider extends ComponentProviderAdapter {
}; };
saveAction.setDescription("Save"); saveAction.setDescription("Save");
saveAction.setToolBarData( saveAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/disk.png"), "Save")); new ToolBarData(Icons.SAVE_ICON, "Save"));
saveAction.setEnabled(false); saveAction.setEnabled(false);
plugin.getTool().addLocalAction(this, saveAction); plugin.getTool().addLocalAction(this, saveAction);
@ -254,7 +255,7 @@ public class TextEditorComponentProvider extends ComponentProviderAdapter {
}; };
saveAsAction.setDescription("Save As..."); saveAsAction.setDescription("Save As...");
saveAsAction.setToolBarData( saveAsAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/disk_save_as.png"), "Save")); new ToolBarData(Icons.SAVE_AS_ICON, "Save"));
saveAsAction.setEnabled(true); saveAsAction.setEnabled(true);
plugin.getTool().addLocalAction(this, saveAsAction); plugin.getTool().addLocalAction(this, saveAsAction);
@ -265,7 +266,7 @@ public class TextEditorComponentProvider extends ComponentProviderAdapter {
} }
}; };
fontAction.setToolBarData( fontAction.setToolBarData(
new ToolBarData(ResourceManager.loadImage("images/text_lowercase.png"), "ZZFont")); new ToolBarData(new GIcon("icon.font"), "ZZFont"));
fontAction.setDescription("Select Font"); fontAction.setDescription("Select Font");
fontAction.setEnabled(true); fontAction.setEnabled(true);
plugin.getTool().addLocalAction(this, fontAction); plugin.getTool().addLocalAction(this, fontAction);

View File

@ -40,12 +40,10 @@ import ghidra.program.model.symbol.Equate;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.UniversalID; import ghidra.util.UniversalID;
import ghidra.util.table.*; import ghidra.util.table.*;
import resources.ResourceManager; import resources.Icons;
public class EquateTableProvider extends ComponentProviderAdapter { public class EquateTableProvider extends ComponentProviderAdapter {
private final static String DELETE_IMAGE = "images/edit-delete.png";
private EquateTablePlugin plugin; private EquateTablePlugin plugin;
private GhidraTable equatesTable; private GhidraTable equatesTable;
private EquateTableModel equatesModel; private EquateTableModel equatesModel;
@ -160,8 +158,8 @@ public class EquateTableProvider extends ComponentProviderAdapter {
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN || if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN ||
e.getKeyCode() == KeyEvent.VK_PAGE_UP || e.getKeyCode() == KeyEvent.VK_PAGE_UP ||
e.getKeyCode() == KeyEvent.VK_PAGE_DOWN) { e.getKeyCode() == KeyEvent.VK_PAGE_DOWN) {
handleEquateTableSelection(); handleEquateTableSelection();
} }
} }
@ -191,7 +189,7 @@ public class EquateTableProvider extends ComponentProviderAdapter {
Equate equate = (Equate) table.getValueAt(row, column); Equate equate = (Equate) table.getValueAt(row, column);
UniversalID id = UniversalID id =
new UniversalID(Long.parseLong(equate.getName().split(":")[1])); new UniversalID(Long.parseLong(equate.getName().split(":")[1]));
Enum enoom = (Enum) dtm.findDataTypeForID(id); Enum enoom = (Enum) dtm.findDataTypeForID(id);
if (enoom != null) { if (enoom != null) {
dtms.edit(enoom); dtms.edit(enoom);
@ -254,7 +252,7 @@ public class EquateTableProvider extends ComponentProviderAdapter {
JPanel workPanel = new JPanel(new BorderLayout()); JPanel workPanel = new JPanel(new BorderLayout());
JSplitPane splitPane = JSplitPane splitPane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, equatesPanel, referencesPanel); new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, equatesPanel, referencesPanel);
splitPane.setResizeWeight(0.5); splitPane.setResizeWeight(0.5);
workPanel.add(splitPane, BorderLayout.CENTER); workPanel.add(splitPane, BorderLayout.CENTER);
@ -269,7 +267,7 @@ public class EquateTableProvider extends ComponentProviderAdapter {
private void createAction() { private void createAction() {
ImageIcon deleteImage = ResourceManager.loadImage(DELETE_IMAGE); Icon deleteImage = Icons.DELETE_ICON;
deleteAction = new DockingAction("Delete Equate", plugin.getName()) { deleteAction = new DockingAction("Delete Equate", plugin.getName()) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -291,7 +289,7 @@ public class EquateTableProvider extends ComponentProviderAdapter {
deleteAction.setHelpLocation(new HelpLocation("EquatePlugin", "Delete Equate")); deleteAction.setHelpLocation(new HelpLocation("EquatePlugin", "Delete Equate"));
SelectionNavigationAction selectionNavigationAction = SelectionNavigationAction selectionNavigationAction =
new SelectionNavigationAction(plugin, referencesTable); new SelectionNavigationAction(plugin, referencesTable);
selectionNavigationAction.setHelpLocation( selectionNavigationAction.setHelpLocation(
new HelpLocation(HelpTopics.SEARCH, "Selection_Navigation")); new HelpLocation(HelpTopics.SEARCH, "Selection_Navigation"));

View File

@ -16,9 +16,6 @@
package ghidra.app.plugin.core.fallthrough; package ghidra.app.plugin.core.fallthrough;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
@ -31,14 +28,10 @@ import docking.widgets.label.GDLabel;
import ghidra.app.util.AddressInput; import ghidra.app.util.AddressInput;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager; import resources.Icons;
/** /**
* Dialog to prompt for overriding a fallthrough address on an * Dialog to prompt for overriding a fallthrough address on an instruction.
* instruction.
*
*
*
*/ */
class FallThroughDialog extends DialogComponentProvider implements ChangeListener { class FallThroughDialog extends DialogComponentProvider implements ChangeListener {
@ -65,25 +58,16 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
model.setChangeListener(this); model.setChangeListener(this);
} }
/**
* @see ghidra.util.bean.GhidraDialog#applyCallback()
*/
@Override @Override
protected void applyCallback() { protected void applyCallback() {
model.execute(); model.execute();
} }
/**
* @see ghidra.util.bean.GhidraDialog#cancelCallback()
*/
@Override @Override
protected void cancelCallback() { protected void cancelCallback() {
close(); close();
} }
/**
* @see ghidra.util.bean.GhidraDialog#okCallback()
*/
@Override @Override
protected void okCallback() { protected void okCallback() {
if (model.execute()) { if (model.execute()) {
@ -91,9 +75,6 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
} }
} }
/**
* @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
*/
public void updateState() { public void updateState() {
Address addr = model.getAddress(); Address addr = model.getAddress();
if (addr == null) { if (addr == null) {
@ -140,18 +121,15 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
return; return;
} }
Runnable r = new Runnable() { Runnable r = () -> {
@Override Address addr = addrField.getAddress();
public void run() { if (addr != null || addrField.getValue().length() == 0) {
Address addr = addrField.getAddress(); model.setCurrentFallthrough(addr);
if (addr != null || addrField.getValue().length() == 0) { }
model.setCurrentFallthrough(addr); else {
} setStatusText("Invalid Address");
else { setOkEnabled(false);
setStatusText("Invalid Address"); setApplyEnabled(false);
setOkEnabled(false);
setApplyEnabled(false);
}
} }
}; };
SwingUtilities.invokeLater(r); SwingUtilities.invokeLater(r);
@ -162,18 +140,8 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
panel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); panel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
addrField = new AddressInput(); addrField = new AddressInput();
addrField.setAddressFactory(model.getProgram().getAddressFactory()); addrField.setAddressFactory(model.getProgram().getAddressFactory());
addrField.addChangeListener(new ChangeListener() { addrField.addChangeListener(e -> addressChanged());
@Override addrField.addActionListener(e -> model.setCurrentFallthrough(addrField.getAddress()));
public void stateChanged(ChangeEvent e) {
addressChanged();
}
});
addrField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.setCurrentFallthrough(addrField.getAddress());
}
});
panel.add(createHomePanel(), BorderLayout.NORTH); panel.add(createHomePanel(), BorderLayout.NORTH);
panel.add(createAddressPanel(), BorderLayout.CENTER); panel.add(createAddressPanel(), BorderLayout.CENTER);
return panel; return panel;
@ -201,13 +169,8 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
instLabel = new GDLabel("jmp DAT_01001000"); instLabel = new GDLabel("jmp DAT_01001000");
instLabel.setFont(monoFont); instLabel.setFont(monoFont);
homeButton = createButton("images/go-home.png", "Home"); homeButton = createButton("Home");
homeButton.addActionListener(new ActionListener() { homeButton.addActionListener(e -> plugin.goTo(model.getAddress()));
@Override
public void actionPerformed(ActionEvent e) {
plugin.goTo(model.getAddress());
}
});
JPanel innerPanel = new JPanel(); JPanel innerPanel = new JPanel();
BoxLayout bl = new BoxLayout(innerPanel, BoxLayout.X_AXIS); BoxLayout bl = new BoxLayout(innerPanel, BoxLayout.X_AXIS);
@ -232,21 +195,11 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
ButtonGroup group = new ButtonGroup(); ButtonGroup group = new ButtonGroup();
defaultRB = new GRadioButton("Default", true); defaultRB = new GRadioButton("Default", true);
defaultRB.addActionListener(new ActionListener() { defaultRB.addActionListener(ev -> model.defaultSelected());
@Override
public void actionPerformed(ActionEvent ev) {
model.defaultSelected();
}
});
defaultRB.setToolTipText("Use default fallthrough address"); defaultRB.setToolTipText("Use default fallthrough address");
userRB = new GRadioButton("User", false); userRB = new GRadioButton("User", false);
userRB.addActionListener(new ActionListener() { userRB.addActionListener(ev -> model.userSelected());
@Override
public void actionPerformed(ActionEvent ev) {
model.userSelected();
}
});
userRB.setToolTipText("Override default fallthrough address"); userRB.setToolTipText("Override default fallthrough address");
group.add(defaultRB); group.add(defaultRB);
@ -260,18 +213,13 @@ class FallThroughDialog extends DialogComponentProvider implements ChangeListene
return outerPanel; return outerPanel;
} }
private JButton createButton(String filename, String altText) { private JButton createButton(String altText) {
JButton button = new JButton(); JButton button = new JButton();
URL imageURL = ResourceManager.getResource(filename); Icon icon = Icons.HOME_ICON;
if (imageURL != null) { button = new JButton(icon);
ImageIcon icon = new ImageIcon(imageURL); Insets noInsets = new Insets(0, 0, 0, 0);
button = new JButton(icon); button.setMargin(noInsets);
Insets noInsets = new Insets(0, 0, 0, 0);
button.setMargin(noInsets);
}
else {
button = new JButton(altText);
}
button.setToolTipText("Go back to home address"); button.setToolTipText("Go back to home address");
return button; return button;
} }

View File

@ -36,6 +36,7 @@ import docking.widgets.combobox.GComboBox;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import docking.widgets.table.*; import docking.widgets.table.*;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors; import generic.theme.GThemeDefaults.Colors;
import generic.theme.GThemeDefaults.Colors.*; import generic.theme.GThemeDefaults.Colors.*;
import generic.util.WindowUtilities; import generic.util.WindowUtilities;
@ -50,16 +51,12 @@ import ghidra.program.model.symbol.ExternalLocation;
import ghidra.util.*; import ghidra.util.*;
import ghidra.util.layout.PairLayout; import ghidra.util.layout.PairLayout;
import ghidra.util.layout.VerticalLayout; import ghidra.util.layout.VerticalLayout;
import resources.ResourceManager; import resources.Icons;
public class FunctionEditorDialog extends DialogComponentProvider implements ModelChangeListener { public class FunctionEditorDialog extends DialogComponentProvider implements ModelChangeListener {
private static final Color FG_COLOR_THUNK = private static final Color FG_COLOR_THUNK =
new GColor("color.fg.plugin.function.editor.dialog.thunk"); new GColor("color.fg.plugin.function.editor.dialog.thunk");
private static Icon ADD_ICON = ResourceManager.loadImage("images/Plus.png");
private static Icon REMOVE_ICON = ResourceManager.loadImage("images/edit-delete.png");
private static Icon UP_ICON = ResourceManager.loadImage("images/up.png");
private static Icon DOWN_ICON = ResourceManager.loadImage("images/down.png");
private FunctionEditorModel model; private FunctionEditorModel model;
private DocumentListener nameFieldDocumentListener; private DocumentListener nameFieldDocumentListener;
private GTable parameterTable; private GTable parameterTable;
@ -446,10 +443,10 @@ public class FunctionEditorDialog extends DialogComponentProvider implements Mod
private Component buildButtonPanel() { private Component buildButtonPanel() {
JPanel panel = new JPanel(new VerticalLayout(5)); JPanel panel = new JPanel(new VerticalLayout(5));
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
addButton = new JButton(ADD_ICON); addButton = new JButton(Icons.ADD_ICON);
removeButton = new JButton(REMOVE_ICON); removeButton = new JButton(Icons.DELETE_ICON);
upButton = new JButton(UP_ICON); upButton = new JButton(new GIcon("icon.up"));
downButton = new JButton(DOWN_ICON); downButton = new JButton(new GIcon("icon.down"));
addButton.setToolTipText("Add parameter"); addButton.setToolTipText("Add parameter");
removeButton.setToolTipText("Delete selected parameters"); removeButton.setToolTipText("Delete selected parameters");
upButton.setToolTipText("Move selected parameter up"); upButton.setToolTipText("Move selected parameter up");

View File

@ -20,8 +20,8 @@ import java.awt.event.ActionListener;
import javax.swing.*; import javax.swing.*;
import generic.theme.GIcon;
import resources.Icons; import resources.Icons;
import resources.ResourceManager;
/** /**
* Provides buttons to be used with the {@link FunctionTagProvider}. * Provides buttons to be used with the {@link FunctionTagProvider}.
@ -35,9 +35,6 @@ import resources.ResourceManager;
*/ */
public class FunctionTagButtonPanel extends JPanel { public class FunctionTagButtonPanel extends JPanel {
private Icon ADD_IMG = ResourceManager.loadImage("images/2rightarrow.png");
private Icon REMOVE_IMG = ResourceManager.loadImage("images/2leftarrow.png");
private SourceTagsPanel sourcePanel; private SourceTagsPanel sourcePanel;
private TargetTagsPanel targetPanel; private TargetTagsPanel targetPanel;
private JButton addBtn; private JButton addBtn;
@ -101,25 +98,24 @@ public class FunctionTagButtonPanel extends JPanel {
deleteBtn.setEnabled(hasSelection && !isImmutable); deleteBtn.setEnabled(hasSelection && !isImmutable);
} }
/******************************************************************************
* PRIVATE METHODS
******************************************************************************/
private void createButtonPanel() { private void createButtonPanel() {
setLayout(new GridBagLayout()); setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints(); GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0; gbc.gridx = 0;
gbc.gridy = 0; gbc.gridy = 0;
addBtn = createButton("addBtn", ADD_IMG, "Add selected tags to the function", addBtn = createButton("addBtn", new GIcon("icon.plugin.functiontags.add"),
"Add selected tags to the function",
e -> { e -> {
sourcePanel.addSelectedTags(); sourcePanel.addSelectedTags();
}); });
add(addBtn, gbc); add(addBtn, gbc);
gbc.gridy = 1; gbc.gridy = 1;
removeBtn = createButton("removeBtn", REMOVE_IMG, "Remove selected tags from the function", removeBtn =
e -> targetPanel.removeSelectedTags()); createButton("removeBtn", new GIcon("icon.plugin.functiontags.remove"),
"Remove selected tags from the function",
e -> targetPanel.removeSelectedTags());
add(removeBtn, gbc); add(removeBtn, gbc);
gbc.gridy = 2; gbc.gridy = 2;
@ -147,7 +143,6 @@ public class FunctionTagButtonPanel extends JPanel {
JButton button = new JButton(name); JButton button = new JButton(name);
button.setName(name); button.setName(name);
button.setToolTipText(tooltip); button.setToolTipText(tooltip);
icon = ResourceManager.getScaledIcon(icon, 16, 16);
button.setIcon(icon); button.setIcon(icon);
button.setText(""); button.setText("");
button.addActionListener(action); button.addActionListener(action);

View File

@ -31,6 +31,7 @@ import docking.ComponentProvider;
import docking.action.*; import docking.action.*;
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator; import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
import docking.widgets.tabbedpane.DockingTabRenderer; import docking.widgets.tabbedpane.DockingTabRenderer;
import generic.theme.GIcon;
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel; import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
import ghidra.app.util.viewer.util.CodeComparisonPanel; import ghidra.app.util.viewer.util.CodeComparisonPanel;
import ghidra.framework.options.SaveState; import ghidra.framework.options.SaveState;
@ -44,7 +45,6 @@ import ghidra.util.Msg;
import ghidra.util.classfinder.ClassSearcher; import ghidra.util.classfinder.ClassSearcher;
import help.Help; import help.Help;
import help.HelpService; import help.HelpService;
import resources.ResourceManager;
/** /**
* A panel for displaying {@link Function functions}, {@link Data data}, or * A panel for displaying {@link Function functions}, {@link Data data}, or
@ -66,9 +66,10 @@ public class FunctionComparisonPanel extends JPanel implements ChangeListener {
private static final HelpService help = Help.getHelpService(); private static final HelpService help = Help.getHelpService();
private static final String HELP_TOPIC = "FunctionComparison"; private static final String HELP_TOPIC = "FunctionComparison";
private static final Icon SYNC_SCROLLING_ICON = ResourceManager.loadImage("images/lock.gif"); private static final Icon SYNC_SCROLLING_ICON =
new GIcon("icon.plugin.functioncompare.scroll.lock");
private static final Icon UNSYNC_SCROLLING_ICON = private static final Icon UNSYNC_SCROLLING_ICON =
ResourceManager.loadImage("images/unlock.gif"); new GIcon("icon.plugin.functioncompare.scroll.unlock");
private static final String SCROLLING_GROUP = "A9_SCROLLING"; private static final String SCROLLING_GROUP = "A9_SCROLLING";
private static final String DUAL_SCROLLING_ACTION_GROUP = "DualScrolling"; private static final String DUAL_SCROLLING_ACTION_GROUP = "DualScrolling";
private static final String DUAL_SCROLLING_HELP_TOPIC = "FunctionComparison"; private static final String DUAL_SCROLLING_HELP_TOPIC = "FunctionComparison";

View File

@ -19,18 +19,14 @@ import java.awt.event.InputEvent;
import java.util.Set; import java.util.Set;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.services.FunctionComparisonService; import ghidra.app.services.FunctionComparisonService;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.ScaledImageIcon;
import resources.icons.TranslateIcon;
/** /**
* Creates a new comparison between a set of functions, launching a new * Creates a new comparison between a set of functions, launching a new
@ -45,13 +41,7 @@ public abstract class CompareFunctionsAction extends DockingAction {
protected FunctionComparisonService comparisonService; protected FunctionComparisonService comparisonService;
private static final ImageIcon COMPARISON_ICON = private static final Icon COMPARISON_ICON = new GIcon("icon.plugin.functioncompare.new");
ResourceManager.loadImage("images/page_white_c.png");
private static final Icon NEW_ICON = ResourceManager.loadImage("images/bullet_star.png");
private static final Icon SCALED_NEW_ICON = new ScaledImageIcon(NEW_ICON, 16, 16);
private static final Icon TRANSLATED_NEW_ICON = new TranslateIcon(SCALED_NEW_ICON, 4, -4);
private static final Icon CREATE_NEW_COMPARISON_ICON =
new MultiIcon(COMPARISON_ICON, TRANSLATED_NEW_ICON);
private static final String CREATE_COMPARISON_GROUP = "A9_CreateComparison"; private static final String CREATE_COMPARISON_GROUP = "A9_CreateComparison";
static final String POPUP_MENU_NAME = "Compare Selected Functions"; static final String POPUP_MENU_NAME = "Compare Selected Functions";
@ -85,7 +75,7 @@ public abstract class CompareFunctionsAction extends DockingAction {
* @return the icon * @return the icon
*/ */
protected Icon getToolBarIcon() { protected Icon getToolBarIcon() {
return CREATE_NEW_COMPARISON_ICON; return COMPARISON_ICON;
} }
/** /**

View File

@ -24,13 +24,11 @@ import javax.swing.JComboBox;
import docking.ActionContext; import docking.ActionContext;
import docking.ComponentProvider; import docking.ComponentProvider;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon;
/** /**
* Displays the next available function in the function comparison panel. If * Displays the next available function in the function comparison panel. If
@ -39,11 +37,8 @@ import resources.icons.TranslateIcon;
public class NextFunctionAction extends DockingAction { public class NextFunctionAction extends DockingAction {
private static final String FUNCTION_NAVIGATE_GROUP = "A9_FunctionNavigate"; private static final String FUNCTION_NAVIGATE_GROUP = "A9_FunctionNavigate";
private static final Icon NEXT_ICON = private static final Icon NEXT_FUNCTION_ICON =
new TranslateIcon(ResourceManager.loadImage("images/arrow_down.png"), 3, 1); new GIcon("icon.plugin.functioncompare.function.next");
private static final Icon FUNCTION_ICON =
new TranslateIcon(ResourceManager.loadImage("images/FunctionScope.gif"), -5, -2);
private static final Icon NEXT_FUNCTION_ICON = new MultiIcon(NEXT_ICON, FUNCTION_ICON);
/** /**
* Constructor * Constructor

View File

@ -20,11 +20,11 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.widgets.dialogs.TableSelectionDialog; import docking.widgets.dialogs.TableSelectionDialog;
import generic.theme.GIcon;
import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider; import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel;
import ghidra.app.plugin.core.functionwindow.FunctionRowObject; import ghidra.app.plugin.core.functionwindow.FunctionRowObject;
@ -35,10 +35,6 @@ import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.ScaledImageIcon;
import resources.icons.TranslateIcon;
import util.CollectionUtils; import util.CollectionUtils;
/** /**
@ -49,14 +45,9 @@ import util.CollectionUtils;
*/ */
public class OpenFunctionTableAction extends DockingAction { public class OpenFunctionTableAction extends DockingAction {
private static final Icon ADD_ICON = ResourceManager.loadImage("images/Plus.png");
private static final Icon SCALED_ADD_ICON = new ScaledImageIcon(ADD_ICON, 10, 10);
private static final ImageIcon COMPARISON_ICON =
ResourceManager.loadImage("images/page_white_c.png");
private static final Icon TRANSLATED_ADD_ICON = new TranslateIcon(SCALED_ADD_ICON, 8, 1);
private static final String ADD_COMPARISON_GROUP = "A9_AddToComparison"; private static final String ADD_COMPARISON_GROUP = "A9_AddToComparison";
private static final Icon ADD_TO_COMPARISON_ICON = private static final Icon ADD_TO_COMPARISON_ICON =
new MultiIcon(COMPARISON_ICON, TRANSLATED_ADD_ICON); new GIcon("icon.plugin.functioncompare.open.function.table");
protected PluginTool tool; protected PluginTool tool;
protected ProgramManager programManagerService; protected ProgramManager programManagerService;

View File

@ -24,13 +24,11 @@ import javax.swing.JComboBox;
import docking.ActionContext; import docking.ActionContext;
import docking.ComponentProvider; import docking.ComponentProvider;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon;
/** /**
* Displays the previous function in the function comparison panel. If * Displays the previous function in the function comparison panel. If
@ -39,11 +37,8 @@ import resources.icons.TranslateIcon;
public class PreviousFunctionAction extends DockingAction { public class PreviousFunctionAction extends DockingAction {
private static final String FUNCTION_NAVIGATE_GROUP = "A9_FunctionNavigate"; private static final String FUNCTION_NAVIGATE_GROUP = "A9_FunctionNavigate";
private static final Icon PREVIOUS_ICON = private static final Icon PREVIOUS_FUNCTION_ICON =
new TranslateIcon(ResourceManager.loadImage("images/arrow_up.png"), 3, 1); new GIcon("icon.plugin.functioncompare.function.previous");
private static final Icon FUNCTION_ICON =
new TranslateIcon(ResourceManager.loadImage("images/FunctionScope.gif"), -5, -2);
private static final Icon PREVIOUS_FUNCTION_ICON = new MultiIcon(PREVIOUS_ICON, FUNCTION_ICON);
/** /**
* Constructor * Constructor

View File

@ -25,13 +25,11 @@ import javax.swing.JComboBox;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import generic.theme.GIcon;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonPanel;
import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider; import ghidra.app.plugin.core.functioncompare.MultiFunctionComparisonProvider;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.MultiIcon;
import resources.ResourceManager;
import resources.icons.TranslateIcon;
/** /**
* Removes the currently-selected function from the comparison panel. If no * Removes the currently-selected function from the comparison panel. If no
@ -39,12 +37,9 @@ import resources.icons.TranslateIcon;
*/ */
public class RemoveFunctionsAction extends DockingAction { public class RemoveFunctionsAction extends DockingAction {
private static final Icon FUNCTION_ICON =
new TranslateIcon(ResourceManager.loadImage("images/FunctionScope.gif"), -5, -2);
private static final Icon REMOVE_ICON =
new TranslateIcon(ResourceManager.loadImage("images/edit-delete.png"), 3, 3);
private static final String REMOVE_FUNCTION_GROUP = "A9_RemoveFunctions"; private static final String REMOVE_FUNCTION_GROUP = "A9_RemoveFunctions";
private static final Icon REMOVE_FUNCTION_ICON = new MultiIcon(REMOVE_ICON, FUNCTION_ICON); private static final Icon REMOVE_FUNCTION_ICON =
new GIcon("icon.plugin.functioncompare.function.remove");
/** /**
* Constructor * Constructor

View File

@ -25,6 +25,7 @@ import javax.swing.*;
import javax.swing.table.*; import javax.swing.table.*;
import docking.ActionContext; import docking.ActionContext;
import generic.theme.GIcon;
import ghidra.app.services.GoToService; import ghidra.app.services.GoToService;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
@ -32,14 +33,13 @@ import ghidra.program.model.listing.*;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.table.*; import ghidra.util.table.*;
import resources.ResourceManager;
/** /**
* Provider that displays all functions in the selected program * Provider that displays all functions in the selected program
*/ */
public class FunctionWindowProvider extends ComponentProviderAdapter { public class FunctionWindowProvider extends ComponentProviderAdapter {
public static final ImageIcon icon = ResourceManager.loadImage("images/functions.gif"); public static final Icon ICON = new GIcon("icon.plugin.functionwindow.provider");
private FunctionWindowPlugin plugin; private FunctionWindowPlugin plugin;
private GhidraTable functionTable; private GhidraTable functionTable;
@ -58,7 +58,7 @@ public class FunctionWindowProvider extends ComponentProviderAdapter {
super(plugin.getTool(), "Functions Window", plugin.getName()); super(plugin.getTool(), "Functions Window", plugin.getName());
setTitle("Functions"); setTitle("Functions");
this.plugin = plugin; this.plugin = plugin;
setIcon(icon); setIcon(ICON);
setHelpLocation(new HelpLocation(plugin.getName(), plugin.getName())); setHelpLocation(new HelpLocation(plugin.getName(), plugin.getName()));
tool = plugin.getTool(); tool = plugin.getTool();
mainPanel = createWorkPanel(); mainPanel = createWorkPanel();

View File

@ -22,6 +22,7 @@ import javax.swing.*;
import docking.DockingWindowManager; import docking.DockingWindowManager;
import docking.widgets.EmptyBorderButton; import docking.widgets.EmptyBorderButton;
import generic.theme.GIcon;
import generic.theme.GThemeDefaults.Colors.Messages; import generic.theme.GThemeDefaults.Colors.Messages;
import ghidra.app.plugin.core.instructionsearch.InstructionSearchPlugin; import ghidra.app.plugin.core.instructionsearch.InstructionSearchPlugin;
import ghidra.app.plugin.core.instructionsearch.model.*; import ghidra.app.plugin.core.instructionsearch.model.*;
@ -32,6 +33,7 @@ import ghidra.util.HelpLocation;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.InvalidInputException; import ghidra.util.exception.InvalidInputException;
import ghidra.util.task.*; import ghidra.util.task.*;
import resources.Icons;
import resources.ResourceManager; import resources.ResourceManager;
/** /**
@ -47,15 +49,6 @@ public class InstructionTable extends AbstractInstructionTable {
// Defines the width/height for all icons on the toolbar // Defines the width/height for all icons on the toolbar
private static final int ICON_SIZE = 16; private static final int ICON_SIZE = 16;
private static final String GO_HOME_ICON_OVERLAY = "images/go-home.png";
private static final String ADDRESS_ICON_OVERLAY = "images/DOSA_A.png";
private static final String SCALAR_ICON_OVERLAY = "images/DOSA_S.png";
private static final String OPERAND_ICON_OVERLAY = "images/DOSA_O.png";
private static final String UNDEFINED_ICON_OVERLAY = "images/DOSA_D.png";
private static final String CLEAR_ICON_OVERLAY = "images/edit-clear.png";
private static final String RELOAD_ICON_OVERLAY = "images/reload.png";
private static final String MANUAL_ENTRY_ICON_OVERLAY = "images/editbytes.gif";
// Need to keep track of the column in case the user clicks on the column header and we // Need to keep track of the column in case the user clicks on the column header and we
// need to display the context menu. // need to display the context menu.
private int selectedColumn = -1; private int selectedColumn = -1;
@ -287,21 +280,21 @@ public class InstructionTable extends AbstractInstructionTable {
} }
private void createGoToAddressBtn(JToolBar buttonToolbar) { private void createGoToAddressBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(GO_HOME_ICON_OVERLAY); Icon icon = Icons.HOME_ICON;
Action action = new NavAction("navigation", icon, Action action = new NavAction("navigation", icon,
"Navigate to the address defined by this instruction set"); "Navigate to the address defined by this instruction set");
createToolbarButton(buttonToolbar, icon, action, "nav button"); createToolbarButton(buttonToolbar, icon, action, "nav button");
} }
private void createMaskClearAllBtn(JToolBar buttonToolbar) { private void createMaskClearAllBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(CLEAR_ICON_OVERLAY); Icon icon = Icons.CLEAR_ICON;
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = new ClearMasksAction("undefined", scaledIcon, "Unmask all"); Action action = new ClearMasksAction("undefined", scaledIcon, "Unmask all");
createToolbarButton(buttonToolbar, icon, action, "unmask all button"); createToolbarButton(buttonToolbar, icon, action, "unmask all button");
} }
private void createReloadBtn(JToolBar buttonToolbar) { private void createReloadBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(RELOAD_ICON_OVERLAY); Icon icon = Icons.REFRESH_ICON;
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = Action action =
new ReloadAction("undefined", scaledIcon, "Load selected instructions from listing"); new ReloadAction("undefined", scaledIcon, "Load selected instructions from listing");
@ -309,14 +302,14 @@ public class InstructionTable extends AbstractInstructionTable {
} }
private void createManualEditBtn(JToolBar buttonToolbar) { private void createManualEditBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(MANUAL_ENTRY_ICON_OVERLAY); Icon icon = new GIcon("icon.plugin.instructiontable.manual.entry");
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = new ManualEntryAction("undefined", scaledIcon, "Enter bytes manually"); Action action = new ManualEntryAction("undefined", scaledIcon, "Enter bytes manually");
createToolbarButton(buttonToolbar, icon, action, "manual entry"); createToolbarButton(buttonToolbar, icon, action, "manual entry");
} }
private void createMaskDataBtn(JToolBar buttonToolbar) { private void createMaskDataBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(UNDEFINED_ICON_OVERLAY); Icon icon = new GIcon("icon.plugin.instructiontable.undefined");
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = Action action =
new MaskUndefinedAction("undefined", scaledIcon, "Mask all non-instructions (data)"); new MaskUndefinedAction("undefined", scaledIcon, "Mask all non-instructions (data)");
@ -324,21 +317,21 @@ public class InstructionTable extends AbstractInstructionTable {
} }
private void createMaskAddressesBtn(JToolBar buttonToolbar) { private void createMaskAddressesBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(ADDRESS_ICON_OVERLAY); Icon icon = new GIcon("icon.plugin.instructiontable.address");
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = new MaskAddressesAction("addresses", scaledIcon, "Mask all addresses"); Action action = new MaskAddressesAction("addresses", scaledIcon, "Mask all addresses");
createToolbarButton(buttonToolbar, icon, action, "mask addresses button"); createToolbarButton(buttonToolbar, icon, action, "mask addresses button");
} }
private void createMaskScalarsBtn(JToolBar buttonToolbar) { private void createMaskScalarsBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(SCALAR_ICON_OVERLAY); Icon icon = new GIcon("icon.plugin.instructiontable.scalar");
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = new MaskScalarsAction("scalars", scaledIcon, "Mask all scalars"); Action action = new MaskScalarsAction("scalars", scaledIcon, "Mask all scalars");
createToolbarButton(buttonToolbar, icon, action, "mask scalars button"); createToolbarButton(buttonToolbar, icon, action, "mask scalars button");
} }
private void createMaskOperandsBtn(JToolBar buttonToolbar) { private void createMaskOperandsBtn(JToolBar buttonToolbar) {
Icon icon = ResourceManager.loadImage(OPERAND_ICON_OVERLAY); Icon icon = new GIcon("icon.plugin.instructiontable.operand");
Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE); Icon scaledIcon = ResourceManager.getScaledIcon(icon, ICON_SIZE, ICON_SIZE);
Action action = new MaskOperandsAction("operands", scaledIcon, "Mask all operands"); Action action = new MaskOperandsAction("operands", scaledIcon, "Mask all operands");
createToolbarButton(buttonToolbar, icon, action, "mask operands button"); createToolbarButton(buttonToolbar, icon, action, "mask operands button");
@ -549,7 +542,6 @@ public class InstructionTable extends AbstractInstructionTable {
/** /**
* Creates a new {@link InstructionTableDataObject} for the given operand. * Creates a new {@link InstructionTableDataObject} for the given operand.
* *
* @param mnemonic the mnemonic ID
* @param col the column in the table * @param col the column in the table
* @param dataObjects the set of data objects to modify * @param dataObjects the set of data objects to modify
*/ */

View File

@ -31,6 +31,7 @@ import docking.action.DockingAction;
import docking.action.MenuData; import docking.action.MenuData;
import docking.dnd.GClipboard; import docking.dnd.GClipboard;
import docking.widgets.EmptyBorderButton; import docking.widgets.EmptyBorderButton;
import generic.theme.GIcon;
import ghidra.app.plugin.core.instructionsearch.InstructionSearchPlugin; import ghidra.app.plugin.core.instructionsearch.InstructionSearchPlugin;
import ghidra.app.plugin.core.instructionsearch.model.*; import ghidra.app.plugin.core.instructionsearch.model.*;
import ghidra.app.plugin.core.instructionsearch.ui.SelectionModeWidget.InputMode; import ghidra.app.plugin.core.instructionsearch.ui.SelectionModeWidget.InputMode;
@ -39,7 +40,7 @@ import ghidra.framework.plugintool.PluginTool;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.InvalidInputException; import ghidra.util.exception.InvalidInputException;
import ghidra.util.task.*; import ghidra.util.task.*;
import resources.ResourceManager; import resources.Icons;
/** /**
* Displays the preview string for all instructions in the * Displays the preview string for all instructions in the
@ -231,12 +232,6 @@ public class PreviewTable extends AbstractInstructionTable {
new TaskLauncher(task, PreviewTable.this); new TaskLauncher(task, PreviewTable.this);
} }
/*********************************************************************************************
* PROTECTED METHODS
********************************************************************************************/
/**
*
*/
@Override @Override
protected Object[] createColumnHeaders() { protected Object[] createColumnHeaders() {
@ -246,9 +241,6 @@ public class PreviewTable extends AbstractInstructionTable {
return colsNames; return colsNames;
} }
/**
*
*/
@Override @Override
protected JToolBar createToolbar() { protected JToolBar createToolbar() {
JToolBar toolbar1 = new JToolBar(); JToolBar toolbar1 = new JToolBar();
@ -293,10 +285,6 @@ public class PreviewTable extends AbstractInstructionTable {
return dataObjects; return dataObjects;
} }
/*********************************************************************************************
* PRIVATE METHODS
********************************************************************************************/
private void buildPreviewString(int instrSize, String valueStr, String maskStr, int posptr, private void buildPreviewString(int instrSize, String valueStr, String maskStr, int posptr,
int row) { int row) {
@ -328,7 +316,7 @@ public class PreviewTable extends AbstractInstructionTable {
} }
private void createCopyBtn(JToolBar toolbar1) { private void createCopyBtn(JToolBar toolbar1) {
Icon copyIcon = ResourceManager.loadImage("images/page_white_copy.png"); Icon copyIcon = Icons.COPY_ICON;
Action copyAction = new CopyAction("copy", (ImageIcon) copyIcon, Action copyAction = new CopyAction("copy", (ImageIcon) copyIcon,
"Copy the full search string to clipboard"); "Copy the full search string to clipboard");
EmptyBorderButton copyBtn = new EmptyBorderButton(); EmptyBorderButton copyBtn = new EmptyBorderButton();
@ -339,7 +327,7 @@ public class PreviewTable extends AbstractInstructionTable {
} }
private EmptyBorderToggleButton createHexViewBtn(JToolBar toolbar1) { private EmptyBorderToggleButton createHexViewBtn(JToolBar toolbar1) {
Icon hexIcon = ResourceManager.loadImage("images/hexData.png"); Icon hexIcon = new GIcon("icon.plugin.instructiontable.hex");
Action hexAction = new HexAction("hex", (ImageIcon) hexIcon, "hex view"); Action hexAction = new HexAction("hex", (ImageIcon) hexIcon, "hex view");
EmptyBorderToggleButton hexBtn = new EmptyBorderToggleButton(); EmptyBorderToggleButton hexBtn = new EmptyBorderToggleButton();
hexBtn.setAction(hexAction); hexBtn.setAction(hexAction);
@ -351,7 +339,7 @@ public class PreviewTable extends AbstractInstructionTable {
} }
private EmptyBorderToggleButton createBinaryViewBtn(JToolBar toolbar1) { private EmptyBorderToggleButton createBinaryViewBtn(JToolBar toolbar1) {
Icon binaryIcon = ResourceManager.loadImage("images/binaryData.gif"); Icon binaryIcon = new GIcon("icon.plugin.instructiontable.binary");
Action binaryAction = new BinaryAction("binary", (ImageIcon) binaryIcon, "binary view"); Action binaryAction = new BinaryAction("binary", (ImageIcon) binaryIcon, "binary view");
EmptyBorderToggleButton binaryBtn = new EmptyBorderToggleButton(); EmptyBorderToggleButton binaryBtn = new EmptyBorderToggleButton();
binaryBtn.setAction(binaryAction); binaryBtn.setAction(binaryAction);
@ -449,19 +437,19 @@ public class PreviewTable extends AbstractInstructionTable {
createCopyNoSpacesAction(owner); createCopyNoSpacesAction(owner);
copyNoSpacesAction.setPopupMenuData( copyNoSpacesAction.setPopupMenuData(
new MenuData(new String[] { "Copy Special", "Selected instructions (no spaces)" }, new MenuData(new String[] { "Copy Special", "Selected instructions (no spaces)" },
ResourceManager.loadImage("images/page_white_copy.png"), actionMenuGroup, Icons.COPY_ICON, actionMenuGroup,
MenuData.NO_MNEMONIC, Integer.toString(1))); MenuData.NO_MNEMONIC, Integer.toString(1)));
createCopyInstructionAction(owner); createCopyInstructionAction(owner);
copyInstructionAction.setPopupMenuData( copyInstructionAction.setPopupMenuData(
new MenuData(new String[] { "Copy Special", "Selected Instructions" }, new MenuData(new String[] { "Copy Special", "Selected Instructions" },
ResourceManager.loadImage("images/page_white_copy.png"), actionMenuGroup, Icons.COPY_ICON, actionMenuGroup,
MenuData.NO_MNEMONIC, Integer.toString(1))); MenuData.NO_MNEMONIC, Integer.toString(1)));
createCopyInstructionWithCommentsAction(owner); createCopyInstructionWithCommentsAction(owner);
copyInstructionWithCommentsAction.setPopupMenuData( copyInstructionWithCommentsAction.setPopupMenuData(
new MenuData(new String[] { "Copy Special", "Selected Instructions (with comments)" }, new MenuData(new String[] { "Copy Special", "Selected Instructions (with comments)" },
ResourceManager.loadImage("images/page_white_copy.png"), actionMenuGroup, Icons.COPY_ICON, actionMenuGroup,
MenuData.NO_MNEMONIC, Integer.toString(1))); MenuData.NO_MNEMONIC, Integer.toString(1)));
dialog.addAction(copyNoSpacesAction); dialog.addAction(copyNoSpacesAction);
@ -488,8 +476,12 @@ public class PreviewTable extends AbstractInstructionTable {
if (comment != null) { if (comment != null) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append(val).append("\t").append("// ").append(comment).append( builder.append(val)
"\n"); .append("\t")
.append("// ")
.append(comment)
.append(
"\n");
val = builder.toString(); val = builder.toString();
} }
} }

View File

@ -26,18 +26,15 @@ import docking.ActionContext;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GIcon;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.Icons; import resources.Icons;
import resources.ResourceManager;
import utility.function.Callback; import utility.function.Callback;
public class InterpreterComponentProvider extends ComponentProviderAdapter public class InterpreterComponentProvider extends ComponentProviderAdapter
implements InterpreterConsole { implements InterpreterConsole {
private static final String CONSOLE_GIF = "images/monitor.png";
private static final String CLEAR_GIF = "images/erase16.png";
private InterpreterPanel panel; private InterpreterPanel panel;
private InterpreterConnection interpreter; private InterpreterConnection interpreter;
private List<Callback> firstActivationCallbacks; private List<Callback> firstActivationCallbacks;
@ -57,7 +54,7 @@ public class InterpreterComponentProvider extends ComponentProviderAdapter
Icon icon = interpreter.getIcon(); Icon icon = interpreter.getIcon();
if (icon == null) { if (icon == null) {
icon = ResourceManager.loadImage(CONSOLE_GIF); icon = new GIcon("icon.plugin.interpreter.provider");
} }
setIcon(icon); setIcon(icon);
@ -73,7 +70,7 @@ public class InterpreterComponentProvider extends ComponentProviderAdapter
} }
}; };
clearAction.setDescription("Clear Interpreter"); clearAction.setDescription("Clear Interpreter");
clearAction.setToolBarData(new ToolBarData(ResourceManager.loadImage(CLEAR_GIF), null)); clearAction.setToolBarData(new ToolBarData(Icons.CLEAR_ICON, null));
clearAction.setEnabled(true); clearAction.setEnabled(true);
addLocalAction(clearAction); addLocalAction(clearAction);

View File

@ -31,6 +31,7 @@ import ghidra.program.model.listing.Program;
import ghidra.program.util.MarkerLocation; import ghidra.program.util.MarkerLocation;
import ghidra.util.datastruct.Range; import ghidra.util.datastruct.Range;
import ghidra.util.datastruct.SortedRangeList; import ghidra.util.datastruct.SortedRangeList;
import resources.Icons;
import resources.ResourceManager; import resources.ResourceManager;
class PointMarkerSet extends MarkerSetImpl { class PointMarkerSet extends MarkerSetImpl {
@ -61,7 +62,7 @@ class PointMarkerSet extends MarkerSetImpl {
colorBackground, colorBackground,
markerColor, isPreferred); markerColor, isPreferred);
if (icon == null) { if (icon == null) {
icon = ResourceManager.loadImage("images/warning.png"); icon = Icons.WARNING_ICON;
} }
ImageIcon imageIcon = ResourceManager.getScaledIcon(icon, 16, 16, Image.SCALE_SMOOTH); ImageIcon imageIcon = ResourceManager.getScaledIcon(icon, 16, 16, Image.SCALE_SMOOTH);
image = imageIcon.getImage(); image = imageIcon.getImage();

View File

@ -29,6 +29,7 @@ import docking.action.ToolBarData;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import docking.widgets.table.*; import docking.widgets.table.*;
import docking.widgets.textfield.GValidatedTextField.MaxLengthField; import docking.widgets.textfield.GValidatedTextField.MaxLengthField;
import generic.theme.GIcon;
import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramActionContext;
import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFile;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
@ -40,7 +41,6 @@ import ghidra.program.model.mem.MemoryBlockType;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTable;
import resources.ResourceManager;
/** /**
* Provider for the memory map Component. * Provider for the memory map Component.
@ -65,16 +65,6 @@ class MemoryMapProvider extends ComponentProviderAdapter {
private MemoryMapPlugin plugin = null; private MemoryMapPlugin plugin = null;
private final static String ADD_IMAGE = "images/Plus.png";
private final static String MOVE_IMAGE = "images/move.png";
private final static String SPLIT_IMAGE = "images/verticalSplit.png";
private final static String EXPAND_UP_IMAGE = "images/collapse.gif";
private final static String EXPAND_DOWN_IMAGE = "images/expand.gif";
private final static String MERGE_IMAGE = "images/Merge.png";
private final static String DELETE_IMAGE = "images/edit-delete.png";
private final static String IMAGE_BASE = "images/house.png";
final static String MEMORY_IMAGE = "images/memory16.gif";
private Program program; private Program program;
private MemoryMapManager memManager; private MemoryMapManager memManager;
@ -84,7 +74,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
setHelpLocation(new HelpLocation(plugin.getName(), getName())); setHelpLocation(new HelpLocation(plugin.getName(), getName()));
memManager = plugin.getMemoryMapManager(); memManager = plugin.getMemoryMapManager();
setIcon(ResourceManager.loadImage(MEMORY_IMAGE)); setIcon(new GIcon("icon.plugin.memorymap.provider"));
addToToolbar(); addToToolbar();
mainPanel = buildMainPanel(); mainPanel = buildMainPanel();
addToTool(); addToTool();
@ -185,7 +175,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
} }
private void addLocalActions() { private void addLocalActions() {
ImageIcon addImage = ResourceManager.loadImage(ADD_IMAGE); Icon addImage = new GIcon("icon.plugin.memorymap.add");
addAction = new MemoryMapAction("Add Block", addImage) { addAction = new MemoryMapAction("Add Block", addImage) {
@Override @Override
@ -200,7 +190,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
addAction.setDescription("Add a new block to memory"); addAction.setDescription("Add a new block to memory");
tool.addLocalAction(this, addAction); tool.addLocalAction(this, addAction);
ImageIcon moveImage = ResourceManager.loadImage(MOVE_IMAGE); Icon moveImage = new GIcon("icon.plugin.memorymap.move");
moveAction = new MemoryMapAction("Move Block", moveImage) { moveAction = new MemoryMapAction("Move Block", moveImage) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -213,7 +203,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
moveAction.setDescription("Move a block to another address"); moveAction.setDescription("Move a block to another address");
tool.addLocalAction(this, moveAction); tool.addLocalAction(this, moveAction);
ImageIcon splitImage = ResourceManager.loadImage(SPLIT_IMAGE); Icon splitImage = new GIcon("icon.plugin.memorymap.split");
splitAction = new MemoryMapAction("Split Block", splitImage) { splitAction = new MemoryMapAction("Split Block", splitImage) {
@Override @Override
@ -228,7 +218,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
splitAction.setDescription("Split a block"); splitAction.setDescription("Split a block");
tool.addLocalAction(this, splitAction); tool.addLocalAction(this, splitAction);
ImageIcon expandUpImage = ResourceManager.loadImage(EXPAND_UP_IMAGE); Icon expandUpImage = new GIcon("icon.plugin.memorymap.expand.up");
expandUpAction = new MemoryMapAction("Expand Block Up", expandUpImage) { expandUpAction = new MemoryMapAction("Expand Block Up", expandUpImage) {
@Override @Override
@ -242,7 +232,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
expandUpAction.setDescription("Expand block by setting new start address"); expandUpAction.setDescription("Expand block by setting new start address");
tool.addLocalAction(this, expandUpAction); tool.addLocalAction(this, expandUpAction);
ImageIcon expandDownImage = ResourceManager.loadImage(EXPAND_DOWN_IMAGE); Icon expandDownImage = new GIcon("icon.plugin.memorymap.expand.down");
expandDownAction = new MemoryMapAction("Expand Block Down", expandDownImage) { expandDownAction = new MemoryMapAction("Expand Block Down", expandDownImage) {
@Override @Override
@ -256,7 +246,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
expandDownAction.setDescription("Expand block by setting new end address"); expandDownAction.setDescription("Expand block by setting new end address");
tool.addLocalAction(this, expandDownAction); tool.addLocalAction(this, expandDownAction);
ImageIcon mergeImage = ResourceManager.loadImage(MERGE_IMAGE); Icon mergeImage = new GIcon("icon.plugin.memorymap.merge");
mergeAction = new MemoryMapAction("Merge Blocks", mergeImage) { mergeAction = new MemoryMapAction("Merge Blocks", mergeImage) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -269,7 +259,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
mergeAction.setDescription("Merge blocks into a single block"); mergeAction.setDescription("Merge blocks into a single block");
tool.addLocalAction(this, mergeAction); tool.addLocalAction(this, mergeAction);
ImageIcon deleteImage = ResourceManager.loadImage(DELETE_IMAGE); Icon deleteImage = new GIcon("icon.plugin.memorymap.delete");
deleteAction = new MemoryMapAction("Delete Block", deleteImage) { deleteAction = new MemoryMapAction("Delete Block", deleteImage) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -282,7 +272,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
deleteAction.setDescription("Delete a block"); deleteAction.setDescription("Delete a block");
tool.addLocalAction(this, deleteAction); tool.addLocalAction(this, deleteAction);
ImageIcon setBaseIcon = ResourceManager.loadImage(IMAGE_BASE); Icon setBaseIcon = new GIcon("icon.plugin.memorymap.image.base");
setBaseAction = new MemoryMapAction("Set Image Base", setBaseIcon) { setBaseAction = new MemoryMapAction("Set Image Base", setBaseIcon) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -687,7 +677,7 @@ class MemoryMapProvider extends ComponentProviderAdapter {
} }
private abstract class MemoryMapAction extends DockingAction { private abstract class MemoryMapAction extends DockingAction {
MemoryMapAction(String name, ImageIcon icon) { MemoryMapAction(String name, Icon icon) {
super(name, plugin.getName()); super(name, plugin.getName());
this.setToolBarData(new ToolBarData(icon, null)); this.setToolBarData(new ToolBarData(icon, null));
} }

View File

@ -24,12 +24,13 @@ package ghidra.app.plugin.core.misc;
import java.awt.Color; import java.awt.Color;
import java.io.IOException; import java.io.IOException;
import javax.swing.ImageIcon; import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import generic.theme.GColor; import generic.theme.GColor;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
import ghidra.app.plugin.ProgramPlugin; import ghidra.app.plugin.ProgramPlugin;
@ -51,7 +52,6 @@ import ghidra.util.task.SwingUpdateManager;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import ghidra.util.worker.Job; import ghidra.util.worker.Job;
import ghidra.util.worker.Worker; import ghidra.util.worker.Worker;
import resources.ResourceManager;
/** /**
* Manages the markers to display areas where changes have occurred * Manages the markers to display areas where changes have occurred
@ -120,7 +120,7 @@ public class MyProgramChangesDisplayPlugin extends ProgramPlugin implements Doma
private void createActions() { private void createActions() {
ImageIcon icon = ResourceManager.loadImage("images/vcMerge.png"); Icon icon = new GIcon("icon.plugin.myprogramchanges.merge");
mergeAction = new DockingAction("Update", getName()) { mergeAction = new DockingAction("Update", getName()) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {
@ -137,7 +137,7 @@ public class MyProgramChangesDisplayPlugin extends ProgramPlugin implements Doma
mergeAction.setDescription("Update checked out file with latest version"); mergeAction.setDescription("Update checked out file with latest version");
mergeAction.setHelpLocation(new HelpLocation("VersionControl", mergeAction.getName())); mergeAction.setHelpLocation(new HelpLocation("VersionControl", mergeAction.getName()));
icon = ResourceManager.loadImage("images/vcCheckIn.png"); icon = new GIcon("icon.plugin.myprogramchanges.checkin");
checkInAction = new DockingAction("CheckIn", getName()) { checkInAction = new DockingAction("CheckIn", getName()) {
@Override @Override
public void actionPerformed(ActionContext context) { public void actionPerformed(ActionContext context) {

View File

@ -42,7 +42,7 @@ import resources.*;
public abstract class AbstractNextPreviousAction extends NavigatableContextAction { public abstract class AbstractNextPreviousAction extends NavigatableContextAction {
private static final Icon INVERTED_OVERLAY_ICON = private static final Icon INVERTED_OVERLAY_ICON =
ImageUtils.makeTransparent(ResourceManager.loadImage("images/dialog-cancel.png"), .5f); ImageUtils.makeTransparent(Icons.NOT_ALLOWED_ICON, .5f);
private boolean isForward = true; private boolean isForward = true;
private PluginTool tool; private PluginTool tool;

View File

@ -20,6 +20,7 @@ import java.awt.event.KeyEvent;
import docking.DockingUtils; import docking.DockingUtils;
import docking.action.*; import docking.action.*;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import generic.theme.GIcon;
import ghidra.app.context.ProgramLocationActionContext; import ghidra.app.context.ProgramLocationActionContext;
import ghidra.app.nav.NextRangeAction; import ghidra.app.nav.NextRangeAction;
import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.PluginCategoryNames;
@ -27,19 +28,20 @@ import ghidra.app.util.HelpTopics;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager;
public class NextHighlightedRangeAction extends NextRangeAction { public class NextHighlightedRangeAction extends NextRangeAction {
private static final GIcon ICON = new GIcon("icon.plugin.navigation.highlight.range.next");
public NextHighlightedRangeAction(PluginTool tool, String owner, NavigationOptions navOptions) { public NextHighlightedRangeAction(PluginTool tool, String owner, NavigationOptions navOptions) {
super(tool, "Next Highlighted Range", owner, navOptions); super(tool, "Next Highlighted Range", owner, navOptions);
setMenuBarData(new MenuData(new String[] { ToolConstants.MENU_NAVIGATION, setMenuBarData(new MenuData(new String[] { ToolConstants.MENU_NAVIGATION,
"Next Highlight Range" }, ResourceManager.loadImage("images/NextHighlightBlock16.gif"), "Next Highlight Range" }, ICON,
PluginCategoryNames.NAVIGATION, MenuData.NO_MNEMONIC, PluginCategoryNames.NAVIGATION, MenuData.NO_MNEMONIC,
NextPrevHighlightRangePlugin.ACTION_SUB_GROUP)); NextPrevHighlightRangePlugin.ACTION_SUB_GROUP));
setToolBarData(new ToolBarData( setToolBarData(new ToolBarData(
ResourceManager.loadImage("images/NextHighlightBlock16.gif"), ICON,
ToolConstants.TOOLBAR_GROUP_THREE, NextPrevHighlightRangePlugin.ACTION_SUB_GROUP)); ToolConstants.TOOLBAR_GROUP_THREE, NextPrevHighlightRangePlugin.ACTION_SUB_GROUP));
setKeyBindingData( setKeyBindingData(
new KeyBindingData(KeyEvent.VK_0, DockingUtils.CONTROL_KEY_MODIFIER_MASK)); new KeyBindingData(KeyEvent.VK_0, DockingUtils.CONTROL_KEY_MODIFIER_MASK));

View File

@ -21,12 +21,12 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.menu.MultiActionDockingAction; import docking.menu.MultiActionDockingAction;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import generic.theme.GIcon;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableActionContext;
import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramActionContext;
@ -46,7 +46,6 @@ import ghidra.program.model.listing.*;
import ghidra.program.model.symbol.Symbol; import ghidra.program.model.symbol.Symbol;
import ghidra.program.model.symbol.SymbolTable; import ghidra.program.model.symbol.SymbolTable;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager;
/** /**
* <CODE>NextPrevAddressPlugin</CODE> allows the user to go back and forth in * <CODE>NextPrevAddressPlugin</CODE> allows the user to go back and forth in
@ -65,8 +64,8 @@ import resources.ResourceManager;
public class NextPrevAddressPlugin extends Plugin { public class NextPrevAddressPlugin extends Plugin {
private static final String HISTORY_MENU_GROUP = "1_Menu_History_Group"; private static final String HISTORY_MENU_GROUP = "1_Menu_History_Group";
private static ImageIcon previousIcon = ResourceManager.loadImage("images/left.png"); private static Icon PREVIOUS_ICON = new GIcon("icon.plugin.navigation.location.previous");
private static ImageIcon nextIcon = ResourceManager.loadImage("images/right.png"); private static Icon NEXT_ICON = new GIcon("icon.plugin.navigation.location.next");
private static final String PREVIOUS_ACTION_NAME = "Previous Location in History"; private static final String PREVIOUS_ACTION_NAME = "Previous Location in History";
private static final String NEXT_ACTION_NAME = "Next Location in History"; private static final String NEXT_ACTION_NAME = "Next Location in History";
@ -301,7 +300,7 @@ public class NextPrevAddressPlugin extends Plugin {
super(name, owner); super(name, owner);
this.isNext = isNext; this.isNext = isNext;
setToolBarData(new ToolBarData(isNext ? nextIcon : previousIcon, setToolBarData(new ToolBarData(isNext ? NEXT_ICON : PREVIOUS_ICON,
ToolConstants.TOOLBAR_GROUP_TWO)); ToolConstants.TOOLBAR_GROUP_TWO));
setHelpLocation(new HelpLocation(HelpTopics.NAVIGATION, name)); setHelpLocation(new HelpLocation(HelpTopics.NAVIGATION, name));
int keycode = isNext ? KeyEvent.VK_RIGHT : KeyEvent.VK_LEFT; int keycode = isNext ? KeyEvent.VK_RIGHT : KeyEvent.VK_LEFT;

View File

@ -23,6 +23,7 @@ import javax.swing.Icon;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import generic.theme.GIcon;
import generic.util.image.ImageUtils; import generic.util.image.ImageUtils;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableActionContext;
@ -33,7 +34,7 @@ import ghidra.app.util.HelpTopics;
import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.*;
import ghidra.framework.plugintool.util.PluginStatus; import ghidra.framework.plugintool.util.PluginStatus;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import resources.ResourceManager; import resources.Icons;
/** /**
* The NextPrevCodeUnitPlugin generates a GoTo event based on where the cursor * The NextPrevCodeUnitPlugin generates a GoTo event based on where the cursor
@ -135,9 +136,9 @@ public class NextPrevCodeUnitPlugin extends Plugin {
private class InvertStateAction extends ToggleDockingAction { private class InvertStateAction extends ToggleDockingAction {
private final Icon INVERTED_ICON_OFF = ImageUtils.makeTransparent( private final Icon INVERTED_ICON_OFF = ImageUtils.makeTransparent(
ResourceManager.loadImage("images/dialog-cancel.png")); Icons.NOT_ALLOWED_ICON);
private final Icon INVERTED_ICON_ON = ImageUtils.makeTransparent( private final Icon INVERTED_ICON_ON = ImageUtils.makeTransparent(
ResourceManager.loadImage("images/dialog-cancel.png"), .8f); Icons.NOT_ALLOWED_ICON, .8f);
private boolean isInverted = false; private boolean isInverted = false;
public InvertStateAction(String subGroup) { public InvertStateAction(String subGroup) {
@ -146,10 +147,7 @@ public class NextPrevCodeUnitPlugin extends Plugin {
setToolBarData(new ToolBarData(INVERTED_ICON_OFF, setToolBarData(new ToolBarData(INVERTED_ICON_OFF,
ToolConstants.TOOLBAR_GROUP_FOUR, subGroup)); ToolConstants.TOOLBAR_GROUP_FOUR, subGroup));
// TODO add help entry
setHelpLocation(new HelpLocation(HelpTopics.NAVIGATION, getName())); setHelpLocation(new HelpLocation(HelpTopics.NAVIGATION, getName()));
// TODO setDescriptoin("...");
setSelected(false); setSelected(false);
addToWindowWhen(NavigatableActionContext.class); addToWindowWhen(NavigatableActionContext.class);
@ -169,8 +167,8 @@ public class NextPrevCodeUnitPlugin extends Plugin {
} }
private class ToggleDirectionAction extends NavigatableContextAction { private class ToggleDirectionAction extends NavigatableContextAction {
private final Icon FORWARD_ICON = ResourceManager.loadImage("images/down.png"); private final Icon FORWARD_ICON = new GIcon("icon.down");
private final Icon BACKWARD_ICON = ResourceManager.loadImage("images/up.png"); private final Icon BACKWARD_ICON = new GIcon("icon.up");
private boolean isForward = true; private boolean isForward = true;
ToggleDirectionAction(String subGroup) { ToggleDirectionAction(String subGroup) {

View File

@ -18,7 +18,8 @@ package ghidra.app.plugin.core.navigation;
import java.awt.event.*; import java.awt.event.*;
import java.util.Iterator; import java.util.Iterator;
import javax.swing.*; import javax.swing.Icon;
import javax.swing.KeyStroke;
import docking.ActionContext; import docking.ActionContext;
import docking.action.*; import docking.action.*;
@ -26,6 +27,7 @@ import docking.menu.ActionState;
import docking.menu.MultiStateDockingAction; import docking.menu.MultiStateDockingAction;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import docking.widgets.EventTrigger; import docking.widgets.EventTrigger;
import generic.theme.GIcon;
import generic.util.image.ImageUtils; import generic.util.image.ImageUtils;
import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingActionContext;
import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableActionContext;
@ -45,26 +47,21 @@ public class NextPreviousBookmarkAction extends MultiStateDockingAction<String>
public static final String ALL_BOOKMARK_TYPES = "All Bookmark Types"; public static final String ALL_BOOKMARK_TYPES = "All Bookmark Types";
private static final Icon INVERTED_OVERLAY_ICON = private static final Icon INVERTED_OVERLAY_ICON =
ImageUtils.makeTransparent(ResourceManager.loadImage("images/dialog-cancel.png"), .5f); ImageUtils.makeTransparent(Icons.NOT_ALLOWED_ICON, .5f);
private PluginTool tool; private PluginTool tool;
private boolean isForward = true; private boolean isForward = true;
private boolean isInverted; private boolean isInverted;
private static final Icon BOOKMARK_ICON = ResourceManager.getScaledIcon( //@formatter:off
ResourceManager.loadImage("images/B.gif"), 16, 16); private static final Icon BOOKMARK_ICON = new GIcon("icon.plugin.navigation.bookmark");
private static final Icon BOOKMARK_ANALYSIS_ICON = private static final Icon BOOKMARK_ANALYSIS_ICON = new GIcon("icon.plugin.navigation.bookmark.analysis");
ResourceManager.loadImage("images/applications-system.png"); private static final Icon BOOKMARK_ERROR_ICON = new GIcon("icon.plugin.navigation.bookmark.error");
private static final ImageIcon BOOKMARK_ERROR_ICON = private static final Icon BOOKMARK_INFO_ICON = new GIcon("icon.plugin.navigation.bookmark.info");
ResourceManager.loadImage("images/edit-delete.png"); private static final Icon BOOKMARK_NOTE_ICON = new GIcon("icon.plugin.navigation.bookmark.note");
private static final Icon BOOKMARK_INFO_ICON = private static final Icon BOOKMARK_WARNING_ICON = new GIcon("icon.plugin.navigation.bookmark.warning");
ResourceManager.loadImage("images/information.png"); private static final Icon BOOKMARK_UNKNOWN_ICON = new GIcon("icon.plugin.navigation.bookmark.unknown");
private static final Icon BOOKMARK_NOTE_ICON = //@formatter:on
ResourceManager.loadImage("images/notes.gif");
private static final Icon BOOKMARK_WARNING_ICON =
ResourceManager.loadImage("images/warning.png");
private static final Icon BOOKMARK_UNKNOWN_ICON =
ResourceManager.loadImage("images/unknown.gif");
public NextPreviousBookmarkAction(PluginTool tool, String owner, String subGroup) { public NextPreviousBookmarkAction(PluginTool tool, String owner, String subGroup) {
super("Next Bookmark", owner); super("Next Bookmark", owner);

View File

@ -21,15 +21,17 @@ import java.awt.event.KeyEvent;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import generic.theme.GIcon;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.*; import ghidra.program.model.listing.*;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class NextPreviousDefinedDataAction extends AbstractNextPreviousAction { public class NextPreviousDefinedDataAction extends AbstractNextPreviousAction {
private static final Icon ICON = new GIcon("icon.plugin.navigation.data");
public NextPreviousDefinedDataAction(PluginTool tool, String owner, String subGroup) { public NextPreviousDefinedDataAction(PluginTool tool, String owner, String subGroup) {
super(tool, "Next Data", owner, subGroup); super(tool, "Next Data", owner, subGroup);
} }
@ -41,7 +43,7 @@ public class NextPreviousDefinedDataAction extends AbstractNextPreviousAction {
@Override @Override
protected Icon getIcon() { protected Icon getIcon() {
return ResourceManager.loadImage("images/D.gif"); return ICON;
} }
@Override @Override

View File

@ -21,6 +21,7 @@ import java.awt.event.KeyEvent;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import generic.theme.GIcon;
import ghidra.app.nav.Navigatable; import ghidra.app.nav.Navigatable;
import ghidra.app.services.GoToService; import ghidra.app.services.GoToService;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
@ -30,17 +31,18 @@ import ghidra.program.model.listing.*;
import ghidra.program.util.FunctionSignatureFieldLocation; import ghidra.program.util.FunctionSignatureFieldLocation;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class NextPreviousFunctionAction extends AbstractNextPreviousAction { public class NextPreviousFunctionAction extends AbstractNextPreviousAction {
private static final Icon ICON = new GIcon("icon.plugin.navigation.function");
public NextPreviousFunctionAction(PluginTool tool, String owner, String subGroup) { public NextPreviousFunctionAction(PluginTool tool, String owner, String subGroup) {
super(tool, "Next Function", owner, subGroup); super(tool, "Next Function", owner, subGroup);
} }
@Override @Override
protected Icon getIcon() { protected Icon getIcon() {
return ResourceManager.loadImage("images/F.gif"); return ICON;
} }
@Override @Override

View File

@ -21,22 +21,24 @@ import java.awt.event.KeyEvent;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import generic.theme.GIcon;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.*; import ghidra.program.model.listing.*;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class NextPreviousInstructionAction extends AbstractNextPreviousAction { public class NextPreviousInstructionAction extends AbstractNextPreviousAction {
private static final Icon ICON = new GIcon("icon.plugin.navigation.instruction");
public NextPreviousInstructionAction(PluginTool tool, String owner, String subGroup) { public NextPreviousInstructionAction(PluginTool tool, String owner, String subGroup) {
super(tool, "Next Instruction", owner, subGroup); super(tool, "Next Instruction", owner, subGroup);
} }
@Override @Override
protected Icon getIcon() { protected Icon getIcon() {
return ResourceManager.loadImage("images/I.gif"); return ICON;
} }
@Override @Override

View File

@ -21,6 +21,7 @@ import java.awt.event.KeyEvent;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import generic.theme.GIcon;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressIterator; import ghidra.program.model.address.AddressIterator;
@ -28,17 +29,18 @@ import ghidra.program.model.listing.*;
import ghidra.program.model.symbol.*; import ghidra.program.model.symbol.*;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
import resources.ResourceManager;
public class NextPreviousLabelAction extends AbstractNextPreviousAction { public class NextPreviousLabelAction extends AbstractNextPreviousAction {
private static final Icon ICON = new GIcon("icon.plugin.navigation.label");
public NextPreviousLabelAction(PluginTool tool, String owner, String subGroup) { public NextPreviousLabelAction(PluginTool tool, String owner, String subGroup) {
super(tool, "Next Label", owner, subGroup); super(tool, "Next Label", owner, subGroup);
} }
@Override @Override
protected Icon getIcon() { protected Icon getIcon() {
return ResourceManager.loadImage("images/L.gif"); return ICON;
} }
@Override @Override

Some files were not shown because too many files have changed in this diff Show More