diff --git a/Ghidra/Features/Base/src/main/java/ghidra/GhidraOptions.java b/Ghidra/Features/Base/src/main/java/ghidra/GhidraOptions.java index d518d1ca7b..e564ed5235 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/GhidraOptions.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/GhidraOptions.java @@ -18,7 +18,7 @@ package ghidra; import java.awt.Color; import java.awt.event.MouseEvent; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.framework.options.Options; /** diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/AbstractCodeBrowserPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/AbstractCodeBrowserPlugin.java index c70b6a1be4..3d6f692a0b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/AbstractCodeBrowserPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/AbstractCodeBrowserPlugin.java @@ -26,11 +26,11 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import docking.action.DockingAction; -import docking.theme.GColor; import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldSelection; +import generic.theme.GColor; import ghidra.GhidraOptions; import ghidra.app.events.ProgramHighlightPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java index 826741b40c..1532741187 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/ListingHighlightProvider.java @@ -26,10 +26,10 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; -import docking.theme.GColor; import docking.widgets.fieldpanel.field.FieldElement; import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.Highlight; +import generic.theme.GColor; import ghidra.GhidraOptions; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.app.plugin.processors.generic.PcodeFieldFactory; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/MarkerServiceBackgroundColorModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/MarkerServiceBackgroundColorModel.java index 17e073cfa1..d906d9293e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/MarkerServiceBackgroundColorModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/MarkerServiceBackgroundColorModel.java @@ -18,8 +18,8 @@ package ghidra.app.plugin.core.codebrowser; import java.awt.Color; import java.math.BigInteger; -import docking.theme.GColor; import docking.widgets.fieldpanel.support.BackgroundColorModel; +import generic.theme.GColor; import ghidra.app.services.MarkerService; import ghidra.app.util.viewer.listingpanel.ListingBackgroundColorModel; import ghidra.app.util.viewer.listingpanel.ListingPanel; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/BackgroundIcon.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/BackgroundIcon.java index 22a8cae0fd..bc14480e9d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/BackgroundIcon.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/BackgroundIcon.java @@ -19,8 +19,8 @@ import java.awt.*; import javax.swing.Icon; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; class BackgroundIcon implements Icon { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/interpreter/InterpreterPanel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/interpreter/InterpreterPanel.java index a695204fe8..a4e177db9c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/interpreter/InterpreterPanel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/interpreter/InterpreterPanel.java @@ -28,7 +28,7 @@ import javax.swing.text.*; import docking.DockingUtils; import docking.actions.KeyBindingUtils; -import docking.theme.GColor; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.app.plugin.core.console.CodeCompletion; import ghidra.framework.options.OptionsChangeListener; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusComponentProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusComponentProvider.java index 650a85e19e..e2f19c4d36 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusComponentProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusComponentProvider.java @@ -26,12 +26,12 @@ import javax.swing.*; import javax.swing.event.TableModelEvent; import docking.action.builder.ActionBuilder; -import docking.theme.GColor; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooserMode; import docking.widgets.table.GTable; import docking.widgets.table.GTableFilterPanel; import generic.jar.ResourceFile; +import generic.theme.GColor; import generic.util.Path; import ghidra.app.services.ConsoleService; import ghidra.framework.plugintool.ComponentProviderAdapter; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusTableModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusTableModel.java index ee2c68f757..df11cafa29 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusTableModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusTableModel.java @@ -27,9 +27,9 @@ import javax.swing.event.TableModelEvent; import org.osgi.framework.Bundle; -import docking.theme.GColor; import docking.widgets.table.*; import generic.jar.ResourceFile; +import generic.theme.GColor; import generic.util.Path; import ghidra.docking.settings.Settings; import ghidra.framework.plugintool.ServiceProvider; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DnDTreeCellRenderer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DnDTreeCellRenderer.java index 37ba6e7638..10b424bfd3 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DnDTreeCellRenderer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DnDTreeCellRenderer.java @@ -22,8 +22,8 @@ import java.util.*; import javax.swing.*; import javax.swing.tree.DefaultTreeCellRenderer; -import docking.theme.GColor; import docking.widgets.GComponent; +import generic.theme.GColor; import ghidra.program.model.listing.Group; import resources.ResourceManager; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/KeyBindingInputDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/KeyBindingInputDialog.java index d2b128d8ae..b768d64a49 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/KeyBindingInputDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/KeyBindingInputDialog.java @@ -22,9 +22,9 @@ import javax.swing.*; import docking.*; import docking.widgets.label.GLabel; +import generic.util.action.ReservedKeyBindings; import ghidra.framework.plugintool.Plugin; import ghidra.util.HelpLocation; -import ghidra.util.ReservedKeyBindings; class KeyBindingInputDialog extends DialogComponentProvider implements KeyEntryListener { private KeyEntryTextField kbField; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/PluginConstants.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/PluginConstants.java index aaa3afd179..93d88c6a8e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/PluginConstants.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/PluginConstants.java @@ -17,7 +17,7 @@ package ghidra.app.util; import java.awt.Color; -import docking.theme.GColor; +import generic.theme.GColor; /** * Miscellaneous defined constants diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/listingpanel/PropertyBasedBackgroundColorModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/listingpanel/PropertyBasedBackgroundColorModel.java index 96ab5492c0..f4f7e39269 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/listingpanel/PropertyBasedBackgroundColorModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/listingpanel/PropertyBasedBackgroundColorModel.java @@ -20,8 +20,8 @@ import java.math.BigInteger; import java.util.HashMap; import java.util.Map; -import docking.theme.GColor; import docking.widgets.fieldpanel.support.BackgroundColorModel; +import generic.theme.GColor; import ghidra.app.util.viewer.util.AddressIndexMap; import ghidra.framework.model.DomainObjectChangedEvent; import ghidra.framework.model.DomainObjectListener; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/options/OptionsGui.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/options/OptionsGui.java index 35d2ecc180..86cfa44e51 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/options/OptionsGui.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/options/OptionsGui.java @@ -27,7 +27,6 @@ import java.util.stream.IntStream; import javax.swing.*; import javax.swing.border.Border; -import docking.theme.GColor; import docking.widgets.checkbox.GCheckBox; import docking.widgets.combobox.GComboBox; import docking.widgets.fieldpanel.*; @@ -36,6 +35,7 @@ import docking.widgets.fieldpanel.listener.LayoutModelListener; import docking.widgets.fieldpanel.support.*; import docking.widgets.indexedscrollpane.IndexedScrollPane; import docking.widgets.label.GDLabel; +import generic.theme.GColor; import ghidra.GhidraOptions; import ghidra.util.SystemUtilities; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/base/help/GhidraHelpService.java b/Ghidra/Features/Base/src/main/java/ghidra/base/help/GhidraHelpService.java index 320d271455..cb1595c10f 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/base/help/GhidraHelpService.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/base/help/GhidraHelpService.java @@ -24,6 +24,8 @@ import javax.help.HelpSetException; import docking.help.*; import generic.jar.ResourceFile; +import generic.theme.Gui; +import generic.theme.ThemeListener; import ghidra.framework.Application; import ghidra.util.Msg; import help.HelpService; @@ -36,6 +38,7 @@ import resources.ResourceManager; public class GhidraHelpService extends HelpManager { private static final String MASTER_HELP_SET_HS = "Base_HelpSet.hs"; + private ThemeListener listener = t -> reload(); public static void install() { try { @@ -50,6 +53,7 @@ public class GhidraHelpService extends HelpManager { super(findMasterHelpSetUrl()); loadHelpSets(); registerHelp(); + Gui.addThemeListener(listener); } private static URL findMasterHelpSetUrl() { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/framework/GhidraApplicationConfiguration.java b/Ghidra/Features/Base/src/main/java/ghidra/framework/GhidraApplicationConfiguration.java index 82a4ec08fb..e72a7a2a00 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/framework/GhidraApplicationConfiguration.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/framework/GhidraApplicationConfiguration.java @@ -19,8 +19,9 @@ import docking.DockingErrorDisplay; import docking.DockingWindowManager; import docking.framework.ApplicationInformationDisplayFactory; import docking.framework.SplashScreen; -import docking.theme.Gui; import docking.widgets.PopupKeyStorePasswordProvider; +import generic.theme.Gui; +import ghidra.docking.util.LookAndFeelUtils; import ghidra.formats.gfilesystem.crypto.CryptoProviders; import ghidra.formats.gfilesystem.crypto.PopupGUIPasswordProvider; import ghidra.framework.main.GhidraApplicationInformationDisplayFactory; @@ -43,6 +44,7 @@ public class GhidraApplicationConfiguration extends HeadlessGhidraApplicationCon @Override protected void initializeApplication() { Gui.initialize(); + LookAndFeelUtils.platformSpecificFixups(); if (showSplashScreen) { showUserAgreement(); @@ -51,8 +53,8 @@ public class GhidraApplicationConfiguration extends HeadlessGhidraApplicationCon super.initializeApplication(); - ApplicationKeyManagerFactory.setKeyStorePasswordProvider( - new PopupKeyStorePasswordProvider()); + ApplicationKeyManagerFactory + .setKeyStorePasswordProvider(new PopupKeyStorePasswordProvider()); CryptoProviders.getInstance().registerCryptoProvider(new PopupGUIPasswordProvider()); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/ConsoleTextPane.java b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/ConsoleTextPane.java index 5077f6bbc7..5801b9bd6c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/ConsoleTextPane.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/ConsoleTextPane.java @@ -21,7 +21,7 @@ import java.util.LinkedList; import javax.swing.JTextPane; import javax.swing.text.*; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.framework.options.*; import ghidra.framework.plugintool.PluginTool; import ghidra.util.Msg; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/InfoPanel.java b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/InfoPanel.java index cba0ccd294..138fa3f6d5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/framework/main/InfoPanel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/framework/main/InfoPanel.java @@ -25,9 +25,9 @@ import javax.swing.event.HyperlinkEvent; import javax.swing.text.View; import docking.DockingUtils; -import docking.theme.GColor; import docking.widgets.*; import docking.widgets.label.*; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.framework.Application; import ghidra.framework.ApplicationProperties; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/table/GhidraTableCellRenderer.java b/Ghidra/Features/Base/src/main/java/ghidra/util/table/GhidraTableCellRenderer.java index 214fda2ac9..aa98413eda 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/table/GhidraTableCellRenderer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/table/GhidraTableCellRenderer.java @@ -21,8 +21,8 @@ import java.awt.Font; import javax.swing.JTable; import javax.swing.table.TableModel; -import docking.theme.GColor; import docking.widgets.table.GTableCellRenderer; +import generic.theme.GColor; import ghidra.program.model.address.Address; import ghidra.program.model.listing.Program; import ghidra.program.model.mem.Memory; diff --git a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponentProvider.java b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponentProvider.java index 7318787a32..49800e97af 100644 --- a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponentProvider.java +++ b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponentProvider.java @@ -25,7 +25,7 @@ import java.util.List; import javax.swing.JComponent; import docking.action.ToggleDockingAction; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.GhidraOptions; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.app.plugin.core.format.*; diff --git a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerPanel.java b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerPanel.java index 0b7e5dd76c..a07e014a22 100644 --- a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerPanel.java +++ b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerPanel.java @@ -23,7 +23,7 @@ import java.util.List; import javax.swing.*; import javax.swing.event.*; -import docking.theme.GColor; +import docking.help.HelpService; import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.field.EmptyTextField; import docking.widgets.fieldpanel.field.Field; @@ -32,6 +32,7 @@ import docking.widgets.fieldpanel.support.*; import docking.widgets.indexedscrollpane.*; import docking.widgets.label.GDLabel; import docking.widgets.label.GLabel; +import generic.theme.GColor; import ghidra.app.plugin.core.format.*; import ghidra.app.util.viewer.listingpanel.AddressSetDisplayListener; import ghidra.program.model.address.AddressSet; @@ -42,7 +43,6 @@ import ghidra.util.exception.InvalidInputException; import ghidra.util.layout.HorizontalLayout; import ghidra.util.layout.PairLayout; import help.Help; -import help.HelpService; /** * Top level component that contains has a scrolled pane for the panel of components that show the diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileOptions.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileOptions.java index 43effd8eed..7c84ff4834 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileOptions.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileOptions.java @@ -24,7 +24,7 @@ import java.awt.Font; import java.awt.event.MouseEvent; import java.io.IOException; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.app.util.HelpTopics; import ghidra.framework.options.Options; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/IndependentColorProvider.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/IndependentColorProvider.java index f4f8081df0..8e11947bdb 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/IndependentColorProvider.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/IndependentColorProvider.java @@ -24,7 +24,7 @@ import org.jdom.Element; import docking.ComponentPlaceholder; import docking.DockingWindowManager; import docking.options.editor.GhidraColorChooser; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.app.plugin.core.functiongraph.graph.vertex.FGVertex; import ghidra.app.plugin.core.functiongraph.mvc.FunctionGraphVertexAttributes; import ghidra.framework.options.SaveState; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/FGComponent.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/FGComponent.java index c9cd078050..690cb10545 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/FGComponent.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/FGComponent.java @@ -21,12 +21,12 @@ import java.util.Map.Entry; import org.jdom.Element; -import docking.theme.GColor; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.RenderContext; import edu.uci.ics.jung.visualization.picking.PickedState; import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.util.Caching; +import generic.theme.GColor; import ghidra.app.plugin.core.functiongraph.graph.jung.renderer.FGVertexRenderer; import ghidra.app.plugin.core.functiongraph.graph.jung.transformer.FGVertexPickableBackgroundPaintTransformer; import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayout; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/jung/transformer/FGVertexPickableBackgroundPaintTransformer.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/jung/transformer/FGVertexPickableBackgroundPaintTransformer.java index 77c639ae89..1c180d2c23 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/jung/transformer/FGVertexPickableBackgroundPaintTransformer.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/jung/transformer/FGVertexPickableBackgroundPaintTransformer.java @@ -21,8 +21,8 @@ import java.util.Objects; import com.google.common.base.Function; -import docking.theme.Gui; import edu.uci.ics.jung.visualization.picking.PickedInfo; +import generic.theme.Gui; import ghidra.app.plugin.core.functiongraph.graph.FGVertexType; import ghidra.app.plugin.core.functiongraph.graph.vertex.FGVertex; import ghidra.program.util.ProgramSelection; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/AbstractGraphComponentPanel.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/AbstractGraphComponentPanel.java index ebd8ee34a3..9175a632c4 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/AbstractGraphComponentPanel.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/AbstractGraphComponentPanel.java @@ -21,8 +21,8 @@ import java.awt.geom.Point2D; import javax.swing.*; -import docking.theme.GThemeDefaults.Colors; import edu.uci.ics.jung.visualization.VisualizationViewer; +import generic.theme.GThemeDefaults.Colors; import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.mvc.FGController; import ghidra.app.plugin.core.functiongraph.mvc.FGView; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/FGVertex.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/FGVertex.java index 8e54274962..75c8a733a7 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/FGVertex.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/FGVertex.java @@ -20,7 +20,7 @@ import java.awt.event.MouseEvent; import javax.swing.JComponent; -import docking.theme.GThemeDefaults.Colors; +import generic.theme.GThemeDefaults.Colors; import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.graph.FGVertexType; import ghidra.app.plugin.core.functiongraph.mvc.FGController; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphComponentPanel.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphComponentPanel.java index eda91cdeed..d0cf2785e4 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphComponentPanel.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphComponentPanel.java @@ -27,7 +27,7 @@ import docking.ActionContext; import docking.GenericHeader; import docking.action.DockingAction; import docking.action.ToolBarData; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.mvc.FGController; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/ListingGraphComponentPanel.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/ListingGraphComponentPanel.java index cfb8e5377f..90544978c0 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/ListingGraphComponentPanel.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/ListingGraphComponentPanel.java @@ -32,13 +32,13 @@ import docking.ActionContext; import docking.GenericHeader; import docking.action.DockingAction; import docking.action.ToolBarData; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors; import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.Layout; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.support.BackgroundColorModel; import docking.widgets.label.GDLabel; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors; import ghidra.app.plugin.core.codebrowser.hover.ListingHoverService; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.graph.FGEdge; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/SetVertexMostRecentColorAction.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/SetVertexMostRecentColorAction.java index 29137c179b..2cd9c75968 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/SetVertexMostRecentColorAction.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/SetVertexMostRecentColorAction.java @@ -25,7 +25,7 @@ import docking.ActionContext; import docking.action.*; import docking.menu.MultiActionDockingAction; import docking.menu.MultipleActionDockingToolbarButton; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.app.plugin.core.functiongraph.FGColorProvider; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.mvc.FGController; diff --git a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/mvc/FunctionGraphOptions.java b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/mvc/FunctionGraphOptions.java index 01e6fc57c3..7dea07f2fb 100644 --- a/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/mvc/FunctionGraphOptions.java +++ b/Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/mvc/FunctionGraphOptions.java @@ -19,8 +19,8 @@ import java.awt.Color; import java.util.*; import java.util.Map.Entry; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayoutOptions; import ghidra.framework.options.Options; diff --git a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphGroupVertices1Test.java b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphGroupVertices1Test.java index 9eed8a03f8..d42fcd6a24 100644 --- a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphGroupVertices1Test.java +++ b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphGroupVertices1Test.java @@ -26,8 +26,8 @@ import org.junit.*; import docking.ActionContext; import docking.action.DockingActionIf; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.graph.Graph; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.app.plugin.core.clear.ClearPlugin; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; import ghidra.app.plugin.core.functiongraph.graph.FGEdge; diff --git a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin1Test.java b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin1Test.java index 8337052dc8..516a0e4360 100644 --- a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin1Test.java +++ b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin1Test.java @@ -32,12 +32,12 @@ import docking.ActionContext; import docking.ComponentProvider; import docking.action.DockingAction; import docking.dnd.GClipboard; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.VisualizationModel; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.util.Caching; import generic.test.TestUtils; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.app.cmd.label.AddLabelCmd; import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.nav.LocationMemento; diff --git a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin2Test.java b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin2Test.java index 3bd74b9fac..ea194d9a5b 100644 --- a/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin2Test.java +++ b/Ghidra/Features/FunctionGraph/src/test.slow/java/ghidra/app/plugin/core/functiongraph/FunctionGraphPlugin2Test.java @@ -27,9 +27,9 @@ import javax.swing.JComponent; import org.junit.*; import docking.action.DockingActionIf; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.graph.Graph; import generic.test.TestUtils; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.app.cmd.label.AddLabelCmd; import ghidra.app.cmd.label.DeleteLabelCmd; import ghidra.app.cmd.refs.AddMemRefCmd; diff --git a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/ActiveFidConfigureDialog.java b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/ActiveFidConfigureDialog.java index 9be50dbccf..2f14e305a9 100644 --- a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/ActiveFidConfigureDialog.java +++ b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/ActiveFidConfigureDialog.java @@ -23,8 +23,8 @@ import java.util.List; import javax.swing.*; import docking.DialogComponentProvider; -import docking.theme.GThemeDefaults; import docking.widgets.checkbox.GCheckBox; +import generic.theme.GThemeDefaults; import ghidra.feature.fid.db.FidFile; import ghidra.util.HelpLocation; import ghidra.util.layout.VerticalLayout; diff --git a/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/FcgVertex.java b/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/FcgVertex.java index 797df3b9e3..76fe8770d0 100644 --- a/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/FcgVertex.java +++ b/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/FcgVertex.java @@ -26,11 +26,11 @@ import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.LineBorder; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; -import docking.theme.Gui; import docking.widgets.EmptyBorderButton; import docking.widgets.label.GDLabel; +import generic.theme.GColor; +import generic.theme.Gui; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.vertex.AbstractVisualVertex; import ghidra.graph.viewer.vertex.VertexShapeProvider; import ghidra.program.model.address.Address; diff --git a/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/view/FcgComponent.java b/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/view/FcgComponent.java index f251e18e4c..a1a516bffc 100644 --- a/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/view/FcgComponent.java +++ b/Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/view/FcgComponent.java @@ -15,12 +15,12 @@ */ package functioncalls.graph.view; -import docking.theme.GColor; import edu.uci.ics.jung.visualization.renderers.Renderer; import functioncalls.graph.*; import functioncalls.graph.renderer.FcgEdgePaintTransformer; import functioncalls.graph.renderer.FcgVertexPaintTransformer; import functioncalls.plugin.FunctionCallGraphPlugin; +import generic.theme.GColor; import ghidra.graph.viewer.*; import ghidra.graph.viewer.edge.VisualEdgeRenderer; import ghidra.graph.viewer.layout.VisualGraphLayout; diff --git a/Ghidra/Features/GraphServices/src/main/java/ghidra/graph/visualization/DefaultGraphDisplay.java b/Ghidra/Features/GraphServices/src/main/java/ghidra/graph/visualization/DefaultGraphDisplay.java index 733761ed2c..2af1108588 100644 --- a/Ghidra/Features/GraphServices/src/main/java/ghidra/graph/visualization/DefaultGraphDisplay.java +++ b/Ghidra/Features/GraphServices/src/main/java/ghidra/graph/visualization/DefaultGraphDisplay.java @@ -50,9 +50,9 @@ import docking.action.builder.*; import docking.menu.ActionState; import docking.menu.MultiStateDockingAction; import docking.options.editor.OptionsDialog; -import docking.theme.GColor; import docking.widgets.EventTrigger; import docking.widgets.OptionDialog; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.framework.options.Options; import ghidra.framework.options.ToolOptions; diff --git a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java index 2ef85deafb..1ac4dac656 100644 --- a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java +++ b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java @@ -26,13 +26,14 @@ import javax.swing.text.*; import javax.swing.tree.TreeSelectionModel; import docking.DockingUtils; -import docking.theme.GColor; +import docking.help.HelpService; import docking.widgets.EventTrigger; import docking.widgets.OptionDialog; import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.listener.FieldMouseListener; import docking.widgets.fieldpanel.support.FieldLocation; +import generic.theme.GColor; import ghidra.GhidraOptions; import ghidra.app.CorePluginPackage; import ghidra.app.events.*; @@ -62,7 +63,6 @@ import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.*; import help.Help; -import help.HelpService; import resources.ResourceManager; /** diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockingUtils.java b/Ghidra/Framework/Docking/src/main/java/docking/DockingUtils.java index 24966af593..38c802bfb8 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockingUtils.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockingUtils.java @@ -37,7 +37,7 @@ import docking.widgets.list.GList; import docking.widgets.list.GListCellRenderer; import docking.widgets.table.GTableCellRenderer; import docking.widgets.tree.support.GTreeRenderer; -import ghidra.docking.util.LookAndFeelUtils; +import generic.theme.Gui; import ghidra.util.HTMLUtilities; import resources.ResourceManager; @@ -125,7 +125,7 @@ public class DockingUtils { public static JSeparator createToolbarSeparator() { Dimension sepDim = new Dimension(2, ICON_SIZE + 2); JSeparator separator = new JSeparator(SwingConstants.VERTICAL); - if (LookAndFeelUtils.isUsingAquaUI(separator.getUI())) { + if (Gui.isUsingAquaUI(separator.getUI())) { separator.setUI(new BasicSeparatorUI()); } separator.setPreferredSize(sepDim); // ugly work around to force height of separator diff --git a/Ghidra/Framework/Docking/src/main/java/docking/GenericHeader.java b/Ghidra/Framework/Docking/src/main/java/docking/GenericHeader.java index ba53aec1d4..9ed580d821 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/GenericHeader.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/GenericHeader.java @@ -26,10 +26,10 @@ import org.jdesktop.animation.timing.TimingTargetAdapter; import org.jdesktop.animation.timing.interpolation.PropertySetter; import docking.action.DockingActionIf; -import docking.theme.GColor; import docking.util.AnimationUtils; import docking.widgets.VariableHeightPanel; import docking.widgets.label.GDLabel; +import generic.theme.GColor; // TODO: should this be put into generic? public class GenericHeader extends JPanel { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/action/ComponentThemeInspectorAction.java b/Ghidra/Framework/Docking/src/main/java/docking/action/ComponentThemeInspectorAction.java index 344cb8a2d9..a23b59e0b9 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/action/ComponentThemeInspectorAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/action/ComponentThemeInspectorAction.java @@ -29,8 +29,8 @@ import org.apache.commons.lang3.StringUtils; import docking.ActionContext; import docking.DockingWindowManager; +import generic.util.action.ReservedKeyBindings; import ghidra.util.Msg; -import ghidra.util.ReservedKeyBindings; public class ComponentThemeInspectorAction extends DockingAction { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/action/KeyBindingsManager.java b/Ghidra/Framework/Docking/src/main/java/docking/action/KeyBindingsManager.java index f2e9140e5c..b3585703b7 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/action/KeyBindingsManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/action/KeyBindingsManager.java @@ -24,7 +24,7 @@ import javax.swing.Action; import javax.swing.KeyStroke; import docking.*; -import ghidra.util.ReservedKeyBindings; +import generic.util.action.ReservedKeyBindings; import ghidra.util.exception.AssertException; /** diff --git a/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusCycleAction.java b/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusCycleAction.java index ea6b7b4695..4b24f27eef 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusCycleAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusCycleAction.java @@ -24,7 +24,7 @@ import org.apache.logging.log4j.Logger; import docking.ActionContext; import docking.DockingWindowManager; -import ghidra.util.ReservedKeyBindings; +import generic.util.action.ReservedKeyBindings; public class ShowFocusCycleAction extends DockingAction { static final Logger log = LogManager.getLogger(ShowFocusCycleAction.class); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusInfoAction.java b/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusInfoAction.java index a3a2c1d541..2c489bfc25 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusInfoAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/action/ShowFocusInfoAction.java @@ -25,7 +25,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import docking.*; -import ghidra.util.ReservedKeyBindings; +import generic.util.action.ReservedKeyBindings; public class ShowFocusInfoAction extends DockingAction { static final Logger log = LogManager.getLogger(ShowFocusInfoAction.class); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java index 030ca16eb6..e1c7673fe1 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java @@ -27,8 +27,8 @@ import docking.KeyEntryTextField; import docking.action.*; import docking.tool.ToolConstants; import docking.widgets.label.GIconLabel; +import generic.util.action.ReservedKeyBindings; import ghidra.util.HelpLocation; -import ghidra.util.ReservedKeyBindings; import resources.ResourceManager; /** diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java index 56eac03a77..171e2a20c3 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java @@ -32,6 +32,7 @@ import org.apache.commons.collections4.map.LazyMap; import docking.*; import docking.action.*; import docking.tool.util.DockingToolConstants; +import generic.util.action.ReservedKeyBindings; import ghidra.framework.options.*; import ghidra.util.*; import ghidra.util.exception.AssertException; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/framework/DockingApplicationConfiguration.java b/Ghidra/Framework/Docking/src/main/java/docking/framework/DockingApplicationConfiguration.java index 2d364215d2..a1b8ddb290 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/framework/DockingApplicationConfiguration.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/framework/DockingApplicationConfiguration.java @@ -16,8 +16,9 @@ package docking.framework; import docking.DockingErrorDisplay; -import docking.theme.Gui; import docking.widgets.PopupKeyStorePasswordProvider; +import generic.theme.Gui; +import ghidra.docking.util.LookAndFeelUtils; import ghidra.framework.ApplicationConfiguration; import ghidra.net.ApplicationKeyManagerFactory; import ghidra.util.ErrorDisplay; @@ -49,13 +50,14 @@ public class DockingApplicationConfiguration extends ApplicationConfiguration { super.initializeApplication(); Gui.initialize(); + LookAndFeelUtils.platformSpecificFixups(); if (showSplashScreen) { SplashScreen.showSplashScreen(); } - ApplicationKeyManagerFactory.setKeyStorePasswordProvider( - new PopupKeyStorePasswordProvider()); + ApplicationKeyManagerFactory + .setKeyStorePasswordProvider(new PopupKeyStorePasswordProvider()); } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/framework/SplashScreen.java b/Ghidra/Framework/Docking/src/main/java/docking/framework/SplashScreen.java index 18d3f1cd16..200af73188 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/framework/SplashScreen.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/framework/SplashScreen.java @@ -23,9 +23,9 @@ import javax.swing.*; import javax.swing.border.BevelBorder; import docking.*; -import docking.theme.GColor; import docking.widgets.label.GDLabel; import docking.widgets.label.GLabel; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.framework.Application; import ghidra.util.Msg; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolBarUtils.java b/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolBarUtils.java index f5601a1ae2..eb7df7e4a2 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolBarUtils.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolBarUtils.java @@ -24,7 +24,7 @@ import javax.swing.KeyStroke; import org.apache.commons.lang3.StringUtils; import docking.action.DockingActionIf; -import ghidra.docking.util.LookAndFeelUtils; +import generic.theme.Gui; import ghidra.util.StringUtilities; class DockingToolBarUtils { @@ -96,7 +96,7 @@ class DockingToolBarUtils { builder.append(InputEvent.getModifiersExText(modifiers)); // The Aqua LaF does not use the '+' symbol between modifiers - if (!LookAndFeelUtils.isUsingAquaUI(button.getUI())) { + if (!Gui.isUsingAquaUI(button.getUI())) { builder.append('+'); } } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/options/editor/IconPropertyEditor.java b/Ghidra/Framework/Docking/src/main/java/docking/options/editor/IconPropertyEditor.java index 7895aa552d..6d3b42342e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/options/editor/IconPropertyEditor.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/options/editor/IconPropertyEditor.java @@ -17,15 +17,24 @@ package docking.options.editor; import java.awt.*; import java.beans.PropertyEditorSupport; +import java.io.File; +import java.io.IOException; import java.util.*; import java.util.List; import javax.swing.*; +import org.apache.commons.io.FileUtils; + import docking.theme.gui.ProtectedIcon; import docking.widgets.*; +import docking.widgets.filechooser.GhidraFileChooser; +import docking.widgets.filechooser.GhidraFileChooserMode; import docking.widgets.label.GDLabel; import docking.widgets.list.GListCellRenderer; +import ghidra.framework.Application; +import ghidra.util.Msg; +import ghidra.util.filechooser.ExtensionFileFilter; import resources.ResourceManager; import resources.icons.ScaledImageIcon; import resources.icons.UrlImageIcon; @@ -86,8 +95,6 @@ public class IconPropertyEditor extends PropertyEditorSupport { updateDropDownDataModel(icon); updatePreviewLabel(icon); -// iconTextField.addActionListener(listener); - } private void updateDropDownDataModel(Icon icon) { @@ -114,27 +121,11 @@ public class IconPropertyEditor extends PropertyEditorSupport { return super.getMatchingData(searchText); } }; -// dropDown.setConsumeEnterKeyPress(false); -// dropDown.addActionListener(e -> iconChanged()); dropDown.addDropDownSelectionChoiceListener(choiceListener); -// dropDown.addCellEditorListener(new CellEditorListener() { -// -// @Override -// public void editingStopped(ChangeEvent e) { -// Msg.debug(this, "Stopped"); -// } -// -// @Override -// public void editingCanceled(ChangeEvent e) { -// Msg.debug(this, "Cancelled"); -// -// } -// }); panel.add(dropDown, BorderLayout.CENTER); -// JButton browseButton = ButtonPanelFactory.createButton(ButtonPanelFactory.BROWSE_TYPE); -// panel.add(browseButton, BorderLayout.EAST); -// browseButton.addActionListener(e -> browse()); -// iconTextField.addActionListener(listener); + JButton browseButton = ButtonPanelFactory.createButton(ButtonPanelFactory.BROWSE_TYPE); + panel.add(browseButton, BorderLayout.EAST); + browseButton.addActionListener(e -> browse()); return panel; } @@ -154,7 +145,59 @@ public class IconPropertyEditor extends PropertyEditorSupport { } private void browse() { - //TODO + GhidraFileChooser chooser = new GhidraFileChooser(iconChooserPanel); + chooser.setTitle("Import Icon"); + chooser.setApproveButtonToolTipText("Import Icon"); + chooser.setFileSelectionMode(GhidraFileChooserMode.FILES_ONLY); + chooser.setSelectedFileFilter( + ExtensionFileFilter.forExtensions("Icon Files", ".png", "gif")); + File file = chooser.getSelectedFile(); + if (file != null) { + importIconFile(file); + } + } + + private void importIconFile(File file) { + + if (!isValidIcon(file)) { + Msg.error(this, "File is not a valid icon: " + file.getAbsolutePath()); + return; + } + File dir = Application.getUserSettingsDirectory(); + File destinationDir = new File(dir, "themes/images"); + File destinationFile = new File(destinationDir, file.getName()); + if (destinationFile.exists()) { + int result = OptionDialog.showYesNoDialog(dropDown, "Overwrite?", + "An icon with that name already exists.\n Do you want to overwrite it?"); + if (result == OptionDialog.NO_OPTION) { + return; + } + } + try { + FileUtils.copyFile(file, destinationFile); + ImageIcon icon = ResourceManager.loadImage("themes/images/" + file.getName()); + setValue(icon); + } + catch (IOException e) { + Msg.showError(this, dropDown, "Error importing file", e); + } + } + + private boolean isValidIcon(File file) { + if (!file.exists()) { + return false; + } + try { + UrlImageIcon icon = new UrlImageIcon(file.getAbsolutePath(), file.toURI().toURL()); + icon.getIconWidth(); + return true; + } + catch (Exception e) { + Msg.showError(this, dropDown, "Invalid Icon File", + "The file is not a valid icon: " + file.getAbsolutePath()); + return false; + } + } private Component buildPreviewLabel() { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ColorValueEditor.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ColorValueEditor.java index 618b4eb0dd..c2fc6432f7 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ColorValueEditor.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ColorValueEditor.java @@ -20,6 +20,7 @@ import java.beans.PropertyChangeListener; import docking.options.editor.ColorPropertyEditor; import docking.theme.*; +import generic.theme.*; /** * Editor for Theme colors diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ExportThemeDialog.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ExportThemeDialog.java index 6efafe6aea..ee91a618a4 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ExportThemeDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ExportThemeDialog.java @@ -29,6 +29,7 @@ import docking.widgets.checkbox.GCheckBox; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooserMode; import docking.widgets.label.GLabel; +import generic.theme.*; import ghidra.util.MessageType; import ghidra.util.Msg; import ghidra.util.filechooser.GhidraFileFilter; @@ -51,13 +52,20 @@ public class ExportThemeDialog extends DialogComponentProvider { @Override protected void okCallback() { + if (exportTheme()) { + close(); + } + } + + private boolean exportTheme() { File file = new File(fileTextField.getText()); String themeName = nameField.getText(); if (themeName.isBlank()) { setStatusText("Missing Theme Name", MessageType.ERROR, true); - return; + return false; } boolean includeDefaults = includeDefaultsCheckbox.isSelected(); + GTheme activeTheme = Gui.getActiveTheme(); FileGTheme fileTheme = new FileGTheme(file, themeName, activeTheme.getLookAndFeelType(), activeTheme.useDarkDefaults()); @@ -68,12 +76,14 @@ public class ExportThemeDialog extends DialogComponentProvider { else { fileTheme.load(Gui.getNonDefaultValues()); } + try { fileTheme.save(); - close(); + return true; } catch (IOException e) { Msg.error("Error Exporting Theme", "I/O Error encountered trying to export theme!", e); + return false; } } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/FontValueEditor.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/FontValueEditor.java index 339e04d868..d413566d75 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/FontValueEditor.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/FontValueEditor.java @@ -23,6 +23,7 @@ import javax.swing.plaf.UIResource; import docking.options.editor.FontPropertyEditor; import docking.theme.*; +import generic.theme.*; /** * Editor for Theme fonts diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/IconValueEditor.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/IconValueEditor.java index c346e7e6da..4787baa9f1 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/IconValueEditor.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/IconValueEditor.java @@ -21,6 +21,7 @@ import javax.swing.Icon; import docking.options.editor.IconPropertyEditor; import docking.theme.*; +import generic.theme.*; /** * Editor for Theme fonts diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeColorTableModel.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeColorTableModel.java index ca42e5c41f..910857a601 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeColorTableModel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeColorTableModel.java @@ -25,6 +25,7 @@ import javax.swing.JLabel; import docking.theme.*; import docking.widgets.table.*; +import generic.theme.*; import ghidra.docking.settings.Settings; import ghidra.framework.plugintool.ServiceProvider; import ghidra.framework.plugintool.ServiceProviderStub; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeDialog.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeDialog.java index 389229b68c..1632db5b76 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeDialog.java @@ -39,6 +39,7 @@ import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooserMode; import docking.widgets.table.GFilterTable; import docking.widgets.table.GTable; +import generic.theme.*; import ghidra.framework.Application; import ghidra.util.*; import ghidra.util.filechooser.ExtensionFileFilter; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeFontTableModel.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeFontTableModel.java index 6055de80d6..6a0f733524 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeFontTableModel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeFontTableModel.java @@ -25,6 +25,7 @@ import javax.swing.JLabel; import docking.theme.*; import docking.widgets.table.*; +import generic.theme.*; import ghidra.docking.settings.Settings; import ghidra.framework.plugintool.ServiceProvider; import ghidra.framework.plugintool.ServiceProviderStub; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeIconTableModel.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeIconTableModel.java index a7175a4a27..22d0562245 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeIconTableModel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeIconTableModel.java @@ -25,6 +25,7 @@ import javax.swing.*; import docking.theme.*; import docking.widgets.table.*; +import generic.theme.*; import ghidra.docking.settings.Settings; import ghidra.framework.plugintool.ServiceProvider; import ghidra.framework.plugintool.ServiceProviderStub; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeValueEditor.java b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeValueEditor.java index 8560726fda..25dca22dd5 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeValueEditor.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/theme/gui/ThemeValueEditor.java @@ -22,7 +22,7 @@ import javax.swing.*; import docking.DialogComponentProvider; import docking.DockingWindowManager; -import docking.theme.ThemeValue; +import generic.theme.ThemeValue; /** * Base class for Theme properties (Colors, Fonts, and Icons) diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/AbstractGCellRenderer.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/AbstractGCellRenderer.java index a1d6288c97..987079dced 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/AbstractGCellRenderer.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/AbstractGCellRenderer.java @@ -21,8 +21,8 @@ import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.border.Border; -import docking.theme.GColor; import docking.widgets.label.GDHtmlLabel; +import generic.theme.GColor; /** * A common base class for list and table renderer objects, unifying the Ghidra look and feel. diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/DropDownTextField.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/DropDownTextField.java index ddd21c8622..71bf7e832c 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/DropDownTextField.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/DropDownTextField.java @@ -26,9 +26,9 @@ import javax.swing.event.*; import org.apache.commons.lang3.StringUtils; -import docking.theme.GColor; import docking.widgets.label.GDHtmlLabel; import docking.widgets.list.GList; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.util.StringUtilities; import ghidra.util.SystemUtilities; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/EmptyBorderButton.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/EmptyBorderButton.java index cb26445e1e..ab20bdf12e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/EmptyBorderButton.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/EmptyBorderButton.java @@ -24,7 +24,7 @@ import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import ghidra.docking.util.LookAndFeelUtils; +import generic.theme.Gui; import resources.ResourceManager; /** @@ -45,8 +45,8 @@ public class EmptyBorderButton extends JButton { /** * An empty border. */ - public static final Border NO_BUTTON_BORDER = new EmptyBorder( - RAISED_BUTTON_BORDER.getBorderInsets(new JButton())); + public static final Border NO_BUTTON_BORDER = + new EmptyBorder(RAISED_BUTTON_BORDER.getBorderInsets(new JButton())); /** * A lowered border beveled border. @@ -123,7 +123,7 @@ public class EmptyBorderButton extends JButton { // Mac OSX LNF doesn't give us rollover callbacks, so we have to add a mouse listener to // do the work - if (LookAndFeelUtils.isUsingAquaUI(getUI())) { + if (Gui.isUsingAquaUI(getUI())) { addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/autocomplete/TextFieldAutocompleter.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/autocomplete/TextFieldAutocompleter.java index c48aacf819..07132bf7d1 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/autocomplete/TextFieldAutocompleter.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/autocomplete/TextFieldAutocompleter.java @@ -30,8 +30,8 @@ import javax.swing.text.Caret; import docking.DockingUtils; import docking.DockingUtils.TreeTraversalResult; -import docking.theme.GColor; import docking.widgets.textfield.TextFieldLinker; +import generic.theme.GColor; import generic.util.WindowUtilities; import ghidra.util.task.SwingUpdateManager; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/FieldPanel.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/FieldPanel.java index 13ebbb8ce2..e877eccaa8 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/FieldPanel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/FieldPanel.java @@ -29,7 +29,6 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import docking.DockingUtils; -import docking.theme.GColor; import docking.util.GraphicsUtils; import docking.widgets.EventTrigger; import docking.widgets.fieldpanel.field.Field; @@ -39,6 +38,7 @@ import docking.widgets.fieldpanel.listener.*; import docking.widgets.fieldpanel.support.*; import docking.widgets.indexedscrollpane.IndexScrollListener; import docking.widgets.indexedscrollpane.IndexedScrollable; +import generic.theme.GColor; import ghidra.util.Msg; import ghidra.util.SystemUtilities; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/internal/PaintContext.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/internal/PaintContext.java index 68ffce4b18..b6a053530b 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/internal/PaintContext.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/internal/PaintContext.java @@ -17,7 +17,7 @@ package docking.widgets.fieldpanel.internal; import java.awt.Color; -import docking.theme.GColor; +import generic.theme.GColor; /** * Miscellaneous information needed by fields to paint. diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/GhidraFileChooser.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/GhidraFileChooser.java index b0dffb2e37..822419cbc9 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/GhidraFileChooser.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/GhidraFileChooser.java @@ -31,12 +31,12 @@ import javax.swing.event.ChangeEvent; import javax.swing.filechooser.FileSystemView; import docking.*; -import docking.theme.GColor; import docking.widgets.*; import docking.widgets.combobox.GComboBox; import docking.widgets.label.GDLabel; import docking.widgets.label.GLabel; import docking.widgets.list.GListCellRenderer; +import generic.theme.GColor; import ghidra.framework.OperatingSystem; import ghidra.framework.Platform; import ghidra.framework.preferences.Preferences; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/filter/FilterTextField.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/filter/FilterTextField.java index 5bab25d99e..22f9485a02 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/filter/FilterTextField.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/filter/FilterTextField.java @@ -23,8 +23,8 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import docking.DockingUtils; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.util.SystemUtilities; import ghidra.util.datastruct.WeakDataStructureFactory; import ghidra.util.datastruct.WeakSet; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTableHeaderRenderer.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTableHeaderRenderer.java index 92e1b368b9..1e8ecfa6a8 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTableHeaderRenderer.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTableHeaderRenderer.java @@ -23,7 +23,7 @@ import javax.swing.*; import javax.swing.border.Border; import javax.swing.table.*; -import docking.theme.GColor; +import generic.theme.GColor; import resources.*; import resources.icons.EmptyIcon; import resources.icons.TranslateIcon; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnBasedTableFilter.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnBasedTableFilter.java index 60090c553f..ed062d4222 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnBasedTableFilter.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnBasedTableFilter.java @@ -20,11 +20,11 @@ import java.util.stream.Collectors; import org.jdom.Element; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; import docking.widgets.table.*; import docking.widgets.table.constraint.ColumnConstraint; import docking.widgets.table.constraint.TableFilterContext; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.framework.options.SaveState; /** diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnConstraintSet.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnConstraintSet.java index 80efa4e9e2..83beeb1d71 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnConstraintSet.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/columnfilter/ColumnConstraintSet.java @@ -19,11 +19,11 @@ import java.util.*; import org.apache.commons.collections4.CollectionUtils; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; import docking.widgets.table.DiscoverableTableUtils; import docking.widgets.table.RowObjectTableModel; import docking.widgets.table.constraint.*; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.framework.options.SaveState; /** diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/textfield/HintTextField.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/textfield/HintTextField.java index 15a618eb23..1f4aa56f57 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/textfield/HintTextField.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/textfield/HintTextField.java @@ -22,7 +22,7 @@ import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import docking.theme.GColor; +import generic.theme.GColor; /** * Simple text field that shows a text hint when the field is empty. diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/support/GTreeRenderer.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/support/GTreeRenderer.java index cc79732777..113ce7db4d 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/support/GTreeRenderer.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/support/GTreeRenderer.java @@ -22,10 +22,10 @@ import javax.swing.JTree; import javax.swing.plaf.ColorUIResource; import javax.swing.tree.DefaultTreeCellRenderer; -import docking.theme.GColor; import docking.widgets.GComponent; import docking.widgets.tree.GTree; import docking.widgets.tree.GTreeNode; +import generic.theme.GColor; public class GTreeRenderer extends DefaultTreeCellRenderer implements GComponent { diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/docking/util/LookAndFeelUtils.java b/Ghidra/Framework/Docking/src/main/java/ghidra/docking/util/LookAndFeelUtils.java index 8ff01579f8..363d406b8a 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/docking/util/LookAndFeelUtils.java +++ b/Ghidra/Framework/Docking/src/main/java/ghidra/docking/util/LookAndFeelUtils.java @@ -15,15 +15,18 @@ */ package ghidra.docking.util; -import java.util.ArrayList; -import java.util.List; +import java.awt.Font; +import java.awt.Taskbar; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Set; -import javax.swing.*; -import javax.swing.plaf.ComponentUI; +import javax.swing.UIDefaults; +import javax.swing.UIManager; -import org.apache.commons.collections4.IteratorUtils; - -import docking.theme.LafType; +import docking.framework.ApplicationInformationDisplayFactory; +import ghidra.framework.preferences.Preferences; +import ghidra.util.SystemUtilities; /** * A utility class to manage LookAndFeel (LaF) settings. @@ -34,53 +37,48 @@ public class LookAndFeelUtils { // utils class, cannot create } -// /** -// * Loads settings from {@link Preferences}. -// */ -// public static void installGlobalOverrides() { -// -// // -// // Users can change this via the SystemUtilities.FONT_SIZE_OVERRIDE_PROPERTY_NAME -// // system property. -// // -// Integer fontOverride = SystemUtilities.getFontSizeOverrideValue(); -// if (fontOverride != null) { -// setGlobalFontSizeOverride(fontOverride); -// } -// } + /** + * Loads settings from {@link Preferences}. + */ + public static void installGlobalOverrides() { - public static List getLookAndFeelIdsForType(UIDefaults defaults, Class clazz) { - List colorKeys = new ArrayList<>(); - List keyList = IteratorUtils.toList(defaults.keys().asIterator()); - for (Object key : keyList) { - if (key instanceof String) { - Object value = defaults.get(key); - if (clazz.isInstance(value)) { - colorKeys.add((String) key); + // + // Users can change this via the SystemUtilities.FONT_SIZE_OVERRIDE_PROPERTY_NAME + // system property. + // + Integer fontOverride = SystemUtilities.getFontSizeOverrideValue(); + if (fontOverride != null) { + setGlobalFontSizeOverride(fontOverride); + } + } + + /** Allows you to globally set the font size (don't use this method!) */ + private static void setGlobalFontSizeOverride(int fontSize) { + UIDefaults defaults = UIManager.getDefaults(); + + Set> set = defaults.entrySet(); + Iterator> iterator = set.iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + Object key = entry.getKey(); + + if (key.toString().toLowerCase().indexOf("font") != -1) { + Font currentFont = defaults.getFont(key); + if (currentFont != null) { + Font newFont = currentFont.deriveFont((float) fontSize); + UIManager.put(key, newFont); } } } - return colorKeys; } - /** - * Returns true if the given UI object is using the Aqua Look and Feel. - * @param UI the UI to examine. - * @return true if the UI is using Aqua - */ - public static boolean isUsingAquaUI(ComponentUI UI) { - Class clazz = UI.getClass(); - String name = clazz.getSimpleName(); - return name.startsWith("Aqua"); + public static void platformSpecificFixups() { + // Set the dock icon for macOS + if (Taskbar.isTaskbarSupported()) { + Taskbar taskbar = Taskbar.getTaskbar(); + if (taskbar.isSupported(Taskbar.Feature.ICON_IMAGE)) { + taskbar.setIconImage(ApplicationInformationDisplayFactory.getLargestWindowIcon()); + } + } } - - /** - * Returns true if 'Nimbus' is the current Look and Feel - * @return true if 'Nimbus' is the current Look and Feel - */ - public static boolean isUsingNimbusUI() { - LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); - return LafType.NIMBUS.equals(lookAndFeel.getName()); - } - } diff --git a/Ghidra/Framework/Docking/src/main/java/resources/Icons.java b/Ghidra/Framework/Docking/src/main/java/resources/Icons.java index 05ba432046..1e9ef7ab76 100644 --- a/Ghidra/Framework/Docking/src/main/java/resources/Icons.java +++ b/Ghidra/Framework/Docking/src/main/java/resources/Icons.java @@ -23,7 +23,7 @@ import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon; -import docking.theme.GIcon; +import generic.theme.GIcon; import ghidra.util.Msg; import resources.icons.RotateIcon; import resources.icons.TranslateIcon; diff --git a/Ghidra/Framework/Docking/src/test/java/docking/theme/GuiTest.java b/Ghidra/Framework/Docking/src/test/java/docking/theme/GuiTest.java index 9dc3fcb93a..f2418128c0 100644 --- a/Ghidra/Framework/Docking/src/test/java/docking/theme/GuiTest.java +++ b/Ghidra/Framework/Docking/src/test/java/docking/theme/GuiTest.java @@ -22,6 +22,7 @@ import org.apache.commons.collections4.map.HashedMap; import org.junit.Before; import docking.test.AbstractDockingTest; +import generic.theme.*; public class GuiTest extends AbstractDockingTest { diff --git a/Ghidra/Framework/Generic/build.gradle b/Ghidra/Framework/Generic/build.gradle index 32166290ae..2a3b147c3b 100644 --- a/Ghidra/Framework/Generic/build.gradle +++ b/Ghidra/Framework/Generic/build.gradle @@ -38,6 +38,8 @@ dependencies { api 'org.bouncycastle:bcpkix-jdk15on:1.69' // requires bcutil and bcprov api 'org.bouncycastle:bcprov-jdk15on:1.69' api 'org.bouncycastle:bcutil-jdk15on:1.69' + api 'com.formdev:flatlaf:2.2' + compileOnly "junit:junit:4.12" } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/ColorValue.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ColorValue.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/ColorValue.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/ColorValue.java index b8471f1228..5af7139e33 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/ColorValue.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ColorValue.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Color; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/DefaultTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/DefaultTheme.java similarity index 96% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/DefaultTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/DefaultTheme.java index beb7bc03e6..8750fb1015 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/DefaultTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/DefaultTheme.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; public class DefaultTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/DiscoverableGTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/DiscoverableGTheme.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/DiscoverableGTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/DiscoverableGTheme.java index d681bbb5e0..a75c6b5dbd 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/DiscoverableGTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/DiscoverableGTheme.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import ghidra.util.classfinder.ExtensionPoint; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/FileGTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/FileGTheme.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/FileGTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/FileGTheme.java index 793c7d19b5..00b5fd9a4a 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/FileGTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/FileGTheme.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Color; import java.awt.Font; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/FontValue.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/FontValue.java similarity index 98% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/FontValue.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/FontValue.java index 56ecfa493f..400c66c328 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/FontValue.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/FontValue.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Font; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GColor.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GColor.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GColor.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GColor.java index bb4a254d6d..502e6bd579 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GColor.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GColor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.*; import java.awt.color.ColorSpace; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GColorUIResource.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GColorUIResource.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GColorUIResource.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GColorUIResource.java index b4343d2a73..0893b04b46 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GColorUIResource.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GColorUIResource.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import javax.swing.plaf.UIResource; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GIcon.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GIcon.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GIcon.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GIcon.java index 2ac96f6600..f6f92efc41 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GIcon.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GIcon.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Component; import java.awt.Graphics; import javax.swing.Icon; -import docking.theme.Refreshable; +import generic.theme.Refreshable; import ghidra.util.datastruct.WeakStore; public class GIcon implements Icon, Refreshable { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GIconUIResource.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GIconUIResource.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GIconUIResource.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GIconUIResource.java index 78cf0163f0..9e5170bb6d 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GIconUIResource.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GIconUIResource.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import javax.swing.plaf.UIResource; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GTheme.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GTheme.java index cf4fd5b2fd..59046860e5 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GTheme.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Color; import java.awt.Font; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeDefaults.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeDefaults.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeDefaults.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeDefaults.java index b03fd5b740..38710bb12b 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeDefaults.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeDefaults.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Color; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeValueMap.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeValueMap.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeValueMap.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeValueMap.java index e1db9c981b..ccdd38ede8 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/GThemeValueMap.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/GThemeValueMap.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.util.*; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/Gui.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/Gui.java similarity index 89% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/Gui.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/Gui.java index 65365f0748..47899a5496 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/Gui.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/Gui.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.*; import java.io.*; @@ -21,16 +21,17 @@ import java.util.*; import java.util.List; import javax.swing.*; +import javax.swing.plaf.ComponentUI; import com.formdev.flatlaf.*; -import docking.framework.ApplicationInformationDisplayFactory; -import docking.help.Help; -import docking.theme.builtin.JavaColorMapping; +import generic.theme.builtin.JavaColorMapping; import ghidra.framework.Application; import ghidra.framework.preferences.Preferences; import ghidra.util.Msg; import ghidra.util.classfinder.ClassSearcher; +import ghidra.util.datastruct.WeakDataStructureFactory; +import ghidra.util.datastruct.WeakSet; import resources.ResourceManager; import utilities.util.reflection.ReflectionUtilities; @@ -52,24 +53,21 @@ public class Gui { private static ThemePropertiesLoader themePropertiesLoader = new ThemePropertiesLoader(); private static Map gColorMap = new HashMap<>(); + private static boolean isInitialized; private static Map gIconMap = new HashMap<>(); - private static boolean isInitialzed; - - static void setPropertiesLoader(ThemePropertiesLoader loader) { - themePropertiesLoader = loader; - } + private static WeakSet themeListeners = + WeakDataStructureFactory.createCopyOnWriteWeakSet(); private Gui() { // static utils class, can't construct } public static void initialize() { - isInitialzed = true; + isInitialized = true; installFlatLookAndFeels(); loadThemeDefaults(); setTheme(getThemeFromPreferences()); // LookAndFeelUtils.installGlobalOverrides(); - platformSpecificFixups(); } private static void installFlatLookAndFeels() { @@ -102,12 +100,9 @@ public class Gui { lookAndFeel.install(); saveThemeToPreferences(theme); fixupJavaDefaults(); - // The help may produce errors when switching the theme, such as if there is an - // active search in the help. We have added this call to allow the help system - // to cleanup some internal state. - Help.getHelpService().reload(); buildCurrentValues(); updateUIs(); + notifyThemeListeners(); } catch (Exception e) { Msg.error(Gui.class, "Error setting LookAndFeel: " + lookAndFeel.getName(), e); @@ -115,6 +110,12 @@ public class Gui { } } + private static void notifyThemeListeners() { + for (ThemeListener listener : themeListeners) { + listener.themeChanged(activeTheme); + } + } + public static void addTheme(GTheme newTheme) { allThemes.remove(newTheme); allThemes.add(newTheme); @@ -202,17 +203,6 @@ public class Gui { return activeTheme.getLookAndFeelType(); } - private static void platformSpecificFixups() { - - // Set the dock icon for macOS - if (Taskbar.isTaskbarSupported()) { - Taskbar taskbar = Taskbar.getTaskbar(); - if (taskbar.isSupported(Taskbar.Feature.ICON_IMAGE)) { - taskbar.setIconImage(ApplicationInformationDisplayFactory.getLargestWindowIcon()); - } - } - } - public static Color getRawColor(String id) { return getRawColor(id, true); } @@ -221,7 +211,7 @@ public class Gui { ColorValue color = currentValues.getColor(id); if (color == null) { - if (validate && isInitialzed) { + if (validate && isInitialized) { // Throwable t = getFilteredTrace(); Msg.error(Gui.class, "No color value registered for: " + id); } @@ -233,7 +223,7 @@ public class Gui { public static Icon getRawIcon(String id, boolean validate) { IconValue icon = currentValues.getIcon(id); if (icon == null) { - if (validate && isInitialzed) { + if (validate && isInitialized) { Throwable t = getFilteredTrace(); Msg.error(Gui.class, "No icon value registered for: " + id, t); } @@ -456,4 +446,34 @@ public class Gui { return currentDefaults; } + /** + * Returns true if the given UI object is using the Aqua Look and Feel. + * @param UI the UI to examine. + * @return true if the UI is using Aqua + */ + public static boolean isUsingAquaUI(ComponentUI UI) { + return activeTheme.getLookAndFeelType() == LafType.MAC; + } + + /** + * Returns true if 'Nimbus' is the current Look and Feel + * @return true if 'Nimbus' is the current Look and Feel + */ + public static boolean isUsingNimbusUI() { + return activeTheme.getLookAndFeelType() == LafType.NIMBUS; + } + + public static void addThemeListener(ThemeListener listener) { + themeListeners.add(listener); + } + + public static void removeThemeListener(ThemeListener listener) { + themeListeners.add(listener); + } + + // for testing + public static void setPropertiesLoader(ThemePropertiesLoader loader) { + themePropertiesLoader = loader; + } + } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/IconValue.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/IconValue.java similarity index 98% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/IconValue.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/IconValue.java index 6e6b479311..dd49f18efd 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/IconValue.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/IconValue.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import javax.swing.Icon; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/LafType.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/LafType.java similarity index 98% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/LafType.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/LafType.java index eb86f95a0f..4384c8d9c7 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/LafType.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/LafType.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; -import docking.theme.laf.*; +import generic.theme.laf.*; import ghidra.framework.OperatingSystem; import ghidra.framework.Platform; import ghidra.util.exception.AssertException; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/Refreshable.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/Refreshable.java similarity index 96% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/Refreshable.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/Refreshable.java index ffc8f5c79e..ecc2a4ca56 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/Refreshable.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/Refreshable.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; public interface Refreshable { public void refresh(); diff --git a/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeListener.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeListener.java new file mode 100644 index 0000000000..55d58820fc --- /dev/null +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeListener.java @@ -0,0 +1,20 @@ +/* ### + * IP: GHIDRA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package generic.theme; + +public interface ThemeListener { + public void themeChanged(GTheme newTheme); +} diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertiesLoader.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertiesLoader.java similarity index 96% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertiesLoader.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertiesLoader.java index dcf02ed217..4552a2e276 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertiesLoader.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertiesLoader.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.io.IOException; import java.util.List; @@ -26,7 +26,7 @@ public class ThemePropertiesLoader { GThemeValueMap defaults = new GThemeValueMap(); GThemeValueMap darkDefaults = new GThemeValueMap(); - ThemePropertiesLoader() { + public ThemePropertiesLoader() { } public void load() { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertyFileReader.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertyFileReader.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertyFileReader.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertyFileReader.java index 3f04036759..7893ca2e25 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemePropertyFileReader.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemePropertyFileReader.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.awt.Color; import java.awt.Font; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeReader.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeReader.java similarity index 98% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeReader.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeReader.java index 610b897731..1eaa2c3813 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeReader.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeReader.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.io.File; import java.io.IOException; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeValue.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeValue.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeValue.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeValue.java index 5772e9bb97..bdaf41d28e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/ThemeValue.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/ThemeValue.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import java.util.*; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/CDEMotifTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/CDEMotifTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/CDEMotifTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/CDEMotifTheme.java index 1462a49634..9b20383c0a 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/CDEMotifTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/CDEMotifTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class CDEMotifTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarculaTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarculaTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarculaTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarculaTheme.java index 36819ad0c4..d3889efa9d 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarculaTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarculaTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class FlatDarculaTheme extends DiscoverableGTheme { public FlatDarculaTheme() { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarkTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarkTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarkTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarkTheme.java index 1baf38c610..989beceff1 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatDarkTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatDarkTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class FlatDarkTheme extends DiscoverableGTheme { public FlatDarkTheme() { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatLightTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatLightTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatLightTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatLightTheme.java index 8f1eab37a9..1a6a249812 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/FlatLightTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/FlatLightTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class FlatLightTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/GTKTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/GTKTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/GTKTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/GTKTheme.java index f94d4b8e1a..7644cbd668 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/GTKTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/GTKTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class GTKTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/JavaColorMapping.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/JavaColorMapping.java similarity index 99% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/JavaColorMapping.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/JavaColorMapping.java index 88cee0607b..936dc4ef83 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/JavaColorMapping.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/JavaColorMapping.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; import java.awt.Color; import java.util.HashMap; import java.util.Map; -import docking.theme.ColorValue; -import docking.theme.GThemeValueMap; +import generic.theme.ColorValue; +import generic.theme.GThemeValueMap; /** * Maps Java UIDefaults color ids to parent color ids diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MacTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MacTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MacTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MacTheme.java index 9746f881e2..98167df786 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MacTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MacTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class MacTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MetalTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MetalTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MetalTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MetalTheme.java index 4d252c3643..fbb2fa0d9a 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/MetalTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/MetalTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class MetalTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/NimbusTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/NimbusTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/NimbusTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/NimbusTheme.java index e126e60c68..117fbb1b7c 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/NimbusTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/NimbusTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class NimbusTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsClassicTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsClassicTheme.java similarity index 88% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsClassicTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsClassicTheme.java index f4b915978b..8286d13d42 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsClassicTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsClassicTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class WindowsClassicTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsTheme.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsTheme.java similarity index 87% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsTheme.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsTheme.java index 8d2d359687..1ee1dc4992 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/builtin/WindowsTheme.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/builtin/WindowsTheme.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.builtin; +package generic.theme.builtin; -import docking.theme.DiscoverableGTheme; -import docking.theme.LafType; +import generic.theme.DiscoverableGTheme; +import generic.theme.LafType; public class WindowsTheme extends DiscoverableGTheme { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/FlatLookAndFeelInstaller.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/FlatLookAndFeelInstaller.java similarity index 95% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/FlatLookAndFeelInstaller.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/FlatLookAndFeelInstaller.java index 049b94c6e2..acaac4b670 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/FlatLookAndFeelInstaller.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/FlatLookAndFeelInstaller.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; import javax.swing.UIManager; -import docking.theme.LafType; +import generic.theme.LafType; public class FlatLookAndFeelInstaller extends LookAndFeelInstaller { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/GTKLookAndFeelInstaller.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/GTKLookAndFeelInstaller.java similarity index 95% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/GTKLookAndFeelInstaller.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/GTKLookAndFeelInstaller.java index 6d663d6a05..fecaa8a017 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/GTKLookAndFeelInstaller.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/GTKLookAndFeelInstaller.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; import javax.swing.*; -import docking.theme.LafType; +import generic.theme.LafType; public class GTKLookAndFeelInstaller extends LookAndFeelInstaller { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/LookAndFeelInstaller.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/LookAndFeelInstaller.java similarity index 92% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/LookAndFeelInstaller.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/LookAndFeelInstaller.java index 491be94e7c..b601cd4097 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/LookAndFeelInstaller.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/LookAndFeelInstaller.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; import java.awt.Color; import java.awt.Font; @@ -23,9 +23,12 @@ import java.util.Map.Entry; import javax.swing.*; import javax.swing.UIManager.LookAndFeelInfo; -import docking.theme.*; -import ghidra.docking.util.LookAndFeelUtils; -import ghidra.util.*; +import org.apache.commons.collections4.IteratorUtils; + +import generic.theme.*; +import generic.util.action.*; +import ghidra.util.Msg; +import ghidra.util.SystemUtilities; /** * Installs a specific {@link LookAndFeel} into the {@link UIManager}. The idea is that there @@ -121,18 +124,18 @@ public class LookAndFeelInstaller { protected static GThemeValueMap extractJavaDefaults(UIDefaults defaults) { GThemeValueMap values = new GThemeValueMap(); // for now, just doing color properties. - List ids = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Color.class); + List ids = getLookAndFeelIdsForType(defaults, Color.class); for (String id : ids) { // only use standard java colors here to avoid weird issues (such as GColor not // resolving or ColorUIResource not being honored. Later we will go back // and fix up the java defaults to use standard java color indirection values.addColor(new ColorValue(id, getNormalizedColor(UIManager.getColor(id)))); } - ids = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Font.class); + ids = getLookAndFeelIdsForType(defaults, Font.class); for (String id : ids) { values.addFont(new FontValue(id, UIManager.getFont(id))); } - ids = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Icon.class); + ids = getLookAndFeelIdsForType(defaults, Icon.class); for (String id : ids) { Icon icon = UIManager.getIcon(id); values.addIcon(new IconValue(id, icon)); @@ -150,8 +153,7 @@ public class LookAndFeelInstaller { } } - Msg.debug(LookAndFeelUtils.class, - "Unable to find requested Look and Feel: " + lookAndFeelName); + Msg.debug(this, "Unable to find requested Look and Feel: " + lookAndFeelName); return UIManager.getSystemLookAndFeelClassName(); } @@ -296,4 +298,18 @@ public class LookAndFeelInstaller { defaults.put(id, null); } } + + public static List getLookAndFeelIdsForType(UIDefaults defaults, Class clazz) { + List colorKeys = new ArrayList<>(); + List keyList = IteratorUtils.toList(defaults.keys().asIterator()); + for (Object key : keyList) { + if (key instanceof String) { + Object value = defaults.get(key); + if (clazz.isInstance(value)) { + colorKeys.add((String) key); + } + } + } + return colorKeys; + } } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/MotifLookAndFeelInstaller.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/MotifLookAndFeelInstaller.java similarity index 95% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/MotifLookAndFeelInstaller.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/MotifLookAndFeelInstaller.java index ad63db6781..ed5dd610ca 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/MotifLookAndFeelInstaller.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/MotifLookAndFeelInstaller.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; -import docking.theme.LafType; +import generic.theme.LafType; public class MotifLookAndFeelInstaller extends LookAndFeelInstaller { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/NimbusLookAndFeelInstaller.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/NimbusLookAndFeelInstaller.java similarity index 90% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/NimbusLookAndFeelInstaller.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/NimbusLookAndFeelInstaller.java index a582e2c6d0..72436a9ae0 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/NimbusLookAndFeelInstaller.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/NimbusLookAndFeelInstaller.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; import java.awt.*; import java.util.List; @@ -21,8 +21,7 @@ import java.util.List; import javax.swing.*; import javax.swing.plaf.nimbus.NimbusLookAndFeel; -import docking.theme.*; -import ghidra.docking.util.LookAndFeelUtils; +import generic.theme.*; import ghidra.util.Msg; public class NimbusLookAndFeelInstaller extends LookAndFeelInstaller { @@ -65,19 +64,21 @@ public class NimbusLookAndFeelInstaller extends LookAndFeelInstaller { UIDefaults defaults = super.getDefaults(); List colorIds = - LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Color.class); + LookAndFeelInstaller.getLookAndFeelIdsForType(defaults, Color.class); for (String id : colorIds) { Color color = defaults.getColor(id); ColorValue value = new ColorValue(id, color); javaDefaults.addColor(value); } - List fontIds = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Font.class); + List fontIds = + LookAndFeelInstaller.getLookAndFeelIdsForType(defaults, Font.class); for (String id : fontIds) { Font font = defaults.getFont(id); FontValue value = new FontValue(id, font); javaDefaults.addFont(value); } - List iconIds = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Icon.class); + List iconIds = + LookAndFeelInstaller.getLookAndFeelIdsForType(defaults, Icon.class); Msg.debug(LookAndFeelInstaller.class, "Icons found: " + iconIds.size()); for (String id : iconIds) { Icon icon = defaults.getIcon(id); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/WrappingLookAndFeel.java b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/WrappingLookAndFeel.java similarity index 93% rename from Ghidra/Framework/Docking/src/main/java/docking/theme/laf/WrappingLookAndFeel.java rename to Ghidra/Framework/Generic/src/main/java/generic/theme/laf/WrappingLookAndFeel.java index a405b0bb17..0f969d925e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/theme/laf/WrappingLookAndFeel.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/theme/laf/WrappingLookAndFeel.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme.laf; +package generic.theme.laf; import java.awt.Color; import java.awt.Component; @@ -21,8 +21,7 @@ import java.util.List; import javax.swing.*; -import docking.theme.*; -import ghidra.docking.util.LookAndFeelUtils; +import generic.theme.*; public class WrappingLookAndFeel extends LookAndFeel { private LookAndFeel delegate; @@ -36,7 +35,8 @@ public class WrappingLookAndFeel extends LookAndFeel { GThemeValueMap javaDefaults = new GThemeValueMap(); UIDefaults defaults = delegate.getDefaults(); - List colorIds = LookAndFeelUtils.getLookAndFeelIdsForType(defaults, Color.class); + List colorIds = + LookAndFeelInstaller.getLookAndFeelIdsForType(defaults, Color.class); for (String id : colorIds) { Color color = defaults.getColor(id); ColorValue value = new ColorValue(id, color); diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/BeginningOfLineAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/BeginningOfLineAction.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/BeginningOfLineAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/BeginningOfLineAction.java index 62e488c352..a0645de482 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/BeginningOfLineAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/BeginningOfLineAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; import java.awt.event.ActionEvent; diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToEndOfWordAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToEndOfWordAction.java similarity index 96% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToEndOfWordAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToEndOfWordAction.java index 116649b2b8..79537d5ca2 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToEndOfWordAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToEndOfWordAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,24 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; +import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.*; import javax.swing.text.*; -import docking.DockingUtils; - /** * An action to delete from the cursor position to the end of the current word. */ public class DeleteToEndOfWordAction extends TextAction { public static final KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, - DockingUtils.CONTROL_KEY_MODIFIER_MASK); + Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()); private static final String ACTION_NAME = "delete-to-end-of-word-word"; public DeleteToEndOfWordAction() { diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToStartOfWordAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToStartOfWordAction.java similarity index 96% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToStartOfWordAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToStartOfWordAction.java index 3bf976ba2f..9886bfe7ae 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/DeleteToStartOfWordAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/DeleteToStartOfWordAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,24 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; +import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.*; import javax.swing.text.*; -import docking.DockingUtils; - /** * An action to delete from the cursor position to the beginning of the current word, backwards. */ public class DeleteToStartOfWordAction extends TextAction { public static final KeyStroke KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, - DockingUtils.CONTROL_KEY_MODIFIER_MASK); + Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()); private static final String ACTION_NAME = "delete-to-start-of-word"; public DeleteToStartOfWordAction() { diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/EndOfLineAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/EndOfLineAction.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/EndOfLineAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/EndOfLineAction.java index 4836f0333a..2a204ca9e2 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/EndOfLineAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/EndOfLineAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; import java.awt.event.ActionEvent; diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/ReservedKeyBindings.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/ReservedKeyBindings.java similarity index 69% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/ReservedKeyBindings.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/ReservedKeyBindings.java index 64dee72fa9..0cfbe6c692 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/ReservedKeyBindings.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/ReservedKeyBindings.java @@ -13,17 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; +import java.awt.Toolkit; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.KeyStroke; -import docking.DockingUtils; - public class ReservedKeyBindings { + private static final int CONTROL_KEY_MODIFIER_MASK = + Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx(); + private ReservedKeyBindings() { // utils class } @@ -31,26 +33,23 @@ public class ReservedKeyBindings { public static final KeyStroke HELP_KEY1 = KeyStroke.getKeyStroke(KeyEvent.VK_HELP, 0); public static final KeyStroke HELP_KEY2 = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0); public static final KeyStroke HELP_INFO_KEY = - KeyStroke.getKeyStroke(KeyEvent.VK_F1, DockingUtils.CONTROL_KEY_MODIFIER_MASK); + KeyStroke.getKeyStroke(KeyEvent.VK_F1, CONTROL_KEY_MODIFIER_MASK); public static final KeyStroke CONTEXT_MENU_KEY1 = KeyStroke.getKeyStroke(KeyEvent.VK_F10, InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke CONTEXT_MENU_KEY2 = KeyStroke.getKeyStroke(KeyEvent.VK_CONTEXT_MENU, 0); - public static final KeyStroke FOCUS_INFO_KEY = - KeyStroke.getKeyStroke(KeyEvent.VK_F2, DockingUtils.CONTROL_KEY_MODIFIER_MASK | - InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); - public static final KeyStroke FOCUS_CYCLE_INFO_KEY = - KeyStroke.getKeyStroke(KeyEvent.VK_F3, DockingUtils.CONTROL_KEY_MODIFIER_MASK | - InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); + public static final KeyStroke FOCUS_INFO_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F2, + CONTROL_KEY_MODIFIER_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); + public static final KeyStroke FOCUS_CYCLE_INFO_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F3, + CONTROL_KEY_MODIFIER_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke UPDATE_KEY_BINDINGS_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0); - public static final KeyStroke COMPONENT_THEME_INFO_KEY = KeyStroke.getKeyStroke( - KeyEvent.VK_F9, DockingUtils.CONTROL_KEY_MODIFIER_MASK | - InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); + public static final KeyStroke COMPONENT_THEME_INFO_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F9, + CONTROL_KEY_MODIFIER_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK); public static boolean isReservedKeystroke(KeyStroke keyStroke) { int code = keyStroke.getKeyCode(); @@ -59,8 +58,8 @@ public class ReservedKeyBindings { HELP_KEY1.equals(keyStroke) || HELP_KEY2.equals(keyStroke) || HELP_INFO_KEY.equals(keyStroke) || UPDATE_KEY_BINDINGS_KEY.equals(keyStroke) || FOCUS_INFO_KEY.equals(keyStroke) || FOCUS_CYCLE_INFO_KEY.equals(keyStroke) || - COMPONENT_THEME_INFO_KEY.equals(keyStroke) || - CONTEXT_MENU_KEY1.equals(keyStroke) || CONTEXT_MENU_KEY2.equals(keyStroke)) { + COMPONENT_THEME_INFO_KEY.equals(keyStroke) || CONTEXT_MENU_KEY1.equals(keyStroke) || + CONTEXT_MENU_KEY2.equals(keyStroke)) { return true; } diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectBeginningOfLineAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectBeginningOfLineAction.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectBeginningOfLineAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectBeginningOfLineAction.java index 66aa713eaa..e96e2a2920 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectBeginningOfLineAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectBeginningOfLineAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; import java.awt.event.*; diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectEndOfLineAction.java b/Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectEndOfLineAction.java similarity index 97% rename from Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectEndOfLineAction.java rename to Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectEndOfLineAction.java index cdef00517f..1644370325 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/SelectEndOfLineAction.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/util/action/SelectEndOfLineAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ghidra.util; +package generic.util.action; import java.awt.Component; import java.awt.event.*; diff --git a/Ghidra/Framework/Generic/src/main/java/resources/ResourceManager.java b/Ghidra/Framework/Generic/src/main/java/resources/ResourceManager.java index e8e3172034..6b92305ea8 100644 --- a/Ghidra/Framework/Generic/src/main/java/resources/ResourceManager.java +++ b/Ghidra/Framework/Generic/src/main/java/resources/ResourceManager.java @@ -31,6 +31,7 @@ import javax.swing.*; import org.apache.commons.lang3.StringUtils; import generic.Images; +import ghidra.framework.Application; import ghidra.util.Msg; import ghidra.util.SystemUtilities; import resources.icons.*; @@ -551,6 +552,19 @@ public class ResourceManager { } } + // try to see if is an icon in the users application directory + File dir = Application.getUserSettingsDirectory(); + File iconFile = new File(dir, filename); + if (iconFile.exists()) { + try { + return new UrlImageIcon(filename, iconFile.toURI().toURL()); + } + catch (MalformedURLException e) { + // handled below + } + + } + return null; } diff --git a/Ghidra/Framework/Docking/src/test/java/docking/theme/GThemeTest.java b/Ghidra/Framework/Generic/src/test/java/generic/theme/GThemeTest.java similarity index 99% rename from Ghidra/Framework/Docking/src/test/java/docking/theme/GThemeTest.java rename to Ghidra/Framework/Generic/src/test/java/generic/theme/GThemeTest.java index 18225744c2..3896f9ba2e 100644 --- a/Ghidra/Framework/Docking/src/test/java/docking/theme/GThemeTest.java +++ b/Ghidra/Framework/Generic/src/test/java/generic/theme/GThemeTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import static org.junit.Assert.*; diff --git a/Ghidra/Framework/Docking/src/test/java/docking/theme/ThemePropertyFileReaderTest.java b/Ghidra/Framework/Generic/src/test/java/generic/theme/ThemePropertyFileReaderTest.java similarity index 99% rename from Ghidra/Framework/Docking/src/test/java/docking/theme/ThemePropertyFileReaderTest.java rename to Ghidra/Framework/Generic/src/test/java/generic/theme/ThemePropertyFileReaderTest.java index e35bc8b7a2..5d6b1ab3d6 100644 --- a/Ghidra/Framework/Docking/src/test/java/docking/theme/ThemePropertyFileReaderTest.java +++ b/Ghidra/Framework/Generic/src/test/java/generic/theme/ThemePropertyFileReaderTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package docking.theme; +package generic.theme; import static ghidra.util.WebColors.*; import static org.junit.Assert.*; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphComponent.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphComponent.java index 727532b56d..199541898d 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphComponent.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphComponent.java @@ -28,9 +28,6 @@ import docking.DockingUtils; import docking.DockingWindowManager; import docking.actions.KeyBindingUtils; import docking.help.HelpService; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors; -import docking.theme.GThemeDefaults.Colors.Palette; import docking.widgets.EmptyBorderButton; import docking.widgets.PopupWindow; import docking.widgets.label.GIconLabel; @@ -47,6 +44,9 @@ import edu.uci.ics.jung.visualization.renderers.BasicEdgeRenderer; import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.renderers.Renderer.Vertex; import edu.uci.ics.jung.visualization.util.Caching; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.VisualGraph; import ghidra.graph.event.VisualGraphChangeListener; import ghidra.graph.viewer.edge.*; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualEdgeRenderer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualEdgeRenderer.java index 586278d937..a339a20779 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualEdgeRenderer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualEdgeRenderer.java @@ -25,7 +25,6 @@ import javax.swing.JComponent; import com.google.common.base.Function; import com.google.common.base.Predicate; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.util.Context; @@ -36,6 +35,7 @@ import edu.uci.ics.jung.visualization.transform.LensTransformer; import edu.uci.ics.jung.visualization.transform.MutableTransformer; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; import edu.uci.ics.jung.visualization.util.VertexShapeFactory; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.VisualGraph; import ghidra.graph.viewer.VisualEdge; import ghidra.graph.viewer.VisualVertex; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/routing/ArticulatedEdgeRouter.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/routing/ArticulatedEdgeRouter.java index e1d4255056..92edb50f97 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/routing/ArticulatedEdgeRouter.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/routing/ArticulatedEdgeRouter.java @@ -27,12 +27,12 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.collections4.*; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.util.Pair; import edu.uci.ics.jung.visualization.VisualizationServer; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.VisualEdge; import ghidra.graph.viewer.VisualVertex; import ghidra.graph.viewer.renderer.DebugShape; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/JungPickingGraphMousePlugin.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/JungPickingGraphMousePlugin.java index 2a72b2d44c..947b28ac7d 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/JungPickingGraphMousePlugin.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/JungPickingGraphMousePlugin.java @@ -22,7 +22,6 @@ import java.util.Collection; import javax.swing.JComponent; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.GraphElementAccessor; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.Layer; @@ -30,6 +29,7 @@ import edu.uci.ics.jung.visualization.VisualizationServer.Paintable; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.control.AbstractGraphMousePlugin; import edu.uci.ics.jung.visualization.picking.PickedState; +import generic.theme.GThemeDefaults.Colors.Palette; /** * PickingGraphMousePlugin supports the picking of graph elements diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/VisualGraphMouseTrackingGraphMousePlugin.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/VisualGraphMouseTrackingGraphMousePlugin.java index eb69d9b262..be37a93487 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/VisualGraphMouseTrackingGraphMousePlugin.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/event/mouse/VisualGraphMouseTrackingGraphMousePlugin.java @@ -22,10 +22,10 @@ import java.awt.geom.AffineTransform; import java.util.Objects; import docking.DockingUtils; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.visualization.*; import edu.uci.ics.jung.visualization.control.AbstractGraphMousePlugin; import edu.uci.ics.jung.visualization.transform.MutableTransformer; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.*; import ghidra.graph.viewer.renderer.*; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/options/VisualGraphOptions.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/options/VisualGraphOptions.java index e5e04d3b07..8569b09bf8 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/options/VisualGraphOptions.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/options/VisualGraphOptions.java @@ -18,7 +18,7 @@ package ghidra.graph.viewer.options; import java.awt.Color; import docking.DockingUtils; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.framework.options.Options; import ghidra.util.HelpLocation; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/DebugShape.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/DebugShape.java index 3ab472b0b4..157c9d953c 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/DebugShape.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/DebugShape.java @@ -19,10 +19,10 @@ import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.concurrent.atomic.AtomicInteger; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.visualization.VisualizationServer; import edu.uci.ics.jung.visualization.VisualizationServer.Paintable; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.util.Swing; public class DebugShape implements Paintable { diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseClickedPaintableShape.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseClickedPaintableShape.java index 38b3bfec64..0e4d8b437b 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseClickedPaintableShape.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseClickedPaintableShape.java @@ -19,7 +19,7 @@ import java.awt.Color; import java.awt.Point; import java.awt.geom.Ellipse2D; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GThemeDefaults.Colors.Palette; /** * A debugging shape painter that allows the user to see where a mouse clicked happened. diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedLinePaintableShape.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedLinePaintableShape.java index 5e65c576dd..4328bd4123 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedLinePaintableShape.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedLinePaintableShape.java @@ -20,7 +20,7 @@ import java.awt.geom.GeneralPath; import java.util.ArrayList; import java.util.List; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GThemeDefaults.Colors.Palette; /** * Paints a line showing the start and end points of a drag operation. diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedPaintableShape.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedPaintableShape.java index 1ba3d28ab2..d77c315e81 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedPaintableShape.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/MouseDraggedPaintableShape.java @@ -18,7 +18,7 @@ package ghidra.graph.viewer.renderer; import java.awt.*; import java.awt.geom.Rectangle2D; -import docking.theme.GColor; +import generic.theme.GColor; /** * Paints a rectangle showing the start and end points of a drag. diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/PaintableShape.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/PaintableShape.java index 548ed9bad8..1ebbbe1e04 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/PaintableShape.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/PaintableShape.java @@ -18,7 +18,7 @@ package ghidra.graph.viewer.renderer; import java.awt.*; import java.util.Objects; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GThemeDefaults.Colors.Palette; /** * A base class for shapes that can be painted on the graph. See {@link MouseDebugPaintable}. diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualGraphRenderer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualGraphRenderer.java index f63da20c6b..61f844bbb3 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualGraphRenderer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualGraphRenderer.java @@ -21,12 +21,12 @@ import java.util.*; import com.google.common.base.Function; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.*; import edu.uci.ics.jung.visualization.layout.ObservableCachingLayout; import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.*; import ghidra.graph.viewer.edge.BasicEdgeLabelRenderer; import ghidra.graph.viewer.layout.*; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualVertexSatelliteRenderer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualVertexSatelliteRenderer.java index 509b925a13..ca00b63872 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualVertexSatelliteRenderer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/renderer/VisualVertexSatelliteRenderer.java @@ -19,11 +19,11 @@ import java.awt.*; import com.google.common.base.Function; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.RenderContext; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors; import ghidra.graph.viewer.VisualEdge; import ghidra.graph.viewer.VisualVertex; import ghidra.graph.viewer.vertex.AbstractVisualVertexRenderer; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/satellite/CachingSatelliteGraphViewer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/satellite/CachingSatelliteGraphViewer.java index 6a0cd52284..c586ecadc1 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/satellite/CachingSatelliteGraphViewer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/satellite/CachingSatelliteGraphViewer.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.visualization.*; @@ -30,6 +29,7 @@ import edu.uci.ics.jung.visualization.layout.ObservableCachingLayout; import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; import edu.uci.ics.jung.visualization.transform.shape.ShapeTransformer; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.*; import ghidra.graph.viewer.renderer.VisualVertexSatelliteRenderer; import ghidra.util.task.SwingUpdateManager; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/AbstractVisualVertexRenderer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/AbstractVisualVertexRenderer.java index 1631854af9..62f8685877 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/AbstractVisualVertexRenderer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/AbstractVisualVertexRenderer.java @@ -23,14 +23,14 @@ import java.awt.geom.Point2D; import com.google.common.base.Function; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.visualization.*; import edu.uci.ics.jung.visualization.renderers.BasicVertexRenderer; import edu.uci.ics.jung.visualization.transform.MutableTransformer; import edu.uci.ics.jung.visualization.transform.MutableTransformerDecorator; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.viewer.VisualEdge; import ghidra.graph.viewer.VisualVertex; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/DockingVisualVertex.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/DockingVisualVertex.java index 40e511e578..199ac7704a 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/DockingVisualVertex.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/DockingVisualVertex.java @@ -23,7 +23,7 @@ import java.beans.PropertyChangeListener; import javax.swing.*; import docking.GenericHeader; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.graph.viewer.VisualVertex; import ghidra.util.MathUtilities; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualVertexRenderer.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualVertexRenderer.java index be0beb7ac8..c9d3aeec10 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualVertexRenderer.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualVertexRenderer.java @@ -21,12 +21,12 @@ import java.awt.*; import com.google.common.base.Function; -import docking.theme.GThemeDefaults.Colors; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.util.Context; import edu.uci.ics.jung.visualization.RenderContext; import edu.uci.ics.jung.visualization.transform.shape.GraphicsDecorator; +import generic.theme.GThemeDefaults.Colors; import ghidra.graph.VisualGraph; import ghidra.graph.viewer.VisualEdge; import ghidra.graph.viewer.VisualVertex; diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/service/graph/GraphDisplayOptions.java b/Ghidra/Framework/Graph/src/main/java/ghidra/service/graph/GraphDisplayOptions.java index db022be1b7..a3568a3bd4 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/service/graph/GraphDisplayOptions.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/service/graph/GraphDisplayOptions.java @@ -25,7 +25,7 @@ import javax.swing.event.ChangeListener; import docking.Tool; import docking.options.editor.*; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.framework.options.*; import ghidra.util.HelpLocation; import ghidra.util.WebColors; diff --git a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestGraphViewer.java b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestGraphViewer.java index 2c9b0e8027..f7713d5aef 100644 --- a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestGraphViewer.java +++ b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestGraphViewer.java @@ -17,7 +17,7 @@ package ghidra.graph.support; import java.awt.Dimension; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.graphs.AbstractTestVertex; import ghidra.graph.graphs.TestEdge; import ghidra.graph.viewer.GraphViewer; diff --git a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestVertexTooltipProvider.java b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestVertexTooltipProvider.java index 3ea1ef630a..2b8d591c42 100644 --- a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestVertexTooltipProvider.java +++ b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TestVertexTooltipProvider.java @@ -25,8 +25,8 @@ import javax.swing.JComponent; import org.apache.commons.collections4.Factory; import org.apache.commons.collections4.map.LazyMap; -import docking.theme.GColor; import docking.widgets.label.GDHtmlLabel; +import generic.theme.GColor; import ghidra.graph.graphs.AbstractTestVertex; import ghidra.graph.graphs.TestEdge; import ghidra.graph.viewer.event.mouse.VertexTooltipProvider; diff --git a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TextAreaTestVertex.java b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TextAreaTestVertex.java index 80b988bd35..4831a8b121 100644 --- a/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TextAreaTestVertex.java +++ b/Ghidra/Framework/Graph/src/test.slow/java/ghidra/graph/support/TextAreaTestVertex.java @@ -23,8 +23,8 @@ import java.beans.PropertyChangeListener; import javax.swing.*; import docking.GenericHeader; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.graphs.AbstractTestVertex; /** diff --git a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/AlgorithmTestSteppingVertex.java b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/AlgorithmTestSteppingVertex.java index df7a9cc716..557e7d2b53 100644 --- a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/AlgorithmTestSteppingVertex.java +++ b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/AlgorithmTestSteppingVertex.java @@ -22,8 +22,8 @@ import java.awt.image.BufferedImage; import javax.swing.*; -import docking.theme.GColor; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GColor; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.graph.algo.GraphAlgorithmStatusListener.STATUS; import ghidra.graph.graphs.AbstractTestVertex; import ghidra.graph.viewer.vertex.VertexShapeProvider; diff --git a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/TestGraphAlgorithmSteppingViewerPanel.java b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/TestGraphAlgorithmSteppingViewerPanel.java index a06843c94b..2569ba6226 100644 --- a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/TestGraphAlgorithmSteppingViewerPanel.java +++ b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/algo/viewer/TestGraphAlgorithmSteppingViewerPanel.java @@ -25,9 +25,9 @@ import javax.swing.*; import org.apache.commons.collections4.BidiMap; import org.apache.commons.collections4.bidimap.DualHashBidiMap; -import docking.theme.GThemeDefaults.Colors.Palette; import edu.uci.ics.jung.visualization.decorators.EdgeShape; import edu.uci.ics.jung.visualization.renderers.Renderer; +import generic.theme.GThemeDefaults.Colors.Palette; import generic.util.image.ImageUtils; import ghidra.graph.*; import ghidra.graph.algo.GraphAlgorithmStatusListener; diff --git a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/graphs/LabelTestVertex.java b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/graphs/LabelTestVertex.java index bee6004c83..451846c00d 100644 --- a/Ghidra/Framework/Graph/src/test/java/ghidra/graph/graphs/LabelTestVertex.java +++ b/Ghidra/Framework/Graph/src/test/java/ghidra/graph/graphs/LabelTestVertex.java @@ -19,8 +19,8 @@ import java.awt.Dimension; import javax.swing.*; -import docking.theme.GThemeDefaults.Colors.Palette; import docking.widgets.label.GDLabel; +import generic.theme.GThemeDefaults.Colors.Palette; /** * A test vertex that renders using a {@link JLabel}. diff --git a/Ghidra/Framework/Graph/src/test/java/ghidra/service/graph/GraphDisplayOptionsTest.java b/Ghidra/Framework/Graph/src/test/java/ghidra/service/graph/GraphDisplayOptionsTest.java index 5f4d48f6fc..17f33d0678 100644 --- a/Ghidra/Framework/Graph/src/test/java/ghidra/service/graph/GraphDisplayOptionsTest.java +++ b/Ghidra/Framework/Graph/src/test/java/ghidra/service/graph/GraphDisplayOptionsTest.java @@ -24,7 +24,7 @@ import org.junit.Before; import org.junit.Test; import docking.FakeDockingTool; -import docking.theme.GThemeDefaults.Colors.Palette; +import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.framework.options.Options; import ghidra.framework.options.ToolOptions; import ghidra.util.HelpLocation; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/AbstractDetailsPanel.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/AbstractDetailsPanel.java index 65d698525c..7c2e8b4db9 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/AbstractDetailsPanel.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/AbstractDetailsPanel.java @@ -23,8 +23,8 @@ import javax.swing.*; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; -import docking.theme.GColor; import docking.widgets.label.GDHtmlLabel; +import generic.theme.GColor; import ghidra.util.HTMLUtilities; /** diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java index 93224434db..072af3b2e8 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java @@ -36,6 +36,7 @@ import docking.tool.util.DockingToolConstants; import docking.widgets.*; import docking.widgets.label.GIconLabel; import docking.widgets.table.*; +import generic.util.action.ReservedKeyBindings; import ghidra.framework.options.Options; import ghidra.framework.options.ToolOptions; import ghidra.framework.plugintool.PluginTool; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginDetailsPanel.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginDetailsPanel.java index 30fc1c5e8d..f08babc140 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginDetailsPanel.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginDetailsPanel.java @@ -25,7 +25,7 @@ import javax.swing.text.StyleConstants; import docking.action.DockingActionIf; import docking.action.MenuData; import docking.actions.KeyBindingUtils; -import docking.theme.GColor; +import generic.theme.GColor; import ghidra.framework.plugintool.PluginConfigurationModel; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginDescription; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginManagerComponent.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginManagerComponent.java index 7f2fd236b0..838cf06cf0 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginManagerComponent.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/PluginManagerComponent.java @@ -23,11 +23,11 @@ import javax.swing.*; import javax.swing.event.HyperlinkEvent.EventType; import docking.EmptyBorderToggleButton; -import docking.theme.GColor; -import docking.theme.GThemeDefaults; import docking.widgets.HyperlinkComponent; import docking.widgets.checkbox.GCheckBox; import docking.widgets.label.*; +import generic.theme.GColor; +import generic.theme.GThemeDefaults; import ghidra.framework.plugintool.PluginConfigurationModel; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.*;