mirror of https://github.com/rusefi/RomRaider.git
Editor Updates:
- "Compare to Table" menu is now populated. The sub menu item has the tables Rom name and the tooltip will display the table name. - Clicking a table name in the tree view will display the table or focus on the table. The table is no longer closed unless you click the x or select close from the menu. - The TableFrame now handles menu actions. - Removed TableFrame reference from TableMenuItem.
This commit is contained in:
parent
e305d8ab40
commit
44d958088c
|
@ -44,6 +44,7 @@ import java.awt.event.ActionEvent;
|
|||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyVetoException;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
|
@ -318,14 +319,17 @@ public class ECUEditor extends AbstractFrame {
|
|||
}
|
||||
|
||||
public void displayTable(TableFrame frame) {
|
||||
frame.setVisible(true);
|
||||
try {
|
||||
rightPanel.add(frame);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
// table is already open, so set focus
|
||||
frame.requestFocus();
|
||||
frame.toFront();
|
||||
try {
|
||||
frame.setSelected(true);
|
||||
} catch (PropertyVetoException e) {
|
||||
}
|
||||
frame.requestFocusInWindow();
|
||||
}
|
||||
//frame.setSize(frame.getTable().getFrameSize());
|
||||
frame.pack();
|
||||
rightPanel.repaint();
|
||||
}
|
||||
|
@ -436,11 +440,13 @@ public class ECUEditor extends AbstractFrame {
|
|||
rightPanel.repaint();
|
||||
}
|
||||
|
||||
public void refreshOpenTableMenus() {
|
||||
for(Object frame : ECUEditorManager.getECUEditor().getRightPanel().getAllFrames()) {
|
||||
if(frame instanceof TableFrame)
|
||||
{
|
||||
((TableFrame)frame).getTableMenuBar().refreshTableMenuBar();
|
||||
public void refreshTableCompareMenus() {
|
||||
for (int i = 0; i < imageRoot.getChildCount(); i++) {
|
||||
if(imageRoot.getChildAt(i) instanceof Rom) {
|
||||
Rom rom = (Rom) imageRoot.getChildAt(i);
|
||||
if(null != rom) {
|
||||
rom.refreshTableCompareMenus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -594,6 +600,9 @@ class CloseImageWorker extends SwingWorker<Void, Void> {
|
|||
// no other images open
|
||||
editor.setLastSelectedRom(null);
|
||||
}
|
||||
|
||||
editor.refreshTableCompareMenus();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -654,6 +663,8 @@ class OpenImageWorker extends SwingWorker<Void, Void> {
|
|||
|
||||
editor.addRom(rom);
|
||||
|
||||
editor.refreshTableCompareMenus();
|
||||
|
||||
editor.getStatusPanel().setStatus("Done loading image...");
|
||||
setProgress(100);
|
||||
return null;
|
||||
|
|
|
@ -350,6 +350,12 @@ public class Rom extends DefaultMutableTreeNode implements Serializable {
|
|||
this.isAbstract = isAbstract;
|
||||
}
|
||||
|
||||
public void refreshTableCompareMenus() {
|
||||
for(TableTreeNode tableNode : getTableNodes()) {
|
||||
tableNode.getFrame().refreshSimilarOpenTables();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultMutableTreeNode getChildAt(int i) {
|
||||
return (DefaultMutableTreeNode) super.getChildAt(i);
|
||||
|
|
|
@ -1346,16 +1346,16 @@ public abstract class Table extends JPanel implements Serializable {
|
|||
|
||||
public void addComparedToTable(Table table) {
|
||||
if(!table.equals(this) && !this.getComparedToTables().contains(table)) {
|
||||
comparedToTables.add(table);
|
||||
this.getComparedToTables().add(table);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshCompares() {
|
||||
if(null == comparedToTables || comparedToTables.size() < 1) {
|
||||
if(null == getComparedToTables() || getComparedToTables().size() < 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(Table table : comparedToTables) {
|
||||
for(Table table : getComparedToTables()) {
|
||||
if(null != table) {
|
||||
if(table.fillCompareValues()) {
|
||||
table.refreshCellDisplay();
|
||||
|
|
|
@ -49,11 +49,11 @@ public class CompareImagesForm extends JFrame implements ActionListener {
|
|||
private static final long serialVersionUID = -8937472127815934398L;
|
||||
private final Vector<Rom> roms;
|
||||
private final JPanel contentPane;
|
||||
private final JComboBox<Rom> comboBoxImageLeft;
|
||||
private final JComboBox<Rom> comboBoxImageRight;
|
||||
private final JComboBox comboBoxImageLeft;
|
||||
private final JComboBox comboBoxImageRight;
|
||||
private final JButton btnCompare;
|
||||
private final JList<ListItem> listChanges;
|
||||
private final DefaultListModel<ListItem> listModelChanges = new DefaultListModel<ListItem>();
|
||||
private final JList listChanges;
|
||||
private final DefaultListModel listModelChanges = new DefaultListModel();
|
||||
private final ChangeListCellRenderer changeRenderer = new ChangeListCellRenderer();
|
||||
private final JScrollPane scrollPaneResults;
|
||||
private final JLabel lblImageResultString;
|
||||
|
@ -80,13 +80,13 @@ public class CompareImagesForm extends JFrame implements ActionListener {
|
|||
panelImageSelector.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
|
||||
panelImageSelector.setLayout(null);
|
||||
|
||||
this.comboBoxImageLeft = new JComboBox<Rom>();
|
||||
this.comboBoxImageLeft = new JComboBox();
|
||||
this.comboBoxImageLeft.setBounds(10, 7, 554, 20);
|
||||
this.comboBoxImageLeft.setToolTipText("Select an image to compare.");
|
||||
this.comboBoxImageLeft.setRenderer( new ComboBoxRenderer() );
|
||||
panelImageSelector.add(this.comboBoxImageLeft);
|
||||
|
||||
this.comboBoxImageRight = new JComboBox<Rom>();
|
||||
this.comboBoxImageRight = new JComboBox();
|
||||
this.comboBoxImageRight.setBounds(10, 32, 554, 20);
|
||||
this.comboBoxImageRight.setToolTipText("Select an image to compare.");
|
||||
this.comboBoxImageRight.setRenderer( new ComboBoxRenderer() );
|
||||
|
@ -110,7 +110,7 @@ public class CompareImagesForm extends JFrame implements ActionListener {
|
|||
scrollPaneResults.setBounds(10, 166, 574, 245);
|
||||
contentPane.add(scrollPaneResults);
|
||||
|
||||
this.listChanges = new JList<ListItem>(this.listModelChanges);
|
||||
this.listChanges = new JList(this.listModelChanges);
|
||||
scrollPaneResults.setViewportView(this.listChanges);
|
||||
listChanges.setCellRenderer(changeRenderer);
|
||||
listChanges.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
|
||||
|
|
|
@ -64,8 +64,16 @@ public class MDIDesktopPane extends JDesktopPane {
|
|||
int w;
|
||||
int h;
|
||||
|
||||
// check if frame has been added.
|
||||
for(JInternalFrame curFrame : array) {
|
||||
if(curFrame.equals(frame)) {
|
||||
throw new IllegalArgumentException("The frame has been added.");
|
||||
}
|
||||
}
|
||||
|
||||
Component retval = super.add(frame);
|
||||
checkDesktopSize();
|
||||
|
||||
if (array.length > 0) {
|
||||
p = array[0].getLocation();
|
||||
p.x = p.x + Settings.FRAME_OFFSET;
|
||||
|
@ -73,6 +81,7 @@ public class MDIDesktopPane extends JDesktopPane {
|
|||
} else {
|
||||
p = new Point(0, 0);
|
||||
}
|
||||
|
||||
frame.setLocation(p.x, p.y);
|
||||
if (frame.isResizable()) {
|
||||
w = getWidth() - (getWidth() / 3);
|
||||
|
@ -85,15 +94,21 @@ public class MDIDesktopPane extends JDesktopPane {
|
|||
}
|
||||
frame.setSize(w, h);
|
||||
}
|
||||
|
||||
moveToFront(frame);
|
||||
frame.setVisible(true);
|
||||
TableFrame tableFrame = (TableFrame) frame;
|
||||
getEditor().updateTableToolBar(tableFrame.getTable());
|
||||
|
||||
if(frame instanceof TableFrame) {
|
||||
TableFrame tableFrame = (TableFrame) frame;
|
||||
getEditor().updateTableToolBar(tableFrame.getTable());
|
||||
}
|
||||
|
||||
try {
|
||||
frame.setSelected(true);
|
||||
} catch (PropertyVetoException e) {
|
||||
frame.toBack();
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,14 +24,12 @@ import java.awt.event.ActionEvent;
|
|||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.Enumeration;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
import javax.swing.JTree;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
|
||||
import com.romraider.editor.ecu.ECUEditor;
|
||||
import com.romraider.editor.ecu.ECUEditorManager;
|
||||
|
@ -57,7 +55,8 @@ public class RomTree extends JTree implements MouseListener {
|
|||
public void actionPerformed(ActionEvent e) {
|
||||
try{
|
||||
Object selectedRow = getSelectionPath().getLastPathComponent();
|
||||
showHideTable(selectedRow);
|
||||
showTable(selectedRow);
|
||||
setLastSelectedRom(selectedRow);
|
||||
}catch(NullPointerException ex) {
|
||||
}
|
||||
}
|
||||
|
@ -79,14 +78,14 @@ public class RomTree extends JTree implements MouseListener {
|
|||
Object selectedRow = getPathForLocation(e.getX(), e.getY()).getLastPathComponent();
|
||||
|
||||
if (e.getClickCount() >= getEditor().getSettings().getTableClickCount()) {
|
||||
showHideTable(selectedRow);
|
||||
showTable(selectedRow);
|
||||
}
|
||||
setLastSelectedRom(selectedRow);
|
||||
}catch(NullPointerException ex) {
|
||||
}
|
||||
}
|
||||
|
||||
private void showHideTable(Object selectedRow) {
|
||||
private void showTable(Object selectedRow) {
|
||||
try{
|
||||
if(selectedRow instanceof TableTreeNode) {
|
||||
TableTreeNode node = (TableTreeNode) selectedRow;
|
||||
|
@ -128,8 +127,4 @@ public class RomTree extends JTree implements MouseListener {
|
|||
public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDescendantToggledPaths(Enumeration<TreePath> toRemove) {
|
||||
super.removeDescendantToggledPaths(toRemove);
|
||||
}
|
||||
}
|
|
@ -21,16 +21,24 @@ package com.romraider.swing;
|
|||
|
||||
import static javax.swing.BorderFactory.createBevelBorder;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JInternalFrame;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JRadioButtonMenuItem;
|
||||
import javax.swing.event.InternalFrameEvent;
|
||||
import javax.swing.event.InternalFrameListener;
|
||||
|
||||
import com.romraider.Settings;
|
||||
import com.romraider.editor.ecu.ECUEditor;
|
||||
import com.romraider.editor.ecu.ECUEditorManager;
|
||||
import com.romraider.logger.ecu.ui.handler.table.TableUpdateHandler;
|
||||
import com.romraider.maps.Rom;
|
||||
import com.romraider.maps.Table;
|
||||
|
||||
public class TableFrame extends JInternalFrame implements InternalFrameListener {
|
||||
public class TableFrame extends JInternalFrame implements InternalFrameListener, ActionListener {
|
||||
|
||||
private static final long serialVersionUID = -2651279694660392351L;
|
||||
private final Table table;
|
||||
|
@ -47,7 +55,7 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener
|
|||
setVisible(false);
|
||||
tableMenuBar = new TableMenuBar(this);
|
||||
setJMenuBar(tableMenuBar);
|
||||
setDefaultCloseOperation(HIDE_ON_CLOSE);
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
addInternalFrameListener(this);
|
||||
}
|
||||
|
||||
|
@ -101,4 +109,133 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener
|
|||
public TableMenuBar getTableMenuBar() {
|
||||
return this.tableMenuBar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
TableMenuBar menu = getTableMenuBar();
|
||||
|
||||
if (e.getSource() == menu.getUndoAll()) {
|
||||
getTable().undoAll();
|
||||
|
||||
} else if (e.getSource() == menu.getRevert()) {
|
||||
getTable().setRevertPoint();
|
||||
|
||||
} else if (e.getSource() == menu.getUndoSel()) {
|
||||
getTable().undoSelected();
|
||||
|
||||
} else if (e.getSource() == menu.getClose()) {
|
||||
ECUEditorManager.getECUEditor().removeDisplayTable(this);
|
||||
|
||||
} else if (e.getSource() == menu.getTableProperties()) {
|
||||
JOptionPane.showMessageDialog(getTable(), new TablePropertyPanel(getTable()),
|
||||
getTable().getName() + " Table Properties", JOptionPane.INFORMATION_MESSAGE);
|
||||
|
||||
} else if (e.getSource() == menu.getCopySel()) {
|
||||
getTable().copySelection();
|
||||
|
||||
} else if (e.getSource() == menu.getCopyTable()) {
|
||||
getTable().copyTable();
|
||||
|
||||
} else if (e.getSource() == menu.getPaste()) {
|
||||
getTable().paste();
|
||||
|
||||
} else if (e.getSource() == menu.getCompareOff()) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_OFF);
|
||||
|
||||
} else if (e.getSource() == menu.getCompareAbsolute()) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_ABSOLUTE);
|
||||
|
||||
} else if (e.getSource() == menu.getComparePercent()) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_PERCENT);
|
||||
|
||||
} else if (e.getSource() == menu.getCompareOriginal()) {
|
||||
getTable().setCompareType(Settings.DATA_TYPE_ORIGINAL);
|
||||
getTableMenuBar().getCompareToOriginal().setSelected(true);
|
||||
compareByTable(getTable());
|
||||
|
||||
} else if (e.getSource() == menu.getCompareMap()) {
|
||||
JTableChooser chooser = new JTableChooser();
|
||||
Table selectedTable = chooser.showChooser(getTable());
|
||||
if(null != selectedTable) {
|
||||
compareByTable(selectedTable);
|
||||
}
|
||||
|
||||
} else if (e.getSource() instanceof TableMenuItem) {
|
||||
Table selectedTable = findSimilarTable((TableMenuItem)e.getSource());
|
||||
if(null != e.getSource()) {
|
||||
compareByTable(selectedTable);
|
||||
}
|
||||
|
||||
} else if (e.getSource() == menu.getCompareToOriginal()) {
|
||||
compareByType(Settings.DATA_TYPE_ORIGINAL);
|
||||
|
||||
} else if (e.getSource() == menu.getCompareToBin()) {
|
||||
compareByType(Settings.DATA_TYPE_BIN);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void compareByTable(Table selectedTable) {
|
||||
if(null == selectedTable) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(getTable().getCompareDisplay() == Settings.COMPARE_DISPLAY_OFF) {
|
||||
// Default to absolute if none selected.
|
||||
getTableMenuBar().getCompareAbsolute().setSelected(true);
|
||||
getTable().setCompareDisplay(Settings.COMPARE_DISPLAY_ABSOLUTE);
|
||||
}
|
||||
|
||||
selectedTable.addComparedToTable(getTable());
|
||||
|
||||
getTable().setCompareTable(selectedTable);
|
||||
if(getTable().fillCompareValues()) {
|
||||
getTable().refreshCellDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
public void compareByDisplay(int compareDisplay) {
|
||||
getTable().setCompareDisplay(compareDisplay);
|
||||
getTable().refreshCellDisplay();
|
||||
}
|
||||
|
||||
public void refreshSimilarOpenTables() {
|
||||
JMenu similarTables = getTableMenuBar().getSimilarOpenTables();
|
||||
similarTables.removeAll();
|
||||
|
||||
for(Rom rom : ECUEditorManager.getECUEditor().getImages()) {
|
||||
for(TableTreeNode tableNode : rom.getTableNodes()) {
|
||||
if(tableNode.getTable().getName().equalsIgnoreCase(getTable().getName())) {
|
||||
JRadioButtonMenuItem similarTable = new TableMenuItem(rom.getFileName());
|
||||
similarTable.setToolTipText(tableNode.getFrame().getTable().getName());
|
||||
similarTable.addActionListener(this);
|
||||
similarTables.add(similarTable);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getTableMenuBar().initCompareGroup();
|
||||
getTableMenuBar().repaint();
|
||||
}
|
||||
|
||||
private Table findSimilarTable(TableMenuItem menuItem) {
|
||||
for(Rom rom : ECUEditorManager.getECUEditor().getImages()) {
|
||||
if(menuItem.getText().equalsIgnoreCase(rom.getFileName())) {
|
||||
for(TableTreeNode treeNode : rom.getTableNodes()) {
|
||||
if(menuItem.getToolTipText().equalsIgnoreCase(treeNode.getFrame().getTable().getName())) {
|
||||
return treeNode.getFrame().getTable();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void compareByType(int compareType) {
|
||||
getTable().setCompareType(compareType);
|
||||
if(getTable().fillCompareValues()) {
|
||||
getTable().refreshCellDisplay();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,27 +19,18 @@
|
|||
|
||||
package com.romraider.swing;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.ButtonGroup;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JRadioButtonMenuItem;
|
||||
import javax.swing.JSeparator;
|
||||
|
||||
import com.romraider.Settings;
|
||||
import com.romraider.editor.ecu.ECUEditorManager;
|
||||
import com.romraider.maps.Rom;
|
||||
import com.romraider.maps.Table;
|
||||
|
||||
public class TableMenuBar extends JMenuBar implements ActionListener {
|
||||
public class TableMenuBar extends JMenuBar {
|
||||
|
||||
private static final long serialVersionUID = -695692646459410510L;
|
||||
private final TableFrame tableFrame;
|
||||
private JMenu fileMenu;
|
||||
private JMenuItem graph;
|
||||
//private JRadioButtonMenuItem overlay = new JRadioButtonMenuItem("Overlay Log");
|
||||
|
@ -71,300 +62,301 @@ public class TableMenuBar extends JMenuBar implements ActionListener {
|
|||
private ButtonGroup compareDisplayGroup;
|
||||
private ButtonGroup compareToGroup;
|
||||
|
||||
public TableMenuBar(TableFrame tableFrame) {
|
||||
this.tableFrame = tableFrame;
|
||||
initTableMenuBar();
|
||||
public TableMenuBar(TableFrame frame) {
|
||||
initFileMenu(frame);
|
||||
initEditMenu(frame);
|
||||
initViewMenu(frame);
|
||||
applyTableTypeRules(frame);
|
||||
}
|
||||
|
||||
public void initTableMenuBar() {
|
||||
initFileMenu();
|
||||
initEditMenu();
|
||||
initViewMenu();
|
||||
applyTableTypeRules();
|
||||
}
|
||||
|
||||
public void refreshTableMenuBar() {
|
||||
refreshSimilarOpenTables();
|
||||
initCompareGroup();
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void initFileMenu() {
|
||||
private void initFileMenu(TableFrame frame) {
|
||||
fileMenu = new JMenu("Table");
|
||||
graph = new JMenuItem("View Graph");
|
||||
compareMenu = new JMenu("Compare");
|
||||
close = new JMenuItem("Close Table");
|
||||
setClose(new JMenuItem("Close Table"));
|
||||
|
||||
initCompareMenu();
|
||||
close.setText("Close " + getTable().getName());
|
||||
initCompareMenu(frame);
|
||||
getClose().setText("Close " + frame.getTable().getName());
|
||||
|
||||
graph.addActionListener(this);
|
||||
close.addActionListener(this);
|
||||
graph.addActionListener(frame);
|
||||
getClose().addActionListener(frame);
|
||||
|
||||
graph.setMnemonic('G');
|
||||
close.setMnemonic('X');
|
||||
getClose().setMnemonic('X');
|
||||
graph.setEnabled(false);
|
||||
|
||||
fileMenu.add(graph);
|
||||
fileMenu.add(compareMenu);
|
||||
fileMenu.add(new JSeparator());
|
||||
fileMenu.add(close);
|
||||
fileMenu.add(getClose());
|
||||
|
||||
this.add(fileMenu);
|
||||
}
|
||||
|
||||
private void initEditMenu() {
|
||||
private void initEditMenu(TableFrame frame) {
|
||||
editMenu = new JMenu("Edit");
|
||||
undoSel = new JMenuItem("Undo Selected Changes");
|
||||
undoAll = new JMenuItem("Undo All Changes");
|
||||
revert = new JMenuItem("Set Revert Point");
|
||||
copySel = new JMenuItem("Copy Selection");
|
||||
copyTable = new JMenuItem("Copy Table");
|
||||
paste = new JMenuItem("Paste");
|
||||
setUndoSel(new JMenuItem("Undo Selected Changes"));
|
||||
setUndoAll(new JMenuItem("Undo All Changes"));
|
||||
setRevert(new JMenuItem("Set Revert Point"));
|
||||
setCopySel(new JMenuItem("Copy Selection"));
|
||||
setCopyTable(new JMenuItem("Copy Table"));
|
||||
setPaste(new JMenuItem("Paste"));
|
||||
|
||||
editMenu.add(undoSel);
|
||||
editMenu.add(undoAll);
|
||||
editMenu.add(revert);
|
||||
editMenu.add(getUndoSel());
|
||||
editMenu.add(getUndoAll());
|
||||
editMenu.add(getRevert());
|
||||
editMenu.add(new JSeparator());
|
||||
editMenu.add(copySel);
|
||||
editMenu.add(copyTable);
|
||||
editMenu.add(getCopySel());
|
||||
editMenu.add(getCopyTable());
|
||||
editMenu.add(new JSeparator());
|
||||
editMenu.add(paste);
|
||||
editMenu.add(getPaste());
|
||||
|
||||
editMenu.setMnemonic('E');
|
||||
undoSel.setMnemonic('U');
|
||||
undoAll.setMnemonic('A');
|
||||
revert.setMnemonic('R');
|
||||
copySel.setMnemonic('C');
|
||||
copyTable.setMnemonic('T');
|
||||
paste.setMnemonic('P');
|
||||
getUndoSel().setMnemonic('U');
|
||||
getUndoAll().setMnemonic('A');
|
||||
getRevert().setMnemonic('R');
|
||||
getCopySel().setMnemonic('C');
|
||||
getCopyTable().setMnemonic('T');
|
||||
getPaste().setMnemonic('P');
|
||||
|
||||
undoSel.addActionListener(this);
|
||||
undoAll.addActionListener(this);
|
||||
revert.addActionListener(this);
|
||||
copySel.addActionListener(this);
|
||||
copyTable.addActionListener(this);
|
||||
paste.addActionListener(this);
|
||||
getUndoSel().addActionListener(frame);
|
||||
getUndoAll().addActionListener(frame);
|
||||
getRevert().addActionListener(frame);
|
||||
getCopySel().addActionListener(frame);
|
||||
getCopyTable().addActionListener(frame);
|
||||
getPaste().addActionListener(frame);
|
||||
this.add(editMenu);
|
||||
}
|
||||
|
||||
private void initViewMenu() {
|
||||
tableProperties = new JMenuItem("Table Properties");
|
||||
private void initViewMenu(TableFrame frame) {
|
||||
setTableProperties(new JMenuItem("Table Properties"));
|
||||
|
||||
viewMenu = new JMenu("View");
|
||||
viewMenu.add(tableProperties);
|
||||
viewMenu.add(getTableProperties());
|
||||
viewMenu.setMnemonic('V');
|
||||
tableProperties.setMnemonic('P');
|
||||
tableProperties.addActionListener(this);
|
||||
getTableProperties().setMnemonic('P');
|
||||
getTableProperties().addActionListener(frame);
|
||||
|
||||
fileMenu.setMnemonic('F');
|
||||
fileMenu.setMnemonic('T');
|
||||
this.add(viewMenu);
|
||||
}
|
||||
|
||||
private void initCompareMenu() {
|
||||
compareOriginal = new JRadioButtonMenuItem("Show Changes");
|
||||
compareOriginal.setToolTipText("Compares the current values to the original or revert point values.");
|
||||
compareMap = new JRadioButtonMenuItem("Compare to Another Map");
|
||||
compareMap.setToolTipText("Compares this table and a selected table.");
|
||||
similarOpenTables = new JMenu("Compare to Table");
|
||||
similarOpenTables.setToolTipText("Compares this table to a similar table.");
|
||||
private void initCompareMenu(TableFrame frame) {
|
||||
setCompareOriginal(new JRadioButtonMenuItem("Show Changes"));
|
||||
getCompareOriginal().setToolTipText("Compares the current values to the original or revert point values.");
|
||||
setCompareMap(new JRadioButtonMenuItem("Compare to Another Map"));
|
||||
getCompareMap().setToolTipText("Compares this table and a selected table.");
|
||||
setSimilarOpenTables(new JMenu("Compare to Table"));
|
||||
getSimilarOpenTables().setToolTipText("Compares this table to a similar table.");
|
||||
|
||||
compareOff = new JRadioButtonMenuItem("Off");
|
||||
setCompareOff(new JRadioButtonMenuItem("Off"));
|
||||
|
||||
comparePercent = new JRadioButtonMenuItem("Percent Difference");
|
||||
compareAbsolute = new JRadioButtonMenuItem("Absolute Difference");
|
||||
setComparePercent(new JRadioButtonMenuItem("Percent Difference"));
|
||||
setCompareAbsolute(new JRadioButtonMenuItem("Absolute Difference"));
|
||||
compareDisplayGroup = new ButtonGroup();
|
||||
compareDisplayGroup.add(comparePercent);
|
||||
compareDisplayGroup.add(compareAbsolute);
|
||||
compareDisplayGroup.add(getComparePercent());
|
||||
compareDisplayGroup.add(getCompareAbsolute());
|
||||
compareDisplay = new JMenu("Display");
|
||||
compareDisplay.add(comparePercent);
|
||||
compareDisplay.add(compareAbsolute);
|
||||
compareDisplay.add(getComparePercent());
|
||||
compareDisplay.add(getCompareAbsolute());
|
||||
|
||||
compareToOriginal = new JRadioButtonMenuItem("Compre to Original Value");
|
||||
compareToOriginal.setToolTipText("Compares this table to the selected table's original or revert point values.");
|
||||
compareToBin = new JRadioButtonMenuItem("Compare to Bin Value");
|
||||
compareToBin.setToolTipText("Compares this table to the selected table's current values.");
|
||||
setCompareToOriginal(new JRadioButtonMenuItem("Compre to Original Value"));
|
||||
getCompareToOriginal().setToolTipText("Compares this table to the selected table's original or revert point values.");
|
||||
setCompareToBin(new JRadioButtonMenuItem("Compare to Bin Value"));
|
||||
getCompareToBin().setToolTipText("Compares this table to the selected table's current values.");
|
||||
compareToGroup = new ButtonGroup();
|
||||
compareToGroup.add(compareToOriginal);
|
||||
compareToGroup.add(compareToBin);
|
||||
compareToGroup.add(getCompareToOriginal());
|
||||
compareToGroup.add(getCompareToBin());
|
||||
compareToValue = new JMenu("Compare to");
|
||||
compareToValue.add(compareToOriginal);
|
||||
compareToValue.add(compareToBin);
|
||||
compareToValue.add(getCompareToOriginal());
|
||||
compareToValue.add(getCompareToBin());
|
||||
|
||||
compareMenu.add(compareOriginal);
|
||||
compareMenu.add(compareMap);
|
||||
compareMenu.add(similarOpenTables);
|
||||
compareMenu.add(compareOff);
|
||||
compareMenu.add(getCompareOriginal());
|
||||
compareMenu.add(getCompareMap());
|
||||
compareMenu.add(getSimilarOpenTables());
|
||||
compareMenu.add(getCompareOff());
|
||||
compareMenu.add(new JSeparator());
|
||||
compareMenu.add(compareDisplay);
|
||||
compareMenu.add(new JSeparator());
|
||||
compareMenu.add(compareToValue);
|
||||
|
||||
compareMenu.setMnemonic('C');
|
||||
compareOriginal.setMnemonic('C');
|
||||
compareMap.setMnemonic('M');
|
||||
compareOff.setMnemonic('O');
|
||||
getCompareOriginal().setMnemonic('C');
|
||||
getCompareMap().setMnemonic('M');
|
||||
getCompareOff().setMnemonic('O');
|
||||
compareDisplay.setMnemonic('D');
|
||||
comparePercent.setMnemonic('P');
|
||||
compareAbsolute.setMnemonic('A');
|
||||
similarOpenTables.setMnemonic('S');
|
||||
getComparePercent().setMnemonic('P');
|
||||
getCompareAbsolute().setMnemonic('A');
|
||||
getSimilarOpenTables().setMnemonic('S');
|
||||
compareToValue.setMnemonic('T');
|
||||
compareToOriginal.setMnemonic('R');
|
||||
compareToOriginal.setMnemonic('B');
|
||||
getCompareToOriginal().setMnemonic('R');
|
||||
getCompareToOriginal().setMnemonic('B');
|
||||
|
||||
compareOff.setSelected(true);
|
||||
compareAbsolute.setSelected(true);
|
||||
compareToOriginal.setSelected(true);
|
||||
getCompareOff().setSelected(true);
|
||||
getCompareAbsolute().setSelected(true);
|
||||
getCompareToOriginal().setSelected(true);
|
||||
|
||||
initCompareGroup();
|
||||
|
||||
compareOriginal.addActionListener(this);
|
||||
compareMap.addActionListener(this);
|
||||
compareOff.addActionListener(this);
|
||||
comparePercent.addActionListener(this);
|
||||
compareAbsolute.addActionListener(this);
|
||||
compareToOriginal.addActionListener(this);
|
||||
compareToBin.addActionListener(this);
|
||||
getCompareOriginal().addActionListener(frame);
|
||||
getCompareMap().addActionListener(frame);
|
||||
getCompareOff().addActionListener(frame);
|
||||
getComparePercent().addActionListener(frame);
|
||||
getCompareAbsolute().addActionListener(frame);
|
||||
getCompareToOriginal().addActionListener(frame);
|
||||
getCompareToBin().addActionListener(frame);
|
||||
}
|
||||
|
||||
private void initCompareGroup() {
|
||||
public void initCompareGroup() {
|
||||
compareGroup = new ButtonGroup();
|
||||
|
||||
compareGroup.add(compareOriginal);
|
||||
compareGroup.add(compareMap);
|
||||
compareGroup.add(compareOff);
|
||||
compareGroup.add(getCompareOriginal());
|
||||
compareGroup.add(getCompareMap());
|
||||
compareGroup.add(getCompareOff());
|
||||
|
||||
for(int i = 0; i< similarOpenTables.getItemCount(); i++) {
|
||||
compareGroup.add(similarOpenTables.getItem(i));
|
||||
for(int i = 0; i< getSimilarOpenTables().getItemCount(); i++) {
|
||||
compareGroup.add(getSimilarOpenTables().getItem(i));
|
||||
}
|
||||
}
|
||||
|
||||
private void applyTableTypeRules() {
|
||||
private void applyTableTypeRules(TableFrame frame) {
|
||||
// Hide items that don't work with a DTC tables.
|
||||
if(getTable().getType() == Settings.TABLE_SWITCH) {
|
||||
if(frame.getTable().getType() == Settings.TABLE_SWITCH) {
|
||||
editMenu.setEnabled(false);
|
||||
compareOriginal.setEnabled(false);
|
||||
comparePercent.setEnabled(false);
|
||||
compareAbsolute.setEnabled(false);
|
||||
compareToOriginal.setEnabled(false);
|
||||
compareToBin.setEnabled(false);
|
||||
getCompareOriginal().setEnabled(false);
|
||||
getComparePercent().setEnabled(false);
|
||||
getCompareAbsolute().setEnabled(false);
|
||||
getCompareToOriginal().setEnabled(false);
|
||||
getCompareToBin().setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshSimilarOpenTables() {
|
||||
similarOpenTables.removeAll();
|
||||
String currentTableName = getTable().getName();
|
||||
Vector<Rom> roms = ECUEditorManager.getECUEditor().getImages();
|
||||
|
||||
for(Rom rom : roms) {
|
||||
for(TableTreeNode tableNode : rom.getTableNodes()) {
|
||||
if(tableNode.getTable().getName().equalsIgnoreCase(currentTableName)) {
|
||||
JRadioButtonMenuItem similarTable = new TableMenuItem(tableNode.getFrame());
|
||||
similarTable.addActionListener(this);
|
||||
similarOpenTables.add(similarTable);
|
||||
}
|
||||
}
|
||||
}
|
||||
public JMenuItem getUndoAll() {
|
||||
return undoAll;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (e.getSource() == undoAll) {
|
||||
getTable().undoAll();
|
||||
|
||||
} else if (e.getSource() == revert) {
|
||||
getTable().setRevertPoint();
|
||||
|
||||
} else if (e.getSource() == undoSel) {
|
||||
getTable().undoSelected();
|
||||
|
||||
} else if (e.getSource() == close) {
|
||||
ECUEditorManager.getECUEditor().removeDisplayTable(tableFrame);
|
||||
|
||||
} else if (e.getSource() == tableProperties) {
|
||||
JOptionPane.showMessageDialog(getTable(), new TablePropertyPanel(getTable()),
|
||||
getTable().getName() + " Table Properties", JOptionPane.INFORMATION_MESSAGE);
|
||||
|
||||
} else if (e.getSource() == copySel) {
|
||||
getTable().copySelection();
|
||||
|
||||
} else if (e.getSource() == copyTable) {
|
||||
getTable().copyTable();
|
||||
|
||||
} else if (e.getSource() == paste) {
|
||||
getTable().paste();
|
||||
|
||||
} else if (e.getSource() == compareOff) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_OFF);
|
||||
|
||||
} else if (e.getSource() == compareAbsolute) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_ABSOLUTE);
|
||||
|
||||
} else if (e.getSource() == comparePercent) {
|
||||
compareByDisplay(Settings.COMPARE_DISPLAY_PERCENT);
|
||||
|
||||
} else if (e.getSource() == compareOriginal) {
|
||||
getTable().setCompareType(Settings.DATA_TYPE_ORIGINAL);
|
||||
compareToOriginal.setSelected(true);
|
||||
compareByTable(getTable());
|
||||
|
||||
} else if (e.getSource() == compareMap) {
|
||||
JTableChooser chooser = new JTableChooser();
|
||||
Table selectedTable = chooser.showChooser(getTable());
|
||||
if(null != selectedTable) {
|
||||
compareByTable(selectedTable);
|
||||
}
|
||||
|
||||
} else if (e.getSource() instanceof TableMenuItem) {
|
||||
Table selectedTable = ((TableMenuItem) e.getSource()).getFrame().getTable();
|
||||
compareByTable(selectedTable);
|
||||
|
||||
} else if (e.getSource() == compareToOriginal) {
|
||||
compareByType(Settings.DATA_TYPE_ORIGINAL);
|
||||
|
||||
} else if (e.getSource() == compareToBin) {
|
||||
compareByType(Settings.DATA_TYPE_BIN);
|
||||
|
||||
}
|
||||
public void setUndoAll(JMenuItem undoAll) {
|
||||
this.undoAll = undoAll;
|
||||
}
|
||||
|
||||
private void compareByType(int compareType) {
|
||||
getTable().setCompareType(compareType);
|
||||
if(getTable().fillCompareValues()) {
|
||||
getTable().refreshCellDisplay();
|
||||
}
|
||||
public JMenuItem getRevert() {
|
||||
return revert;
|
||||
}
|
||||
|
||||
private void compareByTable(Table selectedTable) {
|
||||
if(null == selectedTable) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(getTable().getCompareDisplay() == Settings.COMPARE_DISPLAY_OFF) {
|
||||
// Default to absolute if none selected.
|
||||
this.compareAbsolute.setSelected(true);
|
||||
getTable().setCompareDisplay(Settings.COMPARE_DISPLAY_ABSOLUTE);
|
||||
}
|
||||
|
||||
selectedTable.addComparedToTable(getTable());
|
||||
|
||||
getTable().setCompareTable(selectedTable);
|
||||
if(getTable().fillCompareValues()) {
|
||||
getTable().refreshCellDisplay();
|
||||
}
|
||||
public void setRevert(JMenuItem revert) {
|
||||
this.revert = revert;
|
||||
}
|
||||
|
||||
public void compareByDisplay(int compareDisplay) {
|
||||
getTable().setCompareDisplay(compareDisplay);
|
||||
getTable().refreshCellDisplay();
|
||||
public JMenuItem getUndoSel() {
|
||||
return undoSel;
|
||||
}
|
||||
|
||||
private Table getTable() {
|
||||
return this.getTableFrame().getTable();
|
||||
public void setUndoSel(JMenuItem undoSel) {
|
||||
this.undoSel = undoSel;
|
||||
}
|
||||
|
||||
private TableFrame getTableFrame() {
|
||||
return this.tableFrame;
|
||||
public JMenuItem getClose() {
|
||||
return close;
|
||||
}
|
||||
|
||||
public void setClose(JMenuItem close) {
|
||||
this.close = close;
|
||||
}
|
||||
|
||||
public JMenuItem getTableProperties() {
|
||||
return tableProperties;
|
||||
}
|
||||
|
||||
public void setTableProperties(JMenuItem tableProperties) {
|
||||
this.tableProperties = tableProperties;
|
||||
}
|
||||
|
||||
public JMenuItem getCopySel() {
|
||||
return copySel;
|
||||
}
|
||||
|
||||
public void setCopySel(JMenuItem copySel) {
|
||||
this.copySel = copySel;
|
||||
}
|
||||
|
||||
public JMenuItem getCopyTable() {
|
||||
return copyTable;
|
||||
}
|
||||
|
||||
public void setCopyTable(JMenuItem copyTable) {
|
||||
this.copyTable = copyTable;
|
||||
}
|
||||
|
||||
public JMenuItem getPaste() {
|
||||
return paste;
|
||||
}
|
||||
|
||||
public void setPaste(JMenuItem paste) {
|
||||
this.paste = paste;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareOff() {
|
||||
return compareOff;
|
||||
}
|
||||
|
||||
public void setCompareOff(JRadioButtonMenuItem compareOff) {
|
||||
this.compareOff = compareOff;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareAbsolute() {
|
||||
return compareAbsolute;
|
||||
}
|
||||
|
||||
public void setCompareAbsolute(JRadioButtonMenuItem compareAbsolute) {
|
||||
this.compareAbsolute = compareAbsolute;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getComparePercent() {
|
||||
return comparePercent;
|
||||
}
|
||||
|
||||
public void setComparePercent(JRadioButtonMenuItem comparePercent) {
|
||||
this.comparePercent = comparePercent;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareOriginal() {
|
||||
return compareOriginal;
|
||||
}
|
||||
|
||||
public void setCompareOriginal(JRadioButtonMenuItem compareOriginal) {
|
||||
this.compareOriginal = compareOriginal;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareToOriginal() {
|
||||
return compareToOriginal;
|
||||
}
|
||||
|
||||
public void setCompareToOriginal(JRadioButtonMenuItem compareToOriginal) {
|
||||
this.compareToOriginal = compareToOriginal;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareMap() {
|
||||
return compareMap;
|
||||
}
|
||||
|
||||
public void setCompareMap(JRadioButtonMenuItem compareMap) {
|
||||
this.compareMap = compareMap;
|
||||
}
|
||||
|
||||
public JRadioButtonMenuItem getCompareToBin() {
|
||||
return compareToBin;
|
||||
}
|
||||
|
||||
public void setCompareToBin(JRadioButtonMenuItem compareToBin) {
|
||||
this.compareToBin = compareToBin;
|
||||
}
|
||||
|
||||
public JMenu getSimilarOpenTables() {
|
||||
return similarOpenTables;
|
||||
}
|
||||
|
||||
public void setSimilarOpenTables(JMenu similarOpenTables) {
|
||||
this.similarOpenTables = similarOpenTables;
|
||||
}
|
||||
}
|
|
@ -5,14 +5,8 @@ import javax.swing.JRadioButtonMenuItem;
|
|||
public class TableMenuItem extends JRadioButtonMenuItem{
|
||||
|
||||
private static final long serialVersionUID = -3618983591185294967L;
|
||||
private final TableFrame tableFrame;
|
||||
|
||||
public TableMenuItem(TableFrame tableFrame) {
|
||||
super(tableFrame.getTitle());
|
||||
this.tableFrame = tableFrame;
|
||||
}
|
||||
|
||||
public TableFrame getFrame() {
|
||||
return this.tableFrame;
|
||||
public TableMenuItem(String itemName) {
|
||||
super(itemName);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue