Fixed table compare menus

This commit is contained in:
Robin K 2021-12-25 16:53:10 +01:00
parent 486bf45d6c
commit 3183986385
9 changed files with 101 additions and 67 deletions

View File

@ -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();
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();
}
}

View File

@ -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);

View File

@ -54,7 +54,6 @@ public class PresetPanel extends JPanel {
}
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) {

View File

@ -127,6 +127,7 @@ 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)) {

View File

@ -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;
@ -139,9 +140,16 @@ public abstract class Table implements Serializable {
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;
validateScaling();
// temporarily remove lock;

View File

@ -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")};
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);
}
});
if ((showOptionDialog(SwingUtilities.windowForComponent(targetTable.getTableView()),
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){}

View File

@ -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;
@ -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);
}
@ -235,34 +236,32 @@ public class TableFrame extends JInternalFrame implements InternalFrameListener,
JMenu similarTables = getTableMenuBar().getSimilarOpenTables();
similarTables.removeAll();
for(Rom rom : ECUEditorManager.getECUEditor().getImages()) {
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(rom.getFileName());
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;
}
}

View File

@ -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,6 +158,7 @@ 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());
@ -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,7 +208,7 @@ public class TableMenuBar extends JMenuBar {
getCompareToBin().addActionListener(frame);
}
public void initCompareGroup() {
public void initCompareGroup(TableFrame frame) {
compareGroup = new ButtonGroup();
compareGroup.add(getCompareOriginal());

View File

@ -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;
Table table;
public TableMenuItem(String itemName) {
super(itemName);
public TableMenuItem(Table t) {
super(t.getRom().getFileName());
this.table = t;
}
public Table getTable() {
return table;
}
}