GP-1981 Moved Most Theming classes from Docking to Generic module

This commit is contained in:
ghidragon
2022-08-08 12:53:34 -04:00
parent d588daaca6
commit b4d2271474
153 changed files with 466 additions and 333 deletions
@@ -18,7 +18,7 @@ package ghidra;
import java.awt.Color; import java.awt.Color;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import docking.theme.GColor; import generic.theme.GColor;
import ghidra.framework.options.Options; import ghidra.framework.options.Options;
/** /**
@@ -26,11 +26,11 @@ import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.theme.GColor;
import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.*;
import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.field.Field;
import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldLocation;
import docking.widgets.fieldpanel.support.FieldSelection; import docking.widgets.fieldpanel.support.FieldSelection;
import generic.theme.GColor;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.app.events.ProgramHighlightPluginEvent; import ghidra.app.events.ProgramHighlightPluginEvent;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
@@ -26,10 +26,10 @@ import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import docking.theme.GColor;
import docking.widgets.fieldpanel.field.FieldElement; import docking.widgets.fieldpanel.field.FieldElement;
import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldLocation;
import docking.widgets.fieldpanel.support.Highlight; import docking.widgets.fieldpanel.support.Highlight;
import generic.theme.GColor;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES;
import ghidra.app.plugin.processors.generic.PcodeFieldFactory; import ghidra.app.plugin.processors.generic.PcodeFieldFactory;
@@ -18,8 +18,8 @@ package ghidra.app.plugin.core.codebrowser;
import java.awt.Color; import java.awt.Color;
import java.math.BigInteger; import java.math.BigInteger;
import docking.theme.GColor;
import docking.widgets.fieldpanel.support.BackgroundColorModel; import docking.widgets.fieldpanel.support.BackgroundColorModel;
import generic.theme.GColor;
import ghidra.app.services.MarkerService; import ghidra.app.services.MarkerService;
import ghidra.app.util.viewer.listingpanel.ListingBackgroundColorModel; import ghidra.app.util.viewer.listingpanel.ListingBackgroundColorModel;
import ghidra.app.util.viewer.listingpanel.ListingPanel; import ghidra.app.util.viewer.listingpanel.ListingPanel;
@@ -19,8 +19,8 @@ import java.awt.*;
import javax.swing.Icon; import javax.swing.Icon;
import docking.theme.GColor; import generic.theme.GColor;
import docking.theme.GThemeDefaults.Colors.Palette; import generic.theme.GThemeDefaults.Colors.Palette;
class BackgroundIcon implements Icon { class BackgroundIcon implements Icon {
@@ -28,7 +28,7 @@ import javax.swing.text.*;
import docking.DockingUtils; import docking.DockingUtils;
import docking.actions.KeyBindingUtils; import docking.actions.KeyBindingUtils;
import docking.theme.GColor; import generic.theme.GColor;
import generic.util.WindowUtilities; import generic.util.WindowUtilities;
import ghidra.app.plugin.core.console.CodeCompletion; import ghidra.app.plugin.core.console.CodeCompletion;
import ghidra.framework.options.OptionsChangeListener; import ghidra.framework.options.OptionsChangeListener;
@@ -26,12 +26,12 @@ import javax.swing.*;
import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelEvent;
import docking.action.builder.ActionBuilder; import docking.action.builder.ActionBuilder;
import docking.theme.GColor;
import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooser;
import docking.widgets.filechooser.GhidraFileChooserMode; import docking.widgets.filechooser.GhidraFileChooserMode;
import docking.widgets.table.GTable; import docking.widgets.table.GTable;
import docking.widgets.table.GTableFilterPanel; import docking.widgets.table.GTableFilterPanel;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import generic.theme.GColor;
import generic.util.Path; import generic.util.Path;
import ghidra.app.services.ConsoleService; import ghidra.app.services.ConsoleService;
import ghidra.framework.plugintool.ComponentProviderAdapter; import ghidra.framework.plugintool.ComponentProviderAdapter;
@@ -27,9 +27,9 @@ import javax.swing.event.TableModelEvent;
import org.osgi.framework.Bundle; import org.osgi.framework.Bundle;
import docking.theme.GColor;
import docking.widgets.table.*; import docking.widgets.table.*;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import generic.theme.GColor;
import generic.util.Path; import generic.util.Path;
import ghidra.docking.settings.Settings; import ghidra.docking.settings.Settings;
import ghidra.framework.plugintool.ServiceProvider; import ghidra.framework.plugintool.ServiceProvider;
@@ -22,8 +22,8 @@ import java.util.*;
import javax.swing.*; import javax.swing.*;
import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeCellRenderer;
import docking.theme.GColor;
import docking.widgets.GComponent; import docking.widgets.GComponent;
import generic.theme.GColor;
import ghidra.program.model.listing.Group; import ghidra.program.model.listing.Group;
import resources.ResourceManager; import resources.ResourceManager;
@@ -22,9 +22,9 @@ import javax.swing.*;
import docking.*; import docking.*;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import generic.util.action.ReservedKeyBindings;
import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.Plugin;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.ReservedKeyBindings;
class KeyBindingInputDialog extends DialogComponentProvider implements KeyEntryListener { class KeyBindingInputDialog extends DialogComponentProvider implements KeyEntryListener {
private KeyEntryTextField kbField; private KeyEntryTextField kbField;
@@ -17,7 +17,7 @@ package ghidra.app.util;
import java.awt.Color; import java.awt.Color;
import docking.theme.GColor; import generic.theme.GColor;
/** /**
* Miscellaneous defined constants * Miscellaneous defined constants
@@ -20,8 +20,8 @@ import java.math.BigInteger;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import docking.theme.GColor;
import docking.widgets.fieldpanel.support.BackgroundColorModel; import docking.widgets.fieldpanel.support.BackgroundColorModel;
import generic.theme.GColor;
import ghidra.app.util.viewer.util.AddressIndexMap; import ghidra.app.util.viewer.util.AddressIndexMap;
import ghidra.framework.model.DomainObjectChangedEvent; import ghidra.framework.model.DomainObjectChangedEvent;
import ghidra.framework.model.DomainObjectListener; import ghidra.framework.model.DomainObjectListener;
@@ -27,7 +27,6 @@ import java.util.stream.IntStream;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border; import javax.swing.border.Border;
import docking.theme.GColor;
import docking.widgets.checkbox.GCheckBox; import docking.widgets.checkbox.GCheckBox;
import docking.widgets.combobox.GComboBox; import docking.widgets.combobox.GComboBox;
import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.*;
@@ -36,6 +35,7 @@ import docking.widgets.fieldpanel.listener.LayoutModelListener;
import docking.widgets.fieldpanel.support.*; import docking.widgets.fieldpanel.support.*;
import docking.widgets.indexedscrollpane.IndexedScrollPane; import docking.widgets.indexedscrollpane.IndexedScrollPane;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import generic.theme.GColor;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.util.SystemUtilities; import ghidra.util.SystemUtilities;
@@ -24,6 +24,8 @@ import javax.help.HelpSetException;
import docking.help.*; import docking.help.*;
import generic.jar.ResourceFile; import generic.jar.ResourceFile;
import generic.theme.Gui;
import generic.theme.ThemeListener;
import ghidra.framework.Application; import ghidra.framework.Application;
import ghidra.util.Msg; import ghidra.util.Msg;
import help.HelpService; import help.HelpService;
@@ -36,6 +38,7 @@ import resources.ResourceManager;
public class GhidraHelpService extends HelpManager { public class GhidraHelpService extends HelpManager {
private static final String MASTER_HELP_SET_HS = "Base_HelpSet.hs"; private static final String MASTER_HELP_SET_HS = "Base_HelpSet.hs";
private ThemeListener listener = t -> reload();
public static void install() { public static void install() {
try { try {
@@ -50,6 +53,7 @@ public class GhidraHelpService extends HelpManager {
super(findMasterHelpSetUrl()); super(findMasterHelpSetUrl());
loadHelpSets(); loadHelpSets();
registerHelp(); registerHelp();
Gui.addThemeListener(listener);
} }
private static URL findMasterHelpSetUrl() { private static URL findMasterHelpSetUrl() {
@@ -19,8 +19,9 @@ import docking.DockingErrorDisplay;
import docking.DockingWindowManager; import docking.DockingWindowManager;
import docking.framework.ApplicationInformationDisplayFactory; import docking.framework.ApplicationInformationDisplayFactory;
import docking.framework.SplashScreen; import docking.framework.SplashScreen;
import docking.theme.Gui;
import docking.widgets.PopupKeyStorePasswordProvider; import docking.widgets.PopupKeyStorePasswordProvider;
import generic.theme.Gui;
import ghidra.docking.util.LookAndFeelUtils;
import ghidra.formats.gfilesystem.crypto.CryptoProviders; import ghidra.formats.gfilesystem.crypto.CryptoProviders;
import ghidra.formats.gfilesystem.crypto.PopupGUIPasswordProvider; import ghidra.formats.gfilesystem.crypto.PopupGUIPasswordProvider;
import ghidra.framework.main.GhidraApplicationInformationDisplayFactory; import ghidra.framework.main.GhidraApplicationInformationDisplayFactory;
@@ -43,6 +44,7 @@ public class GhidraApplicationConfiguration extends HeadlessGhidraApplicationCon
@Override @Override
protected void initializeApplication() { protected void initializeApplication() {
Gui.initialize(); Gui.initialize();
LookAndFeelUtils.platformSpecificFixups();
if (showSplashScreen) { if (showSplashScreen) {
showUserAgreement(); showUserAgreement();
@@ -51,8 +53,8 @@ public class GhidraApplicationConfiguration extends HeadlessGhidraApplicationCon
super.initializeApplication(); super.initializeApplication();
ApplicationKeyManagerFactory.setKeyStorePasswordProvider( ApplicationKeyManagerFactory
new PopupKeyStorePasswordProvider()); .setKeyStorePasswordProvider(new PopupKeyStorePasswordProvider());
CryptoProviders.getInstance().registerCryptoProvider(new PopupGUIPasswordProvider()); CryptoProviders.getInstance().registerCryptoProvider(new PopupGUIPasswordProvider());
} }
@@ -21,7 +21,7 @@ import java.util.LinkedList;
import javax.swing.JTextPane; import javax.swing.JTextPane;
import javax.swing.text.*; import javax.swing.text.*;
import docking.theme.GColor; import generic.theme.GColor;
import ghidra.framework.options.*; import ghidra.framework.options.*;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.util.Msg; import ghidra.util.Msg;
@@ -25,9 +25,9 @@ import javax.swing.event.HyperlinkEvent;
import javax.swing.text.View; import javax.swing.text.View;
import docking.DockingUtils; import docking.DockingUtils;
import docking.theme.GColor;
import docking.widgets.*; import docking.widgets.*;
import docking.widgets.label.*; import docking.widgets.label.*;
import generic.theme.GColor;
import generic.util.WindowUtilities; import generic.util.WindowUtilities;
import ghidra.framework.Application; import ghidra.framework.Application;
import ghidra.framework.ApplicationProperties; import ghidra.framework.ApplicationProperties;
@@ -21,8 +21,8 @@ import java.awt.Font;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.table.TableModel; import javax.swing.table.TableModel;
import docking.theme.GColor;
import docking.widgets.table.GTableCellRenderer; import docking.widgets.table.GTableCellRenderer;
import generic.theme.GColor;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.program.model.mem.Memory; import ghidra.program.model.mem.Memory;
@@ -25,7 +25,7 @@ import java.util.List;
import javax.swing.JComponent; import javax.swing.JComponent;
import docking.action.ToggleDockingAction; import docking.action.ToggleDockingAction;
import docking.theme.GColor; import generic.theme.GColor;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES;
import ghidra.app.plugin.core.format.*; import ghidra.app.plugin.core.format.*;
@@ -23,7 +23,7 @@ import java.util.List;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.*; import javax.swing.event.*;
import docking.theme.GColor; import docking.help.HelpService;
import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.*;
import docking.widgets.fieldpanel.field.EmptyTextField; import docking.widgets.fieldpanel.field.EmptyTextField;
import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.field.Field;
@@ -32,6 +32,7 @@ import docking.widgets.fieldpanel.support.*;
import docking.widgets.indexedscrollpane.*; import docking.widgets.indexedscrollpane.*;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import generic.theme.GColor;
import ghidra.app.plugin.core.format.*; import ghidra.app.plugin.core.format.*;
import ghidra.app.util.viewer.listingpanel.AddressSetDisplayListener; import ghidra.app.util.viewer.listingpanel.AddressSetDisplayListener;
import ghidra.program.model.address.AddressSet; import ghidra.program.model.address.AddressSet;
@@ -42,7 +43,6 @@ import ghidra.util.exception.InvalidInputException;
import ghidra.util.layout.HorizontalLayout; import ghidra.util.layout.HorizontalLayout;
import ghidra.util.layout.PairLayout; import ghidra.util.layout.PairLayout;
import help.Help; import help.Help;
import help.HelpService;
/** /**
* Top level component that contains has a scrolled pane for the panel of components that show the * Top level component that contains has a scrolled pane for the panel of components that show the
@@ -24,7 +24,7 @@ import java.awt.Font;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.io.IOException; import java.io.IOException;
import docking.theme.GColor; import generic.theme.GColor;
import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES; import ghidra.GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES;
import ghidra.app.util.HelpTopics; import ghidra.app.util.HelpTopics;
import ghidra.framework.options.Options; import ghidra.framework.options.Options;
@@ -24,7 +24,7 @@ import org.jdom.Element;
import docking.ComponentPlaceholder; import docking.ComponentPlaceholder;
import docking.DockingWindowManager; import docking.DockingWindowManager;
import docking.options.editor.GhidraColorChooser; 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.graph.vertex.FGVertex;
import ghidra.app.plugin.core.functiongraph.mvc.FunctionGraphVertexAttributes; import ghidra.app.plugin.core.functiongraph.mvc.FunctionGraphVertexAttributes;
import ghidra.framework.options.SaveState; import ghidra.framework.options.SaveState;
@@ -21,12 +21,12 @@ import java.util.Map.Entry;
import org.jdom.Element; import org.jdom.Element;
import docking.theme.GColor;
import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.visualization.RenderContext; import edu.uci.ics.jung.visualization.RenderContext;
import edu.uci.ics.jung.visualization.picking.PickedState; import edu.uci.ics.jung.visualization.picking.PickedState;
import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.renderers.Renderer;
import edu.uci.ics.jung.visualization.util.Caching; 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.renderer.FGVertexRenderer;
import ghidra.app.plugin.core.functiongraph.graph.jung.transformer.FGVertexPickableBackgroundPaintTransformer; import ghidra.app.plugin.core.functiongraph.graph.jung.transformer.FGVertexPickableBackgroundPaintTransformer;
import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayout; import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayout;
@@ -21,8 +21,8 @@ import java.util.Objects;
import com.google.common.base.Function; import com.google.common.base.Function;
import docking.theme.Gui;
import edu.uci.ics.jung.visualization.picking.PickedInfo; 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.FGVertexType;
import ghidra.app.plugin.core.functiongraph.graph.vertex.FGVertex; import ghidra.app.plugin.core.functiongraph.graph.vertex.FGVertex;
import ghidra.program.util.ProgramSelection; import ghidra.program.util.ProgramSelection;
@@ -21,8 +21,8 @@ import java.awt.geom.Point2D;
import javax.swing.*; import javax.swing.*;
import docking.theme.GThemeDefaults.Colors;
import edu.uci.ics.jung.visualization.VisualizationViewer; 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.graph.FGEdge;
import ghidra.app.plugin.core.functiongraph.mvc.FGController; import ghidra.app.plugin.core.functiongraph.mvc.FGController;
import ghidra.app.plugin.core.functiongraph.mvc.FGView; import ghidra.app.plugin.core.functiongraph.mvc.FGView;
@@ -20,7 +20,7 @@ import java.awt.event.MouseEvent;
import javax.swing.JComponent; 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.FGEdge;
import ghidra.app.plugin.core.functiongraph.graph.FGVertexType; import ghidra.app.plugin.core.functiongraph.graph.FGVertexType;
import ghidra.app.plugin.core.functiongraph.mvc.FGController; import ghidra.app.plugin.core.functiongraph.mvc.FGController;
@@ -27,7 +27,7 @@ import docking.ActionContext;
import docking.GenericHeader; import docking.GenericHeader;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.action.ToolBarData; 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.FunctionGraphPlugin;
import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.graph.FGEdge;
import ghidra.app.plugin.core.functiongraph.mvc.FGController; import ghidra.app.plugin.core.functiongraph.mvc.FGController;
@@ -32,13 +32,13 @@ import docking.ActionContext;
import docking.GenericHeader; import docking.GenericHeader;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.action.ToolBarData; import docking.action.ToolBarData;
import docking.theme.GColor;
import docking.theme.GThemeDefaults.Colors;
import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.FieldPanel;
import docking.widgets.fieldpanel.Layout; import docking.widgets.fieldpanel.Layout;
import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.field.Field;
import docking.widgets.fieldpanel.support.BackgroundColorModel; import docking.widgets.fieldpanel.support.BackgroundColorModel;
import docking.widgets.label.GDLabel; 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.codebrowser.hover.ListingHoverService;
import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin;
import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.graph.FGEdge;
@@ -25,7 +25,7 @@ import docking.ActionContext;
import docking.action.*; import docking.action.*;
import docking.menu.MultiActionDockingAction; import docking.menu.MultiActionDockingAction;
import docking.menu.MultipleActionDockingToolbarButton; 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.FGColorProvider;
import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin;
import ghidra.app.plugin.core.functiongraph.mvc.FGController; import ghidra.app.plugin.core.functiongraph.mvc.FGController;
@@ -19,8 +19,8 @@ import java.awt.Color;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
import docking.theme.GColor; import generic.theme.GColor;
import docking.theme.GThemeDefaults.Colors.Palette; import generic.theme.GThemeDefaults.Colors.Palette;
import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin; import ghidra.app.plugin.core.functiongraph.FunctionGraphPlugin;
import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayoutOptions; import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayoutOptions;
import ghidra.framework.options.Options; import ghidra.framework.options.Options;
@@ -26,8 +26,8 @@ import org.junit.*;
import docking.ActionContext; import docking.ActionContext;
import docking.action.DockingActionIf; import docking.action.DockingActionIf;
import docking.theme.GThemeDefaults.Colors.Palette;
import edu.uci.ics.jung.graph.Graph; 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.clear.ClearPlugin;
import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin;
import ghidra.app.plugin.core.functiongraph.graph.FGEdge; import ghidra.app.plugin.core.functiongraph.graph.FGEdge;
@@ -32,12 +32,12 @@ import docking.ActionContext;
import docking.ComponentProvider; import docking.ComponentProvider;
import docking.action.DockingAction; import docking.action.DockingAction;
import docking.dnd.GClipboard; import docking.dnd.GClipboard;
import docking.theme.GThemeDefaults.Colors.Palette;
import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.visualization.VisualizationModel; import edu.uci.ics.jung.visualization.VisualizationModel;
import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.util.Caching; import edu.uci.ics.jung.visualization.util.Caching;
import generic.test.TestUtils; import generic.test.TestUtils;
import generic.theme.GThemeDefaults.Colors.Palette;
import ghidra.app.cmd.label.AddLabelCmd; import ghidra.app.cmd.label.AddLabelCmd;
import ghidra.app.events.ProgramSelectionPluginEvent; import ghidra.app.events.ProgramSelectionPluginEvent;
import ghidra.app.nav.LocationMemento; import ghidra.app.nav.LocationMemento;
@@ -27,9 +27,9 @@ import javax.swing.JComponent;
import org.junit.*; import org.junit.*;
import docking.action.DockingActionIf; import docking.action.DockingActionIf;
import docking.theme.GThemeDefaults.Colors.Palette;
import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Graph;
import generic.test.TestUtils; import generic.test.TestUtils;
import generic.theme.GThemeDefaults.Colors.Palette;
import ghidra.app.cmd.label.AddLabelCmd; import ghidra.app.cmd.label.AddLabelCmd;
import ghidra.app.cmd.label.DeleteLabelCmd; import ghidra.app.cmd.label.DeleteLabelCmd;
import ghidra.app.cmd.refs.AddMemRefCmd; import ghidra.app.cmd.refs.AddMemRefCmd;
@@ -23,8 +23,8 @@ import java.util.List;
import javax.swing.*; import javax.swing.*;
import docking.DialogComponentProvider; import docking.DialogComponentProvider;
import docking.theme.GThemeDefaults;
import docking.widgets.checkbox.GCheckBox; import docking.widgets.checkbox.GCheckBox;
import generic.theme.GThemeDefaults;
import ghidra.feature.fid.db.FidFile; import ghidra.feature.fid.db.FidFile;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.layout.VerticalLayout; import ghidra.util.layout.VerticalLayout;
@@ -26,11 +26,11 @@ import javax.swing.*;
import javax.swing.border.Border; import javax.swing.border.Border;
import javax.swing.border.LineBorder; 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.EmptyBorderButton;
import docking.widgets.label.GDLabel; 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.AbstractVisualVertex;
import ghidra.graph.viewer.vertex.VertexShapeProvider; import ghidra.graph.viewer.vertex.VertexShapeProvider;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
@@ -15,12 +15,12 @@
*/ */
package functioncalls.graph.view; package functioncalls.graph.view;
import docking.theme.GColor;
import edu.uci.ics.jung.visualization.renderers.Renderer; import edu.uci.ics.jung.visualization.renderers.Renderer;
import functioncalls.graph.*; import functioncalls.graph.*;
import functioncalls.graph.renderer.FcgEdgePaintTransformer; import functioncalls.graph.renderer.FcgEdgePaintTransformer;
import functioncalls.graph.renderer.FcgVertexPaintTransformer; import functioncalls.graph.renderer.FcgVertexPaintTransformer;
import functioncalls.plugin.FunctionCallGraphPlugin; import functioncalls.plugin.FunctionCallGraphPlugin;
import generic.theme.GColor;
import ghidra.graph.viewer.*; import ghidra.graph.viewer.*;
import ghidra.graph.viewer.edge.VisualEdgeRenderer; import ghidra.graph.viewer.edge.VisualEdgeRenderer;
import ghidra.graph.viewer.layout.VisualGraphLayout; import ghidra.graph.viewer.layout.VisualGraphLayout;
@@ -50,9 +50,9 @@ import docking.action.builder.*;
import docking.menu.ActionState; import docking.menu.ActionState;
import docking.menu.MultiStateDockingAction; import docking.menu.MultiStateDockingAction;
import docking.options.editor.OptionsDialog; import docking.options.editor.OptionsDialog;
import docking.theme.GColor;
import docking.widgets.EventTrigger; import docking.widgets.EventTrigger;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import generic.theme.GColor;
import generic.util.WindowUtilities; import generic.util.WindowUtilities;
import ghidra.framework.options.Options; import ghidra.framework.options.Options;
import ghidra.framework.options.ToolOptions; import ghidra.framework.options.ToolOptions;
@@ -26,13 +26,14 @@ import javax.swing.text.*;
import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreeSelectionModel;
import docking.DockingUtils; import docking.DockingUtils;
import docking.theme.GColor; import docking.help.HelpService;
import docking.widgets.EventTrigger; import docking.widgets.EventTrigger;
import docking.widgets.OptionDialog; import docking.widgets.OptionDialog;
import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.FieldPanel;
import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.field.Field;
import docking.widgets.fieldpanel.listener.FieldMouseListener; import docking.widgets.fieldpanel.listener.FieldMouseListener;
import docking.widgets.fieldpanel.support.FieldLocation; import docking.widgets.fieldpanel.support.FieldLocation;
import generic.theme.GColor;
import ghidra.GhidraOptions; import ghidra.GhidraOptions;
import ghidra.app.CorePluginPackage; import ghidra.app.CorePluginPackage;
import ghidra.app.events.*; import ghidra.app.events.*;
@@ -62,7 +63,6 @@ import ghidra.util.exception.CancelledException;
import ghidra.util.exception.VersionException; import ghidra.util.exception.VersionException;
import ghidra.util.task.*; import ghidra.util.task.*;
import help.Help; import help.Help;
import help.HelpService;
import resources.ResourceManager; import resources.ResourceManager;
/** /**
@@ -37,7 +37,7 @@ import docking.widgets.list.GList;
import docking.widgets.list.GListCellRenderer; import docking.widgets.list.GListCellRenderer;
import docking.widgets.table.GTableCellRenderer; import docking.widgets.table.GTableCellRenderer;
import docking.widgets.tree.support.GTreeRenderer; import docking.widgets.tree.support.GTreeRenderer;
import ghidra.docking.util.LookAndFeelUtils; import generic.theme.Gui;
import ghidra.util.HTMLUtilities; import ghidra.util.HTMLUtilities;
import resources.ResourceManager; import resources.ResourceManager;
@@ -125,7 +125,7 @@ public class DockingUtils {
public static JSeparator createToolbarSeparator() { public static JSeparator createToolbarSeparator() {
Dimension sepDim = new Dimension(2, ICON_SIZE + 2); Dimension sepDim = new Dimension(2, ICON_SIZE + 2);
JSeparator separator = new JSeparator(SwingConstants.VERTICAL); JSeparator separator = new JSeparator(SwingConstants.VERTICAL);
if (LookAndFeelUtils.isUsingAquaUI(separator.getUI())) { if (Gui.isUsingAquaUI(separator.getUI())) {
separator.setUI(new BasicSeparatorUI()); separator.setUI(new BasicSeparatorUI());
} }
separator.setPreferredSize(sepDim); // ugly work around to force height of separator separator.setPreferredSize(sepDim); // ugly work around to force height of separator
@@ -26,10 +26,10 @@ import org.jdesktop.animation.timing.TimingTargetAdapter;
import org.jdesktop.animation.timing.interpolation.PropertySetter; import org.jdesktop.animation.timing.interpolation.PropertySetter;
import docking.action.DockingActionIf; import docking.action.DockingActionIf;
import docking.theme.GColor;
import docking.util.AnimationUtils; import docking.util.AnimationUtils;
import docking.widgets.VariableHeightPanel; import docking.widgets.VariableHeightPanel;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import generic.theme.GColor;
// TODO: should this be put into generic? // TODO: should this be put into generic?
public class GenericHeader extends JPanel { public class GenericHeader extends JPanel {
@@ -29,8 +29,8 @@ import org.apache.commons.lang3.StringUtils;
import docking.ActionContext; import docking.ActionContext;
import docking.DockingWindowManager; import docking.DockingWindowManager;
import generic.util.action.ReservedKeyBindings;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.ReservedKeyBindings;
public class ComponentThemeInspectorAction extends DockingAction { public class ComponentThemeInspectorAction extends DockingAction {
@@ -24,7 +24,7 @@ import javax.swing.Action;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import docking.*; import docking.*;
import ghidra.util.ReservedKeyBindings; import generic.util.action.ReservedKeyBindings;
import ghidra.util.exception.AssertException; import ghidra.util.exception.AssertException;
/** /**
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.Logger;
import docking.ActionContext; import docking.ActionContext;
import docking.DockingWindowManager; import docking.DockingWindowManager;
import ghidra.util.ReservedKeyBindings; import generic.util.action.ReservedKeyBindings;
public class ShowFocusCycleAction extends DockingAction { public class ShowFocusCycleAction extends DockingAction {
static final Logger log = LogManager.getLogger(ShowFocusCycleAction.class); static final Logger log = LogManager.getLogger(ShowFocusCycleAction.class);
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import docking.*; import docking.*;
import ghidra.util.ReservedKeyBindings; import generic.util.action.ReservedKeyBindings;
public class ShowFocusInfoAction extends DockingAction { public class ShowFocusInfoAction extends DockingAction {
static final Logger log = LogManager.getLogger(ShowFocusInfoAction.class); static final Logger log = LogManager.getLogger(ShowFocusInfoAction.class);
@@ -27,8 +27,8 @@ import docking.KeyEntryTextField;
import docking.action.*; import docking.action.*;
import docking.tool.ToolConstants; import docking.tool.ToolConstants;
import docking.widgets.label.GIconLabel; import docking.widgets.label.GIconLabel;
import generic.util.action.ReservedKeyBindings;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.ReservedKeyBindings;
import resources.ResourceManager; import resources.ResourceManager;
/** /**
@@ -32,6 +32,7 @@ import org.apache.commons.collections4.map.LazyMap;
import docking.*; import docking.*;
import docking.action.*; import docking.action.*;
import docking.tool.util.DockingToolConstants; import docking.tool.util.DockingToolConstants;
import generic.util.action.ReservedKeyBindings;
import ghidra.framework.options.*; import ghidra.framework.options.*;
import ghidra.util.*; import ghidra.util.*;
import ghidra.util.exception.AssertException; import ghidra.util.exception.AssertException;
@@ -16,8 +16,9 @@
package docking.framework; package docking.framework;
import docking.DockingErrorDisplay; import docking.DockingErrorDisplay;
import docking.theme.Gui;
import docking.widgets.PopupKeyStorePasswordProvider; import docking.widgets.PopupKeyStorePasswordProvider;
import generic.theme.Gui;
import ghidra.docking.util.LookAndFeelUtils;
import ghidra.framework.ApplicationConfiguration; import ghidra.framework.ApplicationConfiguration;
import ghidra.net.ApplicationKeyManagerFactory; import ghidra.net.ApplicationKeyManagerFactory;
import ghidra.util.ErrorDisplay; import ghidra.util.ErrorDisplay;
@@ -49,13 +50,14 @@ public class DockingApplicationConfiguration extends ApplicationConfiguration {
super.initializeApplication(); super.initializeApplication();
Gui.initialize(); Gui.initialize();
LookAndFeelUtils.platformSpecificFixups();
if (showSplashScreen) { if (showSplashScreen) {
SplashScreen.showSplashScreen(); SplashScreen.showSplashScreen();
} }
ApplicationKeyManagerFactory.setKeyStorePasswordProvider( ApplicationKeyManagerFactory
new PopupKeyStorePasswordProvider()); .setKeyStorePasswordProvider(new PopupKeyStorePasswordProvider());
} }
@@ -23,9 +23,9 @@ import javax.swing.*;
import javax.swing.border.BevelBorder; import javax.swing.border.BevelBorder;
import docking.*; import docking.*;
import docking.theme.GColor;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.label.GLabel; import docking.widgets.label.GLabel;
import generic.theme.GColor;
import generic.util.WindowUtilities; import generic.util.WindowUtilities;
import ghidra.framework.Application; import ghidra.framework.Application;
import ghidra.util.Msg; import ghidra.util.Msg;
@@ -24,7 +24,7 @@ import javax.swing.KeyStroke;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import docking.action.DockingActionIf; import docking.action.DockingActionIf;
import ghidra.docking.util.LookAndFeelUtils; import generic.theme.Gui;
import ghidra.util.StringUtilities; import ghidra.util.StringUtilities;
class DockingToolBarUtils { class DockingToolBarUtils {
@@ -96,7 +96,7 @@ class DockingToolBarUtils {
builder.append(InputEvent.getModifiersExText(modifiers)); builder.append(InputEvent.getModifiersExText(modifiers));
// The Aqua LaF does not use the '+' symbol between modifiers // The Aqua LaF does not use the '+' symbol between modifiers
if (!LookAndFeelUtils.isUsingAquaUI(button.getUI())) { if (!Gui.isUsingAquaUI(button.getUI())) {
builder.append('+'); builder.append('+');
} }
} }
@@ -17,15 +17,24 @@ package docking.options.editor;
import java.awt.*; import java.awt.*;
import java.beans.PropertyEditorSupport; import java.beans.PropertyEditorSupport;
import java.io.File;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.List; import java.util.List;
import javax.swing.*; import javax.swing.*;
import org.apache.commons.io.FileUtils;
import docking.theme.gui.ProtectedIcon; import docking.theme.gui.ProtectedIcon;
import docking.widgets.*; import docking.widgets.*;
import docking.widgets.filechooser.GhidraFileChooser;
import docking.widgets.filechooser.GhidraFileChooserMode;
import docking.widgets.label.GDLabel; import docking.widgets.label.GDLabel;
import docking.widgets.list.GListCellRenderer; import docking.widgets.list.GListCellRenderer;
import ghidra.framework.Application;
import ghidra.util.Msg;
import ghidra.util.filechooser.ExtensionFileFilter;
import resources.ResourceManager; import resources.ResourceManager;
import resources.icons.ScaledImageIcon; import resources.icons.ScaledImageIcon;
import resources.icons.UrlImageIcon; import resources.icons.UrlImageIcon;
@@ -86,8 +95,6 @@ public class IconPropertyEditor extends PropertyEditorSupport {
updateDropDownDataModel(icon); updateDropDownDataModel(icon);
updatePreviewLabel(icon); updatePreviewLabel(icon);
// iconTextField.addActionListener(listener);
} }
private void updateDropDownDataModel(Icon icon) { private void updateDropDownDataModel(Icon icon) {
@@ -114,27 +121,11 @@ public class IconPropertyEditor extends PropertyEditorSupport {
return super.getMatchingData(searchText); return super.getMatchingData(searchText);
} }
}; };
// dropDown.setConsumeEnterKeyPress(false);
// dropDown.addActionListener(e -> iconChanged());
dropDown.addDropDownSelectionChoiceListener(choiceListener); 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); panel.add(dropDown, BorderLayout.CENTER);
// JButton browseButton = ButtonPanelFactory.createButton(ButtonPanelFactory.BROWSE_TYPE); JButton browseButton = ButtonPanelFactory.createButton(ButtonPanelFactory.BROWSE_TYPE);
// panel.add(browseButton, BorderLayout.EAST); panel.add(browseButton, BorderLayout.EAST);
// browseButton.addActionListener(e -> browse()); browseButton.addActionListener(e -> browse());
// iconTextField.addActionListener(listener);
return panel; return panel;
} }
@@ -154,7 +145,59 @@ public class IconPropertyEditor extends PropertyEditorSupport {
} }
private void browse() { 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() { private Component buildPreviewLabel() {

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