mirror of https://github.com/rusefi/RomRaider.git
Fixed table compare menus
This commit is contained in:
parent
486bf45d6c
commit
3183986385
|
@ -340,7 +340,6 @@ public class ECUEditor extends AbstractFrame {
|
|||
|
||||
getImageList().setVisible(true);
|
||||
getImageList().expandPath(new TreePath(getImageRoot()));
|
||||
|
||||
getImageList().expandPath(new TreePath(input.getPath()));
|
||||
|
||||
if(!settings.isOpenExpanded()) {
|
||||
|
@ -445,10 +444,14 @@ public class ECUEditor extends AbstractFrame {
|
|||
|
||||
// frame not added. Draw table and add the frame.
|
||||
TableView v = frame.getTableView();
|
||||
if(v!=null) v.drawTable();
|
||||
|
||||
rightPanel.add(frame);
|
||||
if(v!=null) {
|
||||
v.drawTable();
|
||||
}
|
||||
|
||||
rightPanel.add(frame);
|
||||
rightPanel.repaint();
|
||||
refreshTableCompareMenus();
|
||||
}
|
||||
|
||||
public void removeDisplayTable(TableFrame frame) {
|
||||
|
@ -564,13 +567,9 @@ public class ECUEditor extends AbstractFrame {
|
|||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
for(JInternalFrame curFrame : getRightPanel().getAllFrames()) {
|
||||
TableFrame frame = (TableFrame) curFrame;
|
||||
frame.refreshSimilarOpenTables();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ public class OpenImageWorker extends SwingWorker<Void, Void> {
|
|||
setProgress(90);
|
||||
|
||||
editor.addRom(rom);
|
||||
editor.refreshTableCompareMenus();
|
||||
|
||||
editor.getStatusPanel().setStatus(
|
||||
ECUEditor.rb.getString("DONELOAD"));
|
||||
|
@ -309,6 +308,7 @@ public class OpenImageWorker extends SwingWorker<Void, Void> {
|
|||
@Override
|
||||
public void done() {
|
||||
ECUEditor editor = ECUEditorManager.getECUEditor();
|
||||
editor.refreshTableCompareMenus();
|
||||
editor.getStatusPanel().setStatus(ECUEditor.rb.getString("STATUSREADY"));
|
||||
setProgress(0);
|
||||
editor.setCursor(null);
|
||||
|
|
|
@ -53,8 +53,7 @@ public class PresetPanel extends JPanel {
|
|||
setLayout(new GridBagLayout());
|
||||
}
|
||||
|
||||
public void populatePanel() {
|
||||
|
||||
public void populatePanel() {
|
||||
//If this is an axis within another table dont show the panel
|
||||
if(table.getTable() instanceof Table1D) {
|
||||
if(((Table1D) (table.getTable())).getAxisParent() != null) {
|
||||
|
|
|
@ -127,7 +127,8 @@ public class Rom extends DefaultMutableTreeNode implements Serializable {
|
|||
|
||||
public void addTable(Table table) {
|
||||
boolean found = false;
|
||||
|
||||
table.setRom(this);
|
||||
|
||||
for (int i = 0; i < tableNodes.size(); i++) {
|
||||
if (tableNodes.get(i).getTable().equalsWithoutData(table)) {
|
||||
tableNodes.get(i).setUserObject(null);
|
||||
|
|
|
@ -75,6 +75,7 @@ public abstract class Table implements Serializable {
|
|||
protected double maxCompare = 0.0;
|
||||
protected double minCompare = 0.0;
|
||||
|
||||
protected Rom rom;
|
||||
protected boolean staticDataTable = false;
|
||||
private Table compareTable = null;
|
||||
protected Settings.DataType compareValueType = Settings.DataType.BIN;
|
||||
|
@ -138,10 +139,17 @@ public abstract class Table implements Serializable {
|
|||
public int getRamOffset() {
|
||||
return this.ramOffset;
|
||||
}
|
||||
|
||||
public Rom getRom() {
|
||||
return rom;
|
||||
}
|
||||
|
||||
public void setRom(Rom rom) {
|
||||
this.rom = rom;
|
||||
}
|
||||
|
||||
public void populateTable(Rom rom) throws ArrayIndexOutOfBoundsException, IndexOutOfBoundsException {
|
||||
if(isStaticDataTable()) return;
|
||||
|
||||
public void populateTable(Rom rom) throws ArrayIndexOutOfBoundsException, IndexOutOfBoundsException {
|
||||
if(isStaticDataTable()) return;
|
||||
validateScaling();
|
||||
|
||||
// temporarily remove lock;
|
||||
|
|
|
@ -20,11 +20,14 @@
|
|||
package com.romraider.swing;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
|
@ -44,9 +47,11 @@ public class JTableChooser extends JOptionPane implements MouseListener {
|
|||
private static final long serialVersionUID = 5611729002131147882L;
|
||||
private static final ResourceBundle rb = new ResourceUtil().getBundle(
|
||||
JTableChooser.class.getName());
|
||||
|
||||
JPanel displayPanel = new JPanel();
|
||||
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Open Images");
|
||||
JTree displayTree = new JTree(rootNode);
|
||||
JButton compareButton = new JButton(rb.getString("COMPARE"));
|
||||
JScrollPane displayScrollPane;
|
||||
|
||||
public JTableChooser() {
|
||||
|
@ -88,24 +93,34 @@ public class JTableChooser extends JOptionPane implements MouseListener {
|
|||
}
|
||||
}
|
||||
|
||||
displayTree.setPreferredSize(new Dimension(nameLength*7, 400));
|
||||
displayTree.setMinimumSize(new Dimension(nameLength*7, 400));
|
||||
|
||||
displayTree.setPreferredSize(new Dimension(nameLength*9, 400));
|
||||
displayTree.setMinimumSize(new Dimension(nameLength*9, 400));
|
||||
|
||||
displayTree.expandPath(new TreePath(rootNode.getPath()));
|
||||
displayTree.setRootVisible(false);
|
||||
|
||||
displayTree.addMouseListener(this);
|
||||
displayScrollPane = new JScrollPane(displayTree);
|
||||
displayScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
||||
displayPanel.add(displayScrollPane);
|
||||
|
||||
Object[] values = {rb.getString("COMPARE"), rb.getString("CANCEL")};
|
||||
|
||||
if ((showOptionDialog(SwingUtilities.windowForComponent(targetTable.getTableView()),
|
||||
|
||||
Object[] values = {compareButton, rb.getString("CANCEL")};
|
||||
compareButton.setEnabled(false);
|
||||
compareButton.addActionListener(new ActionListener()
|
||||
{
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
JOptionPane pane = (JOptionPane)((JButton) (e.getSource())).getParent().getParent();
|
||||
pane.setValue(compareButton);
|
||||
}
|
||||
});
|
||||
|
||||
int result = showOptionDialog(SwingUtilities.windowForComponent(targetTable.getTableView()),
|
||||
displayPanel,
|
||||
rb.getString("SELECT"), JOptionPane.DEFAULT_OPTION,
|
||||
JOptionPane.PLAIN_MESSAGE, null, values, values[0]) == 0
|
||||
&& (displayTree.getLastSelectedPathComponent() instanceof TableChooserTreeNode))) {
|
||||
JOptionPane.PLAIN_MESSAGE, null, values, values[0]);
|
||||
|
||||
if (result == 0 && displayTree.getLastSelectedPathComponent() instanceof TableChooserTreeNode) {
|
||||
return ((TableChooserTreeNode) displayTree.getLastSelectedPathComponent()).getTable();
|
||||
} else {
|
||||
return null;
|
||||
|
@ -117,6 +132,13 @@ public class JTableChooser extends JOptionPane implements MouseListener {
|
|||
displayTree.setPreferredSize(new Dimension(displayTree.getWidth(),
|
||||
(displayTree.getRowCount()*displayTree.getRowHeight())));
|
||||
displayTree.revalidate();
|
||||
|
||||
if(displayTree.getLastSelectedPathComponent() instanceof TableChooserTreeNode) {
|
||||
compareButton.setEnabled(true);
|
||||
}
|
||||
else {
|
||||
compareButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e){}
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.awt.event.ActionEvent;
|
|||
import java.awt.event.ActionListener;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JInternalFrame;
|
||||
|
@ -56,7 +57,7 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener,
|
|||
super(title, true, true);
|
||||
this.tableView = tableView;
|
||||
Table t = tableView.getTable();
|
||||
|
||||
|
||||
Icon icon = RomCellRenderer.getIconForTable(t);
|
||||
setFrameIcon(icon);
|
||||
|
||||
|
@ -191,7 +192,7 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener,
|
|||
}
|
||||
|
||||
} else if (e.getSource() instanceof TableMenuItem) {
|
||||
Table selectedTable = findSimilarTable((TableMenuItem)e.getSource());
|
||||
Table selectedTable = ((TableMenuItem) e.getSource()).getTable();
|
||||
if(null != e.getSource()) {
|
||||
compareByTable(selectedTable);
|
||||
}
|
||||
|
@ -234,35 +235,33 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener,
|
|||
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.getTable().getName());
|
||||
similarTable.addActionListener(this);
|
||||
similarTables.add(similarTable);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Vector<Rom> images = ECUEditorManager.getECUEditor().getImages();
|
||||
boolean addedTable = false;
|
||||
|
||||
if(images.size() > 1) {
|
||||
for(Rom rom : images) {
|
||||
for(TableTreeNode tableNode : rom.getTableNodes()) {
|
||||
if(tableNode.getTable().getRom() == getTable().getRom()) break;
|
||||
|
||||
if(tableNode.getTable().getName().equalsIgnoreCase(getTable().getName())) {
|
||||
JRadioButtonMenuItem similarTable = new TableMenuItem(tableNode.getTable());
|
||||
similarTable.setToolTipText(tableNode.getTable().getName());
|
||||
similarTable.addActionListener(this);
|
||||
similarTables.add(similarTable);
|
||||
addedTable = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getTableMenuBar().initCompareGroup();
|
||||
|
||||
if(addedTable)
|
||||
similarTables.setEnabled(true);
|
||||
else
|
||||
similarTables.setEnabled(false);
|
||||
|
||||
getTableMenuBar().initCompareGroup(this);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* RomRaider Open-Source Tuning, Logging and Reflashing
|
||||
* Copyright (C) 2006-2020 RomRaider.com
|
||||
* Copyright (C) 2006-2021 RomRaider.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -31,7 +31,6 @@ import javax.swing.JSeparator;
|
|||
|
||||
import com.romraider.maps.Table;
|
||||
import com.romraider.maps.Table3D;
|
||||
import com.romraider.maps.Table3DView;
|
||||
import com.romraider.util.ResourceUtil;
|
||||
|
||||
public class TableMenuBar extends JMenuBar {
|
||||
|
@ -159,7 +158,8 @@ public class TableMenuBar extends JMenuBar {
|
|||
getCompareOriginal().setToolTipText(rb.getString("COMPARETT"));
|
||||
getCompareMap().setToolTipText(rb.getString("COMPARETBLTT"));
|
||||
getSimilarOpenTables().setToolTipText(rb.getString("COMPARESIMTT"));
|
||||
|
||||
getSimilarOpenTables().setEnabled(false);
|
||||
|
||||
compareDisplayGroup = new ButtonGroup();
|
||||
compareDisplayGroup.add(getComparePercent());
|
||||
compareDisplayGroup.add(getCompareAbsolute());
|
||||
|
@ -199,8 +199,6 @@ public class TableMenuBar extends JMenuBar {
|
|||
getCompareAbsolute().setSelected(true);
|
||||
getCompareToOriginal().setSelected(true);
|
||||
|
||||
initCompareGroup();
|
||||
|
||||
getCompareOriginal().addActionListener(frame);
|
||||
getCompareMap().addActionListener(frame);
|
||||
getCompareOff().addActionListener(frame);
|
||||
|
@ -210,13 +208,13 @@ public class TableMenuBar extends JMenuBar {
|
|||
getCompareToBin().addActionListener(frame);
|
||||
}
|
||||
|
||||
public void initCompareGroup() {
|
||||
public void initCompareGroup(TableFrame frame) {
|
||||
compareGroup = new ButtonGroup();
|
||||
|
||||
compareGroup.add(getCompareOriginal());
|
||||
compareGroup.add(getCompareMap());
|
||||
compareGroup.add(getCompareOff());
|
||||
|
||||
|
||||
for(int i = 0; i< getSimilarOpenTables().getItemCount(); i++) {
|
||||
compareGroup.add(getSimilarOpenTables().getItem(i));
|
||||
}
|
||||
|
|
|
@ -2,11 +2,19 @@ package com.romraider.swing;
|
|||
|
||||
import javax.swing.JRadioButtonMenuItem;
|
||||
|
||||
import com.romraider.maps.Table;
|
||||
|
||||
public class TableMenuItem extends JRadioButtonMenuItem{
|
||||
|
||||
private static final long serialVersionUID = -3618983591185294967L;
|
||||
|
||||
public TableMenuItem(String itemName) {
|
||||
super(itemName);
|
||||
Table table;
|
||||
|
||||
public TableMenuItem(Table t) {
|
||||
super(t.getRom().getFileName());
|
||||
this.table = t;
|
||||
}
|
||||
|
||||
public Table getTable() {
|
||||
return table;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue