diff --git a/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/CheckedOut.png b/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/CheckedOut.png index 4bc18c9f39..21e4a0db03 100644 Binary files a/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/CheckedOut.png and b/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/CheckedOut.png differ diff --git a/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/FindMyCheckouts.png b/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/FindMyCheckouts.png index 09624be3a4..4ed7c2894f 100644 Binary files a/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/FindMyCheckouts.png and b/Ghidra/Features/Base/src/main/help/help/topics/VersionControl/images/FindMyCheckouts.png differ diff --git a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/UserManager.java b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/UserManager.java index 15aaf9e0de..fefa4c0b5d 100644 --- a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/UserManager.java +++ b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/UserManager.java @@ -735,13 +735,14 @@ public class UserManager { getDNLog().println(username + "; " + principal); } catch (IOException e) { + // ignore } } /* * Regex: matches if the entire string is alpha, digit, ".", "-", "_", fwd or back slash. */ - private static final Pattern VALID_USERNAME_REGEX = Pattern.compile("[a-zA-Z0-9.-_/\\\\]+"); + private static final Pattern VALID_USERNAME_REGEX = Pattern.compile("[a-zA-Z0-9.\\-_/\\\\]+"); /** * Ensures a name only contains valid characters and meets length limitations. diff --git a/Ghidra/Framework/Docking/src/main/java/docking/AbstractDockingTool.java b/Ghidra/Framework/Docking/src/main/java/docking/AbstractDockingTool.java index b7e6738408..d9c2be767e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/AbstractDockingTool.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/AbstractDockingTool.java @@ -152,7 +152,7 @@ public abstract class AbstractDockingTool implements DockingTool { @Override public void showDialog(DialogComponentProvider dialogComponent) { - DockingWindowManager.showDialog(getToolFrame(), dialogComponent); + DockingWindowManager.showDialog(null, dialogComponent); } public JFrame getToolFrame() { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/core/help/AboutDomainObjectUtils.java b/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/core/help/AboutDomainObjectUtils.java index 03142d5c20..d4177d409d 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/core/help/AboutDomainObjectUtils.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/core/help/AboutDomainObjectUtils.java @@ -62,7 +62,7 @@ public class AboutDomainObjectUtils { if (helpLocation != null) { dialog.setHelpLocation(helpLocation); } - tool.showDialog(dialog, (Component) null); + tool.showDialog(dialog); } private static void addInfo(JPanel panel, String name, String value) { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/FindCheckoutsDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/FindCheckoutsDialog.java index cf02827a76..600cdaed6b 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/FindCheckoutsDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/FindCheckoutsDialog.java @@ -128,7 +128,8 @@ public class FindCheckoutsDialog extends DialogComponentProvider { @Override public ActionContext getActionContext(MouseEvent event) { - return new ProjectDataActionContext(null, null, null, null, getFileList(), null, true); + return new ProjectDataActionContext(null, folder.getProjectData(), null, null, + getFileList(), null, true); } private class MyCellRenderer extends GTableCellRenderer { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/VersionControlShowHistoryAction.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/VersionControlShowHistoryAction.java index 9acffa01fd..8021b2eda7 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/VersionControlShowHistoryAction.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/projectdata/actions/VersionControlShowHistoryAction.java @@ -75,7 +75,7 @@ public class VersionControlShowHistoryAction extends VersionControlAction { } VersionHistoryDialog dialog = new VersionHistoryDialog(domainFiles.get(0)); - tool.showDialog(dialog, tool.getToolFrame()); + tool.showDialog(dialog); } } diff --git a/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/VersionControlSlowScreenShots.java b/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/VersionControlSlowScreenShots.java index 2dccf23f2c..e57b6dd6b5 100644 --- a/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/VersionControlSlowScreenShots.java +++ b/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/VersionControlSlowScreenShots.java @@ -15,7 +15,7 @@ */ package help.screenshot; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.*; import java.io.IOException; @@ -58,9 +58,9 @@ public class VersionControlSlowScreenShots extends GhidraScreenShotGenerator { public void tearDown() throws Exception { // super.tearDown(); don't do this; use our tool instead - - frontEnd.dispose(); - + if (frontEnd != null) { + frontEnd.dispose(); + } showResults(); } diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction1Test.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction1Test.java index 7af8827267..3e4cb088fe 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction1Test.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction1Test.java @@ -27,6 +27,7 @@ import javax.swing.*; import org.junit.Assert; import org.junit.Test; +import docking.ActionContext; import docking.DialogComponentProvider; import docking.action.DockingActionIf; import docking.widgets.table.*; @@ -212,16 +213,18 @@ public class VersionControlAction1Test extends AbstractVersionControlActionTest waitForTasks(); // make some changes to check in - Program program = (Program) ((DomainFileNode) node).getDomainFile().getDomainObject(this, - true, false, TaskMonitor.DUMMY); + Program program = (Program) ((DomainFileNode) node).getDomainFile() + .getDomainObject(this, + true, false, TaskMonitor.DUMMY); editProgram(program, (p) -> { SymbolTable symTable = p.getSymbolTable(); symTable.createLabel(p.getMinAddress().getNewAddress(0x010001000), "fred", SourceType.USER_DEFINED); }); - program = (Program) ((DomainFileNode) xnode).getDomainFile().getDomainObject(this, true, - false, TaskMonitor.DUMMY); + program = (Program) ((DomainFileNode) xnode).getDomainFile() + .getDomainObject(this, true, + false, TaskMonitor.DUMMY); editProgram(program, (p) -> { SymbolTable symTable = p.getSymbolTable(); symTable.createLabel(p.getMinAddress(), "bob", SourceType.USER_DEFINED); @@ -250,8 +253,9 @@ public class VersionControlAction1Test extends AbstractVersionControlActionTest checkout(programNode); Program program = - (Program) ((DomainFileNode) programNode).getDomainFile().getDomainObject(this, true, - false, TaskMonitor.DUMMY); + (Program) ((DomainFileNode) programNode).getDomainFile() + .getDomainObject(this, true, + false, TaskMonitor.DUMMY); createHistoryEntry(program, "Symbol1"); frontEnd.checkIn(programNode, "This is checkin 1"); @@ -559,25 +563,17 @@ public class VersionControlAction1Test extends AbstractVersionControlActionTest FindCheckoutsTableModel model = (FindCheckoutsTableModel) table.getModel(); assertEquals(2, model.getRowCount()); - assertEquals(4, model.getColumnCount()); - JButton checkInButton = - findButtonByIcon(dialog, ResourceManager.loadImage("images/vcCheckIn.png")); - - assertNotNull(checkInButton); - - JButton undoCheckoutButton = - findButtonByIcon(dialog, ResourceManager.loadImage("images/vcUndoCheckOut.png")); - assertNotNull(undoCheckoutButton); - - assertTrue(!checkInButton.isEnabled()); - assertTrue(!undoCheckoutButton.isEnabled()); + DockingActionIf undoCheckoutAction = getAction("UndoCheckOut"); + DockingActionIf checkInAction = getAction("CheckIn"); + assertFalse(checkInAction.isEnabledForContext(dialog.getActionContext(null))); + assertFalse(undoCheckoutAction.isEnabledForContext(dialog.getActionContext(null))); // make a selection in the table selectInTable(table, node); - assertTrue(checkInButton.isEnabled()); - assertTrue(undoCheckoutButton.isEnabled()); + assertFalse(checkInAction.isEnabledForContext(dialog.getActionContext(null))); + assertTrue(undoCheckoutAction.isEnabledForContext(dialog.getActionContext(null))); CheckoutInfo checkoutInfo = model.getRowObject(0); DomainFile file = checkoutInfo.getFile(); @@ -611,11 +607,9 @@ public class VersionControlAction1Test extends AbstractVersionControlActionTest selectInTable(table, node); - JButton undoCheckoutButton = - findButtonByIcon(dialog, ResourceManager.loadImage("images/vcUndoCheckOut.png")); - assertNotNull(undoCheckoutButton); - assertTrue(undoCheckoutButton.isEnabled()); - pressButton(undoCheckoutButton); + DockingActionIf undoCheckoutAction = getAction("UndoCheckOut"); + assertTrue(undoCheckoutAction.isEnabledForContext(dialog.getActionContext(null))); + performAction(undoCheckoutAction); waitForBusyTable(table); assertEquals(1, model.getRowCount()); @@ -651,11 +645,10 @@ public class VersionControlAction1Test extends AbstractVersionControlActionTest selectionModel.setSelectionInterval(0, 1); // both rows }); - JButton undoCheckoutButton = - findButtonByIcon(dialog, ResourceManager.loadImage("images/vcUndoCheckOut.png")); - assertNotNull(undoCheckoutButton); - assertTrue(undoCheckoutButton.isEnabled()); - pressButton(undoCheckoutButton); + DockingActionIf undoCheckoutAction = getAction("UndoCheckOut"); + ActionContext context = dialog.getActionContext(null); + assertTrue(undoCheckoutAction.isEnabledForContext(context)); + performAction(undoCheckoutAction, context, true); waitForBusyTable(table); assertEquals(0, model.getRowCount()); diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction2Test.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction2Test.java index 39b24dc9db..ae1e8bb9a9 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction2Test.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction2Test.java @@ -213,8 +213,9 @@ public class VersionControlAction2Test extends AbstractVersionControlActionTest waitForSwing(); waitForTasks(); - Program program = (Program) ((DomainFileNode) node).getDomainFile().getDomainObject(this, - true, false, TaskMonitor.DUMMY); + Program program = (Program) ((DomainFileNode) node).getDomainFile() + .getDomainObject(this, + true, false, TaskMonitor.DUMMY); int transactionID = program.startTransaction("test"); try { SymbolTable symTable = program.getSymbolTable(); @@ -410,7 +411,7 @@ public class VersionControlAction2Test extends AbstractVersionControlActionTest assertNotNull(dialog); - final GTable table = findComponent(dialog.getComponent(), GTable.class); + GTable table = findComponent(dialog.getComponent(), GTable.class); assertNotNull(table); waitForBusyTable(table); @@ -419,14 +420,11 @@ public class VersionControlAction2Test extends AbstractVersionControlActionTest selectInTable(table, node); - JButton checkInButton = - findButtonByIcon(dialog, ResourceManager.loadImage("images/vcCheckIn.png")); - - assertNotNull(checkInButton); - assertTrue(checkInButton.isEnabled()); - pressButton(checkInButton, false); + DockingActionIf checkInAction = getAction("CheckIn"); + ActionContext context = dialog.getActionContext(null); + assertTrue(checkInAction.isEnabledForContext(context)); + performAction(checkInAction, context, false); VersionControlDialog d = waitForDialogComponent(VersionControlDialog.class); - assertNotNull(d); pressButtonByText(d, "Cancel"); diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java index 3343e43c0e..15774baf56 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java @@ -117,7 +117,7 @@ public class ServerTestUtil { private static class ShutdownHook extends Thread { @Override public void run() { - Msg.debug(ServerTestUtil.class, "\n\n\n\n\tSHUTDONW HOOK RUNNING"); + Msg.debug(ServerTestUtil.class, "\n\n\n\n\tSHUTDOWN HOOK RUNNING"); disposeServer(); } }