Focus on design tables when tab switches
This commit is contained in:
parent
10231e3676
commit
65b824adcb
@ -4,9 +4,7 @@ import java.awt.*;
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseListener;
|
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -19,16 +17,12 @@ import java.net.URL;
|
|||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.BevelBorder;
|
import javax.swing.border.BevelBorder;
|
||||||
import javax.swing.border.TitledBorder;
|
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.TreeSelectionEvent;
|
|
||||||
import javax.swing.event.TreeSelectionListener;
|
|
||||||
import javax.swing.tree.DefaultTreeSelectionModel;
|
import javax.swing.tree.DefaultTreeSelectionModel;
|
||||||
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreePath;
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
import javax.swing.tree.TreeSelectionModel;
|
||||||
@ -68,13 +62,11 @@ import net.sf.openrocket.gui.util.Icons;
|
|||||||
import net.sf.openrocket.gui.util.OpenFileWorker;
|
import net.sf.openrocket.gui.util.OpenFileWorker;
|
||||||
import net.sf.openrocket.gui.util.SaveFileWorker;
|
import net.sf.openrocket.gui.util.SaveFileWorker;
|
||||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||||
import net.sf.openrocket.gui.widgets.SelectColorButton;
|
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.logging.Markers;
|
import net.sf.openrocket.logging.Markers;
|
||||||
import net.sf.openrocket.rocketcomponent.AxialStage;
|
import net.sf.openrocket.rocketcomponent.AxialStage;
|
||||||
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
||||||
import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
|
import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
|
||||||
import net.sf.openrocket.rocketcomponent.PodSet;
|
|
||||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
import net.sf.openrocket.rocketcomponent.Rocket;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
@ -107,8 +99,8 @@ public class BasicFrame extends JFrame {
|
|||||||
public static final int SHIFT_SHORTCUT_KEY = Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() |
|
public static final int SHIFT_SHORTCUT_KEY = Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() |
|
||||||
SHIFT_DOWN_MASK;
|
SHIFT_DOWN_MASK;
|
||||||
|
|
||||||
public static final int COMPONENT_TAB = 0;
|
public static final int DESIGN_TAB = 0;
|
||||||
public static final int CONFIGURATION_TAB = 1;
|
public static final int FLIGHT_CONFIGURATION_TAB = 1;
|
||||||
public static final int SIMULATION_TAB = 2;
|
public static final int SIMULATION_TAB = 2;
|
||||||
|
|
||||||
|
|
||||||
@ -1075,7 +1067,7 @@ public class BasicFrame extends JFrame {
|
|||||||
/**
|
/**
|
||||||
* Select the tab on the main pane.
|
* Select the tab on the main pane.
|
||||||
*
|
*
|
||||||
* @param tab one of {@link #COMPONENT_TAB} or {@link #SIMULATION_TAB}.
|
* @param tab one of {@link #DESIGN_TAB}, {@link #FLIGHT_CONFIGURATION_TAB} or {@link #SIMULATION_TAB}.
|
||||||
*/
|
*/
|
||||||
public void selectTab(int tab) {
|
public void selectTab(int tab) {
|
||||||
tabbedPane.setSelectedIndex(tab);
|
tabbedPane.setSelectedIndex(tab);
|
||||||
@ -1759,8 +1751,17 @@ public class BasicFrame extends JFrame {
|
|||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
JTabbedPane tabSource = (JTabbedPane) e.getSource();
|
JTabbedPane tabSource = (JTabbedPane) e.getSource();
|
||||||
int tab = tabSource.getSelectedIndex();
|
int tab = tabSource.getSelectedIndex();
|
||||||
if (tab == SIMULATION_TAB) {
|
switch (tab) {
|
||||||
simulationPanel.activating();
|
case DESIGN_TAB:
|
||||||
|
designPanel.takeTheSpotlight();
|
||||||
|
break;
|
||||||
|
case FLIGHT_CONFIGURATION_TAB:
|
||||||
|
flightConfigurationPanel.takeTheSpotlight();
|
||||||
|
break;
|
||||||
|
case SIMULATION_TAB:
|
||||||
|
simulationPanel.takeTheSpotlight();
|
||||||
|
simulationPanel.activating();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ import javax.swing.border.TitledBorder;
|
|||||||
import javax.swing.event.TreeSelectionEvent;
|
import javax.swing.event.TreeSelectionEvent;
|
||||||
import javax.swing.event.TreeSelectionListener;
|
import javax.swing.event.TreeSelectionListener;
|
||||||
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreePath;
|
||||||
|
import java.awt.Component;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
@ -48,11 +49,13 @@ import static net.sf.openrocket.gui.main.BasicFrame.SHORTCUT_KEY;
|
|||||||
*/
|
*/
|
||||||
public class DesignPanel extends JSplitPane {
|
public class DesignPanel extends JSplitPane {
|
||||||
private static final Translator trans = Application.getTranslator();
|
private static final Translator trans = Application.getTranslator();
|
||||||
|
private final Component tree;
|
||||||
|
|
||||||
public DesignPanel(final BasicFrame parent, final RocketPanel rocketpanel, final OpenRocketDocument document,
|
public DesignPanel(final BasicFrame parent, final RocketPanel rocketpanel, final OpenRocketDocument document,
|
||||||
final ComponentTree tree) {
|
final ComponentTree tree) {
|
||||||
super(JSplitPane.HORIZONTAL_SPLIT, true);
|
super(JSplitPane.HORIZONTAL_SPLIT, true);
|
||||||
setResizeWeight(0.5);
|
setResizeWeight(0.5);
|
||||||
|
this.tree = tree;
|
||||||
|
|
||||||
// Upper-left segment, component tree
|
// Upper-left segment, component tree
|
||||||
JPanel panel = new JPanel(new MigLayout("fill, flowy", "[grow][grow 0]","[grow]"));
|
JPanel panel = new JPanel(new MigLayout("fill, flowy", "[grow][grow 0]","[grow]"));
|
||||||
@ -225,4 +228,11 @@ public class DesignPanel extends JSplitPane {
|
|||||||
this.setRightComponent(panel);
|
this.setRightComponent(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Focus on the component tree.
|
||||||
|
*/
|
||||||
|
public void takeTheSpotlight() {
|
||||||
|
tree.requestFocusInWindow();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -119,12 +119,15 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
|
|||||||
switch (tabs.getSelectedIndex()) {
|
switch (tabs.getSelectedIndex()) {
|
||||||
case MOTOR_TAB_INDEX:
|
case MOTOR_TAB_INDEX:
|
||||||
motorConfigurationPanel.updateButtonState();
|
motorConfigurationPanel.updateButtonState();
|
||||||
|
motorConfigurationPanel.takeTheSpotlight();
|
||||||
break;
|
break;
|
||||||
case RECOVERY_TAB_INDEX:
|
case RECOVERY_TAB_INDEX:
|
||||||
recoveryConfigurationPanel.updateButtonState();
|
recoveryConfigurationPanel.updateButtonState();
|
||||||
|
motorConfigurationPanel.takeTheSpotlight();
|
||||||
break;
|
break;
|
||||||
case SEPARATION_TAB_INDEX:
|
case SEPARATION_TAB_INDEX:
|
||||||
separationConfigurationPanel.updateButtonState();
|
separationConfigurationPanel.updateButtonState();
|
||||||
|
motorConfigurationPanel.takeTheSpotlight();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -368,4 +371,21 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
|
|||||||
newOrDuplicateConfigAction(true);
|
newOrDuplicateConfigAction(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Focus on the table of the config panel that is currently opened.
|
||||||
|
*/
|
||||||
|
public void takeTheSpotlight() {
|
||||||
|
switch (tabs.getSelectedIndex()) {
|
||||||
|
case MOTOR_TAB_INDEX:
|
||||||
|
motorConfigurationPanel.takeTheSpotlight();
|
||||||
|
break;
|
||||||
|
case RECOVERY_TAB_INDEX:
|
||||||
|
recoveryConfigurationPanel.takeTheSpotlight();
|
||||||
|
break;
|
||||||
|
case SEPARATION_TAB_INDEX:
|
||||||
|
separationConfigurationPanel.takeTheSpotlight();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -578,7 +578,7 @@ public class RocketActions {
|
|||||||
parentFrame.selectTab(BasicFrame.SIMULATION_TAB);
|
parentFrame.selectTab(BasicFrame.SIMULATION_TAB);
|
||||||
} else {
|
} else {
|
||||||
deleteComponentAction.actionPerformed(e);
|
deleteComponentAction.actionPerformed(e);
|
||||||
parentFrame.selectTab(BasicFrame.COMPONENT_TAB);
|
parentFrame.selectTab(BasicFrame.DESIGN_TAB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,7 +632,7 @@ public class RocketActions {
|
|||||||
|
|
||||||
OpenRocketClipboard.setClipboard(copiedComponents);
|
OpenRocketClipboard.setClipboard(copiedComponents);
|
||||||
delete(components);
|
delete(components);
|
||||||
parentFrame.selectTab(BasicFrame.COMPONENT_TAB);
|
parentFrame.selectTab(BasicFrame.DESIGN_TAB);
|
||||||
} else if (isSimulationSelected()) {
|
} else if (isSimulationSelected()) {
|
||||||
|
|
||||||
Simulation[] simsCopy = new Simulation[sims.length];
|
Simulation[] simsCopy = new Simulation[sims.length];
|
||||||
@ -689,7 +689,7 @@ public class RocketActions {
|
|||||||
List<RocketComponent> copiedComponents = new LinkedList<>(copyComponentsMaintainParent(components));
|
List<RocketComponent> copiedComponents = new LinkedList<>(copyComponentsMaintainParent(components));
|
||||||
|
|
||||||
OpenRocketClipboard.setClipboard(copiedComponents);
|
OpenRocketClipboard.setClipboard(copiedComponents);
|
||||||
parentFrame.selectTab(BasicFrame.COMPONENT_TAB);
|
parentFrame.selectTab(BasicFrame.DESIGN_TAB);
|
||||||
} else if (sims != null && sims.length > 0) {
|
} else if (sims != null && sims.length > 0) {
|
||||||
Simulation[] simsCopy = new Simulation[sims.length];
|
Simulation[] simsCopy = new Simulation[sims.length];
|
||||||
for (int i=0; i < sims.length; i++) {
|
for (int i=0; i < sims.length; i++) {
|
||||||
@ -769,7 +769,7 @@ public class RocketActions {
|
|||||||
|
|
||||||
selectionModel.setSelectedComponents(successfullyPasted);
|
selectionModel.setSelectedComponents(successfullyPasted);
|
||||||
|
|
||||||
parentFrame.selectTab(BasicFrame.COMPONENT_TAB);
|
parentFrame.selectTab(BasicFrame.DESIGN_TAB);
|
||||||
|
|
||||||
} else if (sims != null) {
|
} else if (sims != null) {
|
||||||
|
|
||||||
@ -866,7 +866,7 @@ public class RocketActions {
|
|||||||
|
|
||||||
selectionModel.setSelectedComponents(duplicateComponents);
|
selectionModel.setSelectedComponents(duplicateComponents);
|
||||||
|
|
||||||
parentFrame.selectTab(BasicFrame.COMPONENT_TAB);
|
parentFrame.selectTab(BasicFrame.DESIGN_TAB);
|
||||||
} else if (sims != null && sims.length > 0) {
|
} else if (sims != null && sims.length > 0) {
|
||||||
ArrayList<Simulation> copySims = new ArrayList<Simulation>();
|
ArrayList<Simulation> copySims = new ArrayList<Simulation>();
|
||||||
|
|
||||||
|
@ -958,4 +958,14 @@ public class SimulationPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Focus on the simulation table
|
||||||
|
*/
|
||||||
|
public void takeTheSpotlight() {
|
||||||
|
simulationTable.requestFocusInWindow();
|
||||||
|
if (simulationTable.getRowCount() > 0) {
|
||||||
|
simulationTable.setRowSelectionInterval(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -331,4 +331,11 @@ public abstract class FlightConfigurablePanel<T extends FlightConfigurableCompon
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Focus on the table
|
||||||
|
*/
|
||||||
|
public void takeTheSpotlight() {
|
||||||
|
table.requestFocusInWindow();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user