mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-6870 - Updated the New Project Wizard to have better default focus
This commit is contained in:
@@ -29,6 +29,7 @@ import docking.widgets.label.GDLabel;
|
||||
import generic.theme.GThemeDefaults.Colors.Messages;
|
||||
import generic.theme.Gui;
|
||||
import ghidra.util.HelpLocation;
|
||||
import ghidra.util.Swing;
|
||||
import help.Help;
|
||||
import help.HelpService;
|
||||
import resources.Icons;
|
||||
@@ -193,6 +194,17 @@ public class WizardDialog extends DialogComponentProvider {
|
||||
HelpService help = Help.getHelpService();
|
||||
help.registerHelp(getComponent(), helpLocation);
|
||||
statusChanged();
|
||||
|
||||
initializeFocus(step);
|
||||
}
|
||||
|
||||
private void initializeFocus(WizardStep<?> step) {
|
||||
Component toFocus = step.getDefaultFocusComponent();
|
||||
if (toFocus != null) {
|
||||
Swing.runLater(() -> {
|
||||
toFocus.requestFocusInWindow();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void createButtons() {
|
||||
|
||||
@@ -112,6 +112,10 @@ public class ProjectAccessPanel extends JPanel {
|
||||
createMainPanel(knownUsers, anonymousServerAccessAllowed);
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return knownUsersPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the help location.
|
||||
*
|
||||
@@ -573,4 +577,5 @@ public class ProjectAccessPanel extends JPanel {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package ghidra.framework.main;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
@@ -49,6 +50,10 @@ public class ServerInfoComponent extends JPanel {
|
||||
buildMainPanel();
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return nameField;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the status listener
|
||||
* @param statusListener
|
||||
@@ -218,4 +223,5 @@ public class ServerInfoComponent extends JPanel {
|
||||
public boolean isValidInformation() {
|
||||
return checkServerName() && checkPortNumber();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -45,6 +46,11 @@ public class ProjectAccessStep extends WizardStep<ProjectWizardData> {
|
||||
this.tool = tool;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDefaultFocusComponent() {
|
||||
return panel.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(ProjectWizardData data) {
|
||||
setTitle("Specify Users for Repository: " + data.getRepositoryName());
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -55,4 +56,8 @@ public class ProjectTypePanel extends JPanel {
|
||||
boolean isSharedProject() {
|
||||
return sharedRB.isSelected();
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return nonSharedRB;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.Component;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
import docking.wizard.WizardModel;
|
||||
@@ -35,6 +37,11 @@ public class ProjectTypeStep extends WizardStep<ProjectWizardData> {
|
||||
panel = new ProjectTypePanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDefaultFocusComponent() {
|
||||
return panel.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(ProjectWizardData data) {
|
||||
// do nothing
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
@@ -53,6 +54,10 @@ public class RepositoryPanel extends JPanel {
|
||||
buildMainPanel(repositoryNames, readOnlyServerAccess);
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return nameList;
|
||||
}
|
||||
|
||||
public boolean isCreateRepositorySelected() {
|
||||
return createRepButton.isSelected();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@@ -42,6 +43,11 @@ public class RepositoryStep extends WizardStep<ProjectWizardData> {
|
||||
super(model, "", new HelpLocation(GenericHelpTopics.FRONT_END, "SelectRepository"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDefaultFocusComponent() {
|
||||
return panel.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(ProjectWizardData data) {
|
||||
ServerInfo serverInfo = data.getServerInfo();
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.io.File;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -64,6 +65,10 @@ public class SelectProjectPanel extends JPanel {
|
||||
buildMainPanel();
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return directoryField;
|
||||
}
|
||||
|
||||
void setProjectName(String projectName) {
|
||||
projectNameField.setText(projectName);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ package ghidra.framework.main.wizard.project;
|
||||
|
||||
import static ghidra.app.util.GenericHelpTopics.*;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.io.File;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
@@ -41,6 +42,11 @@ public class SelectProjectStep extends WizardStep<ProjectWizardData> {
|
||||
panel = new SelectProjectPanel(() -> notifyStatusChanged());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDefaultFocusComponent() {
|
||||
return panel.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(ProjectWizardData data) {
|
||||
boolean isShared = data.isSharedProject();
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
@@ -41,6 +42,10 @@ public class ServerInfoPanel extends JPanel {
|
||||
serverInfoComponent.setChangeListener(e -> statusChangedCallback.call());
|
||||
}
|
||||
|
||||
public Component getDefaultFocusComponent() {
|
||||
return serverInfoComponent.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
public boolean isValidInformation() {
|
||||
return serverInfoComponent.isValidInformation();
|
||||
}
|
||||
@@ -57,9 +62,6 @@ public class ServerInfoPanel extends JPanel {
|
||||
return serverInfoComponent.getPortNumber();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the field values using the given server info.
|
||||
*/
|
||||
public void setServerInfo(ServerInfo info) {
|
||||
serverInfoComponent.setServerInfo(info);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package ghidra.framework.main.wizard.project;
|
||||
|
||||
import java.awt.Component;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
import docking.wizard.WizardModel;
|
||||
@@ -40,6 +42,11 @@ public class ServerStep extends WizardStep<ProjectWizardData> {
|
||||
panel = new ServerInfoPanel(this::notifyStatusChanged);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDefaultFocusComponent() {
|
||||
return panel.getDefaultFocusComponent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(ProjectWizardData data) {
|
||||
if (panel.getServerName().isBlank()) {
|
||||
|
||||
Reference in New Issue
Block a user