Some gui updates

git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@671 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
Tgui 2007-05-06 17:20:30 +00:00
parent 6033a3c1dc
commit 4ddd77749a
16 changed files with 489 additions and 169 deletions

View File

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

View File

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

View File

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

View File

@ -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;
// 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);
}
}
// Save initial data
this.savedData.push(new ETableSaveState(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;
}
*/
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,5 @@
package enginuity.NewGUI.tools;
public class EnginuityDataTools {
}

View File

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

View File

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

View File

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

View File

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