mirror of https://github.com/rusefi/RomRaider.git
Some gui updates
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@671 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
6033a3c1dc
commit
4ddd77749a
|
@ -244,7 +244,7 @@ public class NewGUI extends JFrame implements ActionListener, TreeSelectionListe
|
|||
}
|
||||
}
|
||||
|
||||
public void displayInternalFrameTable(Double[][] data, TableMetaData tableMetaData){
|
||||
public void displayInternalFrameTable(Object[][] data, TableMetaData tableMetaData){
|
||||
this.rightDesktopPane.add(data, tableMetaData);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package enginuity.NewGUI.data;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import enginuity.NewGUI.interfaces.TuningEntity;
|
||||
|
||||
public class TableMetaData {
|
||||
// Type of node
|
||||
// Type of table
|
||||
public static final int DATA_1D = 0;
|
||||
public static final int DATA_2D = 1;
|
||||
public static final int DATA_3D = 3;
|
||||
|
@ -13,19 +14,35 @@ public class TableMetaData {
|
|||
public static final int RESERVED_ROOT = 5;
|
||||
public static final int CATEGORY = 6;
|
||||
|
||||
//Frame Dimensions
|
||||
private static final Dimension Data3DDimension = new Dimension(500, 500);
|
||||
private static final Dimension Data2DDimension = new Dimension(500, 200);
|
||||
private static final Dimension Data1DDimension = new Dimension(500, 60);
|
||||
|
||||
|
||||
// **********************
|
||||
// Constructor set values
|
||||
// **********************
|
||||
|
||||
// Table data related
|
||||
private double maxValue;
|
||||
private double minValue;
|
||||
private String[] columnLabels;
|
||||
private String[] rowLabels;
|
||||
private Object[] ignoredValues;
|
||||
private boolean isInvertedColoring;
|
||||
|
||||
// Table labels etc
|
||||
private String tableName;
|
||||
private String[] columnLabels;
|
||||
private String[] rowLabels;
|
||||
private String xAxisLabel;
|
||||
private String yAxisLabel;
|
||||
private String tableIdentifier;
|
||||
private String tableGroup;
|
||||
|
||||
// Is this a table1d, table2d, table3d
|
||||
private int dimensions;
|
||||
|
||||
// What tuning entity should table decribed by this meta data refer to?
|
||||
private TuningEntity parentTuningEntity;
|
||||
|
||||
// Optional setters
|
||||
|
@ -109,4 +126,16 @@ public class TableMetaData {
|
|||
public String getYAxisLabel() {
|
||||
return yAxisLabel;
|
||||
}
|
||||
|
||||
public static Dimension getData1DDimension() {
|
||||
return Data1DDimension;
|
||||
}
|
||||
|
||||
public static Dimension getData2DDimension() {
|
||||
return Data2DDimension;
|
||||
}
|
||||
|
||||
public static Dimension getData3DDimension() {
|
||||
return Data3DDimension;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ public class EDesktopPane extends JDesktopPane{
|
|||
}
|
||||
}
|
||||
|
||||
public Component add(Double[][] data, TableMetaData tableMetaData) {
|
||||
public Component add(Object[][] data, TableMetaData tableMetaData) {
|
||||
Point p;
|
||||
int w;
|
||||
int h;
|
||||
|
@ -61,14 +61,17 @@ public class EDesktopPane extends JDesktopPane{
|
|||
EInternalFrame tempFrame = null;
|
||||
for(int i = 0; i < allFrames.length ; i++){
|
||||
tempFrame = (EInternalFrame)allFrames[i];
|
||||
|
||||
//Does the fram we're adding already exist?
|
||||
if(tempFrame.getTableMetaData().getTableIdentifier() == tableMetaData.getTableIdentifier()){
|
||||
addFrame = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Frame does not exist already, now add
|
||||
if(addFrame){
|
||||
EInternalFrame frame = new EInternalFrame(tableMetaData, data, new Dimension(800, 600));
|
||||
EInternalFrame frame = new EInternalFrame(tableMetaData, data);
|
||||
Component retval = super.add(frame);
|
||||
checkDesktopSize();
|
||||
if (allFrames.length > 0) {
|
||||
|
@ -88,7 +91,7 @@ public class EDesktopPane extends JDesktopPane{
|
|||
if (h < frame.getMinimumSize().getHeight()) {
|
||||
h = (int) frame.getMinimumSize().getHeight();
|
||||
}
|
||||
frame.setSize(w, h);
|
||||
//frame.setSize(w, h);
|
||||
}
|
||||
moveToFront(frame);
|
||||
frame.setVisible(true);
|
||||
|
@ -99,6 +102,8 @@ public class EDesktopPane extends JDesktopPane{
|
|||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
// Since frame already exists, toggle its visibility
|
||||
else{
|
||||
boolean isVisible = tempFrame.isVisible();
|
||||
// Toggle the visibility of the frame
|
||||
|
@ -129,7 +134,7 @@ public class EDesktopPane extends JDesktopPane{
|
|||
int frameHeight = (getBounds().height - 5) - allFrames.length * FRAME_OFFSET;
|
||||
int frameWidth = (getBounds().width - 5) - allFrames.length * FRAME_OFFSET;
|
||||
for (int i = allFrames.length - 1; i >= 0; i--) {
|
||||
allFrames[i].setSize(frameWidth, frameHeight);
|
||||
//allFrames[i].setSize(frameWidth, frameHeight);
|
||||
allFrames[i].setLocation(x, y);
|
||||
x = x + FRAME_OFFSET;
|
||||
y = y + FRAME_OFFSET;
|
||||
|
@ -145,7 +150,7 @@ public class EDesktopPane extends JDesktopPane{
|
|||
int frameHeight = getBounds().height / allFrames.length;
|
||||
int y = 0;
|
||||
for (int i = 0; i < allFrames.length; i++) {
|
||||
allFrames[i].setSize(getBounds().width, frameHeight);
|
||||
//allFrames[i].setSize(getBounds().width, frameHeight);
|
||||
allFrames[i].setLocation(0, y);
|
||||
y = y + frameHeight;
|
||||
}
|
||||
|
|
|
@ -28,6 +28,9 @@ import javax.swing.table.TableModel;
|
|||
|
||||
import enginuity.NewGUI.data.ApplicationStateManager;
|
||||
import enginuity.NewGUI.data.TableMetaData;
|
||||
import enginuity.NewGUI.etable.dataJPanel.DataJPanel1DString;
|
||||
import enginuity.NewGUI.etable.dataJPanel.DataJPanelInterface;
|
||||
import enginuity.NewGUI.etable.dataJPanel.DataJPanel3DDouble;
|
||||
import enginuity.NewGUI.etable.text.RotatedLabel;
|
||||
import enginuity.NewGUI.tools.ClipBoardCopy;
|
||||
import enginuity.NewGUI.tools.FitData;
|
||||
|
@ -35,155 +38,70 @@ import enginuity.swing.VTextIcon;
|
|||
|
||||
public class EInternalFrame extends JInternalFrame implements InternalFrameListener, ActionListener{
|
||||
private Stack<ETableSaveState> savedData = new Stack<ETableSaveState>();
|
||||
|
||||
private ETable eTable;
|
||||
private TableMetaData tableMetaData;
|
||||
private ClipBoardCopy excelCopy;
|
||||
private JPanel labelJPanel = new JPanel();
|
||||
private DataJPanelInterface dataJPanel = null;
|
||||
|
||||
public EInternalFrame(TableMetaData tableMetaData, Double[][] data, Dimension tableDimensions){
|
||||
public EInternalFrame(TableMetaData tableMetaData, Object[][] data){
|
||||
super(tableMetaData.getTableName()+" "+tableMetaData.getTableGroup(), true, true, true, true);
|
||||
this.tableMetaData = tableMetaData;
|
||||
|
||||
// Save initial data
|
||||
this.savedData.push(new ETableSaveState(data));
|
||||
// Pull the appropriate jpanel based on tableMetaData
|
||||
if(tableMetaData.getNodeType() == TableMetaData.DATA_1D){
|
||||
if(data[0][0] instanceof String){
|
||||
dataJPanel = new DataJPanel1DString(tableMetaData, data);
|
||||
}
|
||||
}else if(tableMetaData.getNodeType() == TableMetaData.DATA_2D){
|
||||
|
||||
}else if(tableMetaData.getNodeType() == TableMetaData.DATA_3D){
|
||||
|
||||
if(data[0][0] instanceof Double){
|
||||
dataJPanel = new DataJPanel3DDouble(tableMetaData, data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Set the frame icon
|
||||
// Ensure we set the appropriate frame dimensions
|
||||
if(tableMetaData.getNodeType() == TableMetaData.DATA_1D){
|
||||
this.setSize(tableMetaData.getData1DDimension());
|
||||
}else if(tableMetaData.getNodeType() == TableMetaData.DATA_2D){
|
||||
this.setSize(tableMetaData.getData2DDimension());
|
||||
}else if(tableMetaData.getNodeType() == TableMetaData.DATA_3D){
|
||||
this.setSize(tableMetaData.getData3DDimension());
|
||||
}
|
||||
|
||||
|
||||
// *****************************
|
||||
// Build up final internal frame
|
||||
// *****************************
|
||||
Image img = Toolkit.getDefaultToolkit().getImage("graphics/enginuity-ico.gif");
|
||||
ImageIcon imgIcon = new ImageIcon(img);
|
||||
this.setFrameIcon(imgIcon);
|
||||
|
||||
TableColumnModel columnModel = new DefaultTableColumnModel(){
|
||||
boolean first = true;
|
||||
public void addColumn(TableColumn tc){
|
||||
if(first){
|
||||
first = false;
|
||||
return;
|
||||
}
|
||||
//tc.setMinWidth(30);
|
||||
//tc.setMaxWidth(30);
|
||||
super.addColumn(tc);
|
||||
}
|
||||
};
|
||||
|
||||
TableColumnModel rowHeaderModel = new DefaultTableColumnModel(){
|
||||
boolean first = true;
|
||||
public void addColumn(TableColumn tc){
|
||||
if(first){
|
||||
tc.setMaxWidth(35);
|
||||
super.addColumn(tc);
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
TableModel tableModel = new ETableRowLabel(data[0].length, tableMetaData.getRowLabels());
|
||||
eTable = new ETable(tableMetaData, data, columnModel);
|
||||
eTable.setBackground(Color.LIGHT_GRAY);
|
||||
excelCopy = new ClipBoardCopy(eTable);
|
||||
|
||||
JTable headerColumn = new JTable(tableModel, rowHeaderModel);
|
||||
headerColumn.setBackground(new Color(236, 233, 216));
|
||||
eTable.createDefaultColumnsFromModel();
|
||||
headerColumn.createDefaultColumnsFromModel();
|
||||
eTable.setSelectionModel(headerColumn.getSelectionModel());
|
||||
|
||||
headerColumn.setMaximumSize(new Dimension(40, 10000));
|
||||
headerColumn.setColumnSelectionAllowed(false);
|
||||
headerColumn.setCellSelectionEnabled(false);
|
||||
|
||||
JViewport jv = new JViewport();
|
||||
jv.setView(headerColumn);
|
||||
jv.setPreferredSize(headerColumn.getMaximumSize());
|
||||
|
||||
headerColumn.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
||||
|
||||
JScrollPane scrollPane = new JScrollPane(eTable);
|
||||
scrollPane.setRowHeader(jv);
|
||||
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
|
||||
|
||||
// Add the toolbar
|
||||
ETableToolBar toolBar = new ETableToolBar(tableMetaData, eTable);
|
||||
|
||||
|
||||
// Add internal frame
|
||||
this.setLayout(new BorderLayout());
|
||||
this.setJMenuBar(new ETableMenuBar(this));
|
||||
this.add(toolBar, BorderLayout.NORTH);
|
||||
|
||||
// Table Title
|
||||
JLabel titleJLabel = new JLabel(tableMetaData.getTableName());
|
||||
titleJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
// X Label
|
||||
JLabel xAxisJLabel = new JLabel(tableMetaData.getXAxisLabel());
|
||||
xAxisJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
// Y Label
|
||||
RotatedLabel yAxisJLabel = new RotatedLabel(tableMetaData.getYAxisLabel());
|
||||
yAxisJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
this.labelJPanel.setLayout(new BorderLayout());
|
||||
this.labelJPanel.add(titleJLabel, BorderLayout.NORTH);
|
||||
this.labelJPanel.add(xAxisJLabel, BorderLayout.SOUTH);
|
||||
this.labelJPanel.add(yAxisJLabel, BorderLayout.WEST);
|
||||
|
||||
this.labelJPanel.add(scrollPane, BorderLayout.CENTER);
|
||||
this.add(this.labelJPanel, BorderLayout.CENTER);
|
||||
|
||||
|
||||
this.setSize(tableDimensions);
|
||||
this.setVisible(true);
|
||||
this.setLayout(new BorderLayout());
|
||||
this.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE);
|
||||
this.addInternalFrameListener(this);
|
||||
this.add((JPanel)this.dataJPanel, BorderLayout.CENTER);
|
||||
this.setJMenuBar(this.dataJPanel.getMenuBar());
|
||||
this.add(this.dataJPanel.getToolBar(), BorderLayout.NORTH);
|
||||
}
|
||||
|
||||
public boolean dataChanged(){
|
||||
//if(this.eTable.getTheModel().getData() != this.savedData.get(savedData.size()-1).getData()){
|
||||
if(!compareMe(this.eTable.getTheModel().getData(), this.savedData.get(savedData.size()-1).getData())){
|
||||
System.out.println("Data not the same.");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to compare data in two arrays. Must be a better wat to do this.
|
||||
* .equals and == does not work for some reason.
|
||||
* @param data1
|
||||
* @param data2
|
||||
* Check to see if data relevant to this frame has changed
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private boolean compareMe(Double[][] data1, Double[][] data2){
|
||||
int width = data1.length;
|
||||
int height = data1[0].length;
|
||||
|
||||
|
||||
for(int i = 0; i < width; i++){
|
||||
for(int j = 0; j < height; j++){
|
||||
if((data1[i][j] - data2[i][j]) != 0){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public Double[][] getTableData(){
|
||||
Double[][] data = this.eTable.getTheModel().getData();
|
||||
return data;
|
||||
public boolean dataChanged(){
|
||||
return this.dataJPanel.dataChanged();
|
||||
}
|
||||
|
||||
public void saveDataToParentTuningEntity(){
|
||||
this.tableMetaData.getParentTuningEntity().setTableData(this.tableMetaData.getTableIdentifier(), this.eTable.getTheModel().getData());
|
||||
this.tableMetaData.getParentTuningEntity().setTableData(this.tableMetaData.getTableIdentifier(), this.dataJPanel.getData());
|
||||
}
|
||||
|
||||
public void saveDataState(){
|
||||
this.savedData.push(new ETableSaveState(this.getTableData()));
|
||||
this.savedData.push(new ETableSaveState(this.dataJPanel.getData()));
|
||||
}
|
||||
|
||||
public void revertDataState(){
|
||||
|
@ -197,8 +115,8 @@ public class EInternalFrame extends JInternalFrame implements InternalFrameListe
|
|||
}
|
||||
|
||||
|
||||
public void setTableData(Double[][] data){
|
||||
this.eTable.getTheModel().replaceData(data);
|
||||
public void setTableData(Object[][] data){
|
||||
this.dataJPanel.replaceData(data);
|
||||
}
|
||||
|
||||
public void internalFrameOpened(InternalFrameEvent arg0) {
|
||||
|
@ -239,10 +157,12 @@ public class EInternalFrame extends JInternalFrame implements InternalFrameListe
|
|||
|
||||
}
|
||||
|
||||
|
||||
public TableMetaData getTableMetaData() {
|
||||
return tableMetaData;
|
||||
}
|
||||
|
||||
/*
|
||||
public ETable getETable() {
|
||||
return eTable;
|
||||
}
|
||||
|
@ -250,4 +170,5 @@ public class EInternalFrame extends JInternalFrame implements InternalFrameListe
|
|||
public ClipBoardCopy getExcelCopy() {
|
||||
return excelCopy;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public class ETable extends JTable{
|
|||
private Vector tempSelectedCells = new Vector();
|
||||
private TableMetaData tableMetaData;
|
||||
|
||||
ETable(TableMetaData metaData, Double[][] data, TableColumnModel cm){
|
||||
public ETable(TableMetaData metaData, Double[][] data, TableColumnModel cm){
|
||||
this.theModel = new ETableModel(metaData, data);
|
||||
super.setColumnModel(cm);
|
||||
super.setModel(this.theModel);
|
||||
|
|
|
@ -12,6 +12,8 @@ import javax.swing.JMenuBar;
|
|||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import enginuity.NewGUI.etable.dataJPanel.DataJPanelInterface;
|
||||
|
||||
public class ETableMenuBar extends JMenuBar implements ActionListener{
|
||||
|
||||
|
||||
|
@ -26,9 +28,9 @@ public class ETableMenuBar extends JMenuBar implements ActionListener{
|
|||
private JMenuItem copySelection = new JMenuItem("Copy Selection");
|
||||
private JMenuItem paste = new JMenuItem("Paste Table Data");
|
||||
|
||||
private EInternalFrame parentEInternalFrame;
|
||||
private DataJPanelInterface parentEInternalFrame;
|
||||
|
||||
public ETableMenuBar(EInternalFrame parentFrame){
|
||||
public ETableMenuBar(DataJPanelInterface parentFrame){
|
||||
this.parentEInternalFrame = parentFrame;
|
||||
|
||||
// Setup the GUI below
|
||||
|
@ -67,27 +69,22 @@ public class ETableMenuBar extends JMenuBar implements ActionListener{
|
|||
}
|
||||
|
||||
else if(e.getSource() == this.closeItem){
|
||||
try {
|
||||
this.parentEInternalFrame.setClosed(true);
|
||||
} catch (PropertyVetoException e1) {
|
||||
// TODO Auto-generated catch block
|
||||
e1.printStackTrace();
|
||||
}
|
||||
this.parentEInternalFrame.setClosed(true);
|
||||
}
|
||||
|
||||
|
||||
else if(e.getSource() == this.copySelection){
|
||||
this.parentEInternalFrame.getExcelCopy().copySelectedTableData();
|
||||
this.parentEInternalFrame.copySelectedTableData();
|
||||
}
|
||||
|
||||
|
||||
else if(e.getSource() == this.copyTable){
|
||||
this.parentEInternalFrame.getExcelCopy().copyEntireTable();
|
||||
this.parentEInternalFrame.copyEntireTable();
|
||||
}
|
||||
|
||||
|
||||
else if(e.getSource() == this.paste){
|
||||
this.parentEInternalFrame.getExcelCopy().pasteTableData();
|
||||
this.parentEInternalFrame.pasteTableData();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
package enginuity.NewGUI.etable;
|
||||
|
||||
public class ETableSaveState {
|
||||
private Double[][] internalData;
|
||||
private Object[][] internalData;
|
||||
//private String name;
|
||||
public ETableSaveState(Double[][] data){
|
||||
public ETableSaveState(Object[][] data){
|
||||
//this.name = name;
|
||||
int width = data.length;
|
||||
int height = data[0].length;
|
||||
|
||||
//System.out.println("Dimensions: w:"+ width+" h:"+height);
|
||||
this.internalData = new Double[width][height];
|
||||
this.internalData = new Object[width][height];
|
||||
|
||||
for(int i = 0; i < width; i ++){
|
||||
for(int j=0; j < height; j++){
|
||||
double tempData = data[i][j];
|
||||
Object tempData = data[i][j];
|
||||
this.internalData[i][j] = tempData;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class ETableSaveState {
|
|||
System.out.println("Sample: "+this.internalData[0][0]);
|
||||
}
|
||||
|
||||
public Double[][] getData(){
|
||||
public Object[][] getData(){
|
||||
return this.internalData;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
package enginuity.NewGUI.etable.dataJPanel;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.JToolBar;
|
||||
|
||||
import enginuity.NewGUI.data.TableMetaData;
|
||||
|
||||
public class DataJPanel1DString extends JPanel implements DataJPanelInterface{
|
||||
|
||||
private TableMetaData tableMetaData;
|
||||
private String initialStringValue;
|
||||
private JTextArea dataTextArea;
|
||||
|
||||
public DataJPanel1DString(TableMetaData tableMetaData, Object[][] data) {
|
||||
this.tableMetaData = tableMetaData;
|
||||
this.initialStringValue = (String)data[0][0];
|
||||
|
||||
this.setLayout(new BorderLayout());
|
||||
|
||||
dataTextArea = new JTextArea((String)data[0][0]);
|
||||
JScrollPane dataScrollPane = new JScrollPane(dataTextArea);
|
||||
dataScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
dataScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||
|
||||
this.add(dataScrollPane, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
public JToolBar getToolBar() {
|
||||
// TODO Auto-generated method stub
|
||||
return new JToolBar();
|
||||
}
|
||||
|
||||
public JMenuBar getMenuBar() {
|
||||
// TODO Auto-generated method stub
|
||||
return new JMenuBar();
|
||||
}
|
||||
|
||||
public boolean dataChanged() {
|
||||
// TODO Auto-generated method stub
|
||||
return this.initialStringValue.equals(this.dataTextArea.getText());
|
||||
}
|
||||
|
||||
public void copySelectedTableData() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void copyEntireTable() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void pasteTableData() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setClosed(boolean value) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void revertDataState() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void saveDataState() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void replaceData(Object[][] newData) {
|
||||
// TODO Auto-generated method stub
|
||||
this.dataTextArea.setText((String)newData[0][0]);
|
||||
}
|
||||
|
||||
public Object[][] getData() {
|
||||
Object[][] temp = new Object[1][1];
|
||||
temp[0][0] = this.dataTextArea.getText();
|
||||
return temp;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,208 @@
|
|||
package enginuity.NewGUI.etable.dataJPanel;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.util.Stack;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.JToolBar;
|
||||
import javax.swing.JViewport;
|
||||
import javax.swing.table.DefaultTableColumnModel;
|
||||
import javax.swing.table.TableColumn;
|
||||
import javax.swing.table.TableColumnModel;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
import enginuity.NewGUI.data.TableMetaData;
|
||||
import enginuity.NewGUI.etable.ETable;
|
||||
import enginuity.NewGUI.etable.ETableMenuBar;
|
||||
import enginuity.NewGUI.etable.ETableRowLabel;
|
||||
import enginuity.NewGUI.etable.ETableSaveState;
|
||||
import enginuity.NewGUI.etable.ETableToolBar;
|
||||
import enginuity.NewGUI.etable.text.RotatedLabel;
|
||||
import enginuity.NewGUI.tools.ClipBoardCopy;
|
||||
|
||||
public class DataJPanel3DDouble extends JPanel implements DataJPanelInterface{
|
||||
private Stack<ETableSaveState> savedData = new Stack<ETableSaveState>();
|
||||
private ETable eTable;
|
||||
private TableMetaData tableMetaData;
|
||||
private ClipBoardCopy excelCopy;
|
||||
private ETableMenuBar eTableMenuBar = new ETableMenuBar(this);
|
||||
private ETableToolBar toolBar = null;
|
||||
|
||||
public DataJPanel3DDouble(TableMetaData tableMetaData, Object[][] data) {
|
||||
|
||||
Double[][] newData = null;
|
||||
if(data[0][0] instanceof Double){
|
||||
// Typical 2D & 3D data
|
||||
newData = (Double[][])data;
|
||||
}
|
||||
|
||||
// Save initial data
|
||||
this.savedData.push(new ETableSaveState(newData));
|
||||
|
||||
|
||||
TableColumnModel columnModel = new DefaultTableColumnModel(){
|
||||
boolean first = true;
|
||||
public void addColumn(TableColumn tc){
|
||||
if(first){
|
||||
first = false;
|
||||
return;
|
||||
}
|
||||
//tc.setMinWidth(30);
|
||||
//tc.setMaxWidth(30);
|
||||
super.addColumn(tc);
|
||||
}
|
||||
};
|
||||
|
||||
TableColumnModel rowHeaderModel = new DefaultTableColumnModel(){
|
||||
boolean first = true;
|
||||
public void addColumn(TableColumn tc){
|
||||
if(first){
|
||||
tc.setMaxWidth(35);
|
||||
super.addColumn(tc);
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
TableModel tableModel = new ETableRowLabel(data[0].length, tableMetaData.getRowLabels());
|
||||
eTable = new ETable(tableMetaData, newData, columnModel);
|
||||
this.toolBar = new ETableToolBar(tableMetaData, eTable);
|
||||
|
||||
|
||||
eTable.setBackground(Color.LIGHT_GRAY);
|
||||
excelCopy = new ClipBoardCopy(eTable);
|
||||
|
||||
JTable headerColumn = new JTable(tableModel, rowHeaderModel);
|
||||
headerColumn.setBackground(new Color(236, 233, 216));
|
||||
eTable.createDefaultColumnsFromModel();
|
||||
headerColumn.createDefaultColumnsFromModel();
|
||||
eTable.setSelectionModel(headerColumn.getSelectionModel());
|
||||
|
||||
headerColumn.setMaximumSize(new Dimension(40, 10000));
|
||||
headerColumn.setColumnSelectionAllowed(false);
|
||||
headerColumn.setCellSelectionEnabled(false);
|
||||
|
||||
JViewport jv = new JViewport();
|
||||
jv.setView(headerColumn);
|
||||
jv.setPreferredSize(headerColumn.getMaximumSize());
|
||||
|
||||
headerColumn.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
||||
|
||||
JScrollPane scrollPane = new JScrollPane(eTable);
|
||||
scrollPane.setRowHeader(jv);
|
||||
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
|
||||
|
||||
// Table Title
|
||||
JLabel titleJLabel = new JLabel(tableMetaData.getTableName());
|
||||
titleJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
// X Label
|
||||
JLabel xAxisJLabel = new JLabel(tableMetaData.getXAxisLabel());
|
||||
xAxisJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
// Y Label
|
||||
RotatedLabel yAxisJLabel = new RotatedLabel(tableMetaData.getYAxisLabel());
|
||||
yAxisJLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
this.setLayout(new BorderLayout());
|
||||
this.add(titleJLabel, BorderLayout.NORTH);
|
||||
this.add(xAxisJLabel, BorderLayout.SOUTH);
|
||||
this.add(yAxisJLabel, BorderLayout.WEST);
|
||||
|
||||
this.add(scrollPane, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
public JToolBar getToolBar(){
|
||||
return this.toolBar;
|
||||
}
|
||||
|
||||
public JMenuBar getMenuBar(){
|
||||
return this.eTableMenuBar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if data relevant to this frame has changed
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean dataChanged(){
|
||||
//if(this.eTable.getTheModel().getData() != this.savedData.get(savedData.size()-1).getData()){
|
||||
if(!compareMe(this.eTable.getTheModel().getData(), this.savedData.get(savedData.size()-1).getData())){
|
||||
System.out.println("Data not the same.");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper method to compare data in two arrays. Must be a better way to do this.
|
||||
* .equals and == does not work for some reason.
|
||||
* @param data1
|
||||
* @param data2
|
||||
* @return
|
||||
*/
|
||||
private boolean compareMe(Double[][] data1, Object[][] data2){
|
||||
int width = data1.length;
|
||||
int height = data1[0].length;
|
||||
|
||||
|
||||
for(int i = 0; i < width; i++){
|
||||
for(int j = 0; j < height; j++){
|
||||
if((data1[i][j] - (Double)data2[i][j]) != 0){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void copySelectedTableData() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void copyEntireTable() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void pasteTableData() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void setClosed(boolean value) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void revertDataState() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void saveDataState() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void replaceData(Object[][] newData) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public Object[][] getData() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package enginuity.NewGUI.etable.dataJPanel;
|
||||
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JToolBar;
|
||||
|
||||
public interface DataJPanelInterface {
|
||||
public JToolBar getToolBar();
|
||||
|
||||
public JMenuBar getMenuBar();
|
||||
|
||||
public boolean dataChanged();
|
||||
|
||||
public void copySelectedTableData();
|
||||
|
||||
public void copyEntireTable();
|
||||
|
||||
public void pasteTableData();
|
||||
|
||||
public void setClosed(boolean value);
|
||||
|
||||
public void revertDataState();
|
||||
|
||||
public void saveDataState();
|
||||
|
||||
public void replaceData(Object[][] newData);
|
||||
|
||||
public Object[][] getData();
|
||||
}
|
|
@ -19,14 +19,14 @@ public interface TuningEntity extends ActionListener{
|
|||
// Return the toolbar
|
||||
public JToolBar getToolBar();
|
||||
|
||||
// Return double data based on passed table name
|
||||
public Double[][] getTableData(String tableName);
|
||||
// Return object data based on passed table name
|
||||
public Object[][] getTableData(String tableName);
|
||||
|
||||
// Remove tuning group
|
||||
public void removeTuningGroup(String tuningGroup);
|
||||
|
||||
// Push back modified data to the tuning entity
|
||||
public void setTableData(String tableIdentifier, Double[][] data);
|
||||
public void setTableData(String tableIdentifier, Object[][] data);
|
||||
|
||||
// Control methods
|
||||
public void init(TuningEntityListener listener);
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package enginuity.NewGUI.tools;
|
||||
|
||||
public class EnginuityDataTools {
|
||||
|
||||
}
|
|
@ -47,7 +47,7 @@ public class ETree extends JTree implements MouseListener {
|
|||
// If this is a table that contains data, then open it in the right pane in an internal frame
|
||||
if(theNode.getTableMetaData().getNodeType() == TableMetaData.DATA_1D || theNode.getTableMetaData().getNodeType() == TableMetaData.DATA_2D || theNode.getTableMetaData().getNodeType() == TableMetaData.DATA_3D){
|
||||
System.out.println("ETree Table data:"+theNode.getTableMetaData().getTableIdentifier());
|
||||
Double[][] tableData = ApplicationStateManager.getCurrentTuningEntity().getTableData(theNode.getTableMetaData().getTableIdentifier());
|
||||
Object[][] tableData = ApplicationStateManager.getCurrentTuningEntity().getTableData(theNode.getTableMetaData().getTableIdentifier());
|
||||
System.out.println("ETree size:"+tableData.length);
|
||||
ApplicationStateManager.getEnginuityInstance().displayInternalFrameTable(tableData, theNode.getTableMetaData());
|
||||
}
|
||||
|
|
|
@ -82,6 +82,10 @@ public class UtecDataManager {
|
|||
// Initialise tree
|
||||
ETreeNode root = new ETreeNode("UTEC:"+mapData.getMapName()+", "+mapData.getMapComment(), new TableMetaData(TableMetaData.MAP_SET_ROOT,0.0,0.0,new Object[0],null,null,false,"","", "", "", mapData.getMapName(), parentTuningEntity));
|
||||
|
||||
ETreeNode mapName = new ETreeNode("Map Name", new TableMetaData(TableMetaData.DATA_1D, Double.parseDouble(UtecProperties.getProperties("utec.fuelMapMin")[0]), Double.parseDouble(UtecProperties.getProperties("utec.fuelMapMax")[0]), null,columnLabels,rowLabels, false, "Map Name" , "", "", "MapName:"+mapData.getMapName(), mapData.getMapName(),parentTuningEntity));
|
||||
|
||||
|
||||
|
||||
Object[] ignored = {new Double(-100.0)};
|
||||
ETreeNode fuel = new ETreeNode("Fuel", new TableMetaData(TableMetaData.DATA_3D, Double.parseDouble(UtecProperties.getProperties("utec.fuelMapMin")[0]), Double.parseDouble(UtecProperties.getProperties("utec.fuelMapMax")[0]), ignored,columnLabels,rowLabels, false, "Fuel" , "Load", "RPM", "Fuel:"+mapData.getMapName(), mapData.getMapName(),parentTuningEntity));
|
||||
|
||||
|
@ -90,6 +94,8 @@ public class UtecDataManager {
|
|||
|
||||
Object[] ignored3 = {new Double(-100.0)};
|
||||
ETreeNode boost = new ETreeNode("Boost", new TableMetaData(TableMetaData.DATA_3D, Double.parseDouble(UtecProperties.getProperties("utec.boostMapMin")[0]), Double.parseDouble(UtecProperties.getProperties("utec.boostMapMax")[0]), ignored, columnLabels,rowLabels,false, "Boost", "Load", "RPM", "Boost:"+mapData.getMapName(), mapData.getMapName(), parentTuningEntity));
|
||||
|
||||
root.add(mapName);
|
||||
root.add(fuel);
|
||||
root.add(timing);
|
||||
root.add(boost);
|
||||
|
|
|
@ -151,9 +151,9 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
UtecDataManager.removeTuningGroup(tuningGroup);
|
||||
}
|
||||
|
||||
public Double[][] getTableData(String tableIdentifier) {
|
||||
public Object[][] getTableData(String tableIdentifier) {
|
||||
System.out.println("UTEC getTableData Impl tablename:"+tableIdentifier);
|
||||
Double[][] data = null;
|
||||
Object[][] data = null;
|
||||
|
||||
if(UtecDataManager.getAllMaps().size() == 0){
|
||||
System.out.println("UTEC Impl Current map data is null");
|
||||
|
@ -179,6 +179,11 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
System.out.println("UTE Boost");
|
||||
data = newMapData.getBoostMap();
|
||||
return data;
|
||||
}else if(tableIdentifier.equals("MapName:"+mapName)){
|
||||
System.out.println("UTE MapName");
|
||||
data = new Object[1][1];
|
||||
data[0][0] = newMapData.getMapName();
|
||||
return data;
|
||||
}else{
|
||||
System.out.println("UTE returning empty data");
|
||||
data = new Double[0][0];
|
||||
|
@ -252,8 +257,8 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
}
|
||||
|
||||
else if (cmd.equals("Save Map To File")) {
|
||||
/*
|
||||
System.out.println("Saving map to file.");
|
||||
|
||||
if (UtecDataManager.getCurrentMapData() != null) {
|
||||
|
||||
String saveFileName = null;
|
||||
|
@ -267,7 +272,6 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
} else {
|
||||
System.out.println("Map is null.");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
else if (cmd.equals("Load Map #1")) {
|
||||
|
@ -394,7 +398,7 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
return new JutecToolBar(this.theTEL, this);
|
||||
}
|
||||
|
||||
public void setTableData(String tableIdentifier, Double[][] data) {
|
||||
public void setTableData(String tableIdentifier, Object[][] data) {
|
||||
System.out.println("utec save data requested:"+tableIdentifier);
|
||||
|
||||
Iterator mapIterate = UtecDataManager.getAllMaps().iterator();
|
||||
|
@ -405,18 +409,42 @@ public class UtecTuningEntityImpl implements TuningEntity{
|
|||
String tableName = split[1];
|
||||
if(mapData.getMapName().equals(tableName)){
|
||||
if(mapType.equals("Fuel")){
|
||||
System.out.println("UTE: Fuel");
|
||||
mapData.setFuelMap(data);
|
||||
System.out.println("UTE: Fuel Set");
|
||||
mapData.setFuelMap(convertObjToDouble(data));
|
||||
}
|
||||
else if(mapType.equals("Boost")){
|
||||
System.out.println("UTE: Boost");
|
||||
mapData.setBoostMap(data);
|
||||
System.out.println("UTE: Boost Set");
|
||||
mapData.setBoostMap(convertObjToDouble(data));
|
||||
}
|
||||
else if(mapType.equals("Timing")){
|
||||
System.out.println("UTE: Timing");
|
||||
mapData.setTimingMap(data);
|
||||
System.out.println("UTE: Timing Set");
|
||||
mapData.setTimingMap(convertObjToDouble(data));
|
||||
}
|
||||
else if(mapType.equals("MapName")){
|
||||
System.out.println("UTE: MapName Set");
|
||||
mapData.setMapName((String)data[0][0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for when dealing with fuel timing and boost tables
|
||||
* @param objData
|
||||
* @return
|
||||
*/
|
||||
private Double[][] convertObjToDouble(Object[][] objData){
|
||||
int length = objData.length;
|
||||
int width = objData[0].length;
|
||||
|
||||
Double[][] newData = new Double[length][width];
|
||||
|
||||
for(int i = 0 ; i < length ; i++){
|
||||
for(int j = 0 ; j < width ; j++){
|
||||
newData[i][j] = (Double)objData[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
return newData;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -474,6 +474,10 @@ public class UtecMapData {
|
|||
return mapName;
|
||||
}
|
||||
|
||||
public void setMapName(String newMapName){
|
||||
this.mapName = newMapName;
|
||||
}
|
||||
|
||||
public void setFuelMapValue(int row, int col, double value){
|
||||
this.fuelMap[col][row] = value;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue