/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.swing;
import static com.romraider.Version.PRODUCT_NAME;
import static java.io.File.separator;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.TitledBorder;
import ZoeloeSoft.projects.JFontChooser.JFontChooser;
import com.romraider.Settings;
import com.romraider.editor.ecu.ECUEditor;
import com.romraider.editor.ecu.ECUEditorManager;
import com.romraider.util.FileAssociator;
import com.romraider.util.SettingsManager;
public class SettingsForm extends JFrame implements MouseListener {
private static final long serialVersionUID = 3910602424260147767L;
public SettingsForm() {
this.setIconImage(getEditor().getIconImage());
initComponents();
initSettings();
maxColor.addMouseListener(this);
minColor.addMouseListener(this);
highlightColor.addMouseListener(this);
selectColor.addMouseListener(this);
axisColor.addMouseListener(this);
increaseColor.addMouseListener(this);
decreaseColor.addMouseListener(this);
warningColor.addMouseListener(this);
btnOk.addMouseListener(this);
btnApply.addMouseListener(this);
btnCancel.addMouseListener(this);
btnChooseFont.addMouseListener(this);
reset.addMouseListener(this);
btnAddAssocs.addMouseListener(this);
btnRemoveAssocs.addMouseListener(this);
tableClickCount.setBackground(Color.WHITE);
tableClickBehavior.setBackground(Color.WHITE);
// disable file association buttons if user is not in Windows
StringTokenizer osName = new StringTokenizer(System.getProperties().getProperty("os.name"));
if (!osName.nextToken().equalsIgnoreCase("windows")) {
btnAddAssocs.setEnabled(false);
btnRemoveAssocs.setEnabled(false);
extensionHex.setEnabled(false);
extensionBin.setEnabled(false);
}
}
private void initSettings() {
Settings settings = getSettings();
obsoleteWarning.setSelected(settings.isObsoleteWarning());
calcConflictWarning.setSelected(settings.isCalcConflictWarning());
displayHighTables.setSelected(settings.isDisplayHighTables());
saveDebugTables.setSelected(settings.isSaveDebugTables());
debug.setSelected(settings.isDebug());
maxColor.setBackground(settings.getMaxColor());
minColor.setBackground(settings.getMinColor());
highlightColor.setBackground(settings.getHighlightColor());
selectColor.setBackground(settings.getSelectColor());
axisColor.setBackground(settings.getAxisColor());
increaseColor.setBackground(settings.getIncreaseBorder());
decreaseColor.setBackground(settings.getDecreaseBorder());
cellWidth.setText(((int) settings.getCellSize().getWidth()) + "");
cellHeight.setText(((int) settings.getCellSize().getHeight()) + "");
btnChooseFont.setFont(settings.getTableFont());
btnChooseFont.setText(settings.getTableFont().getFontName());
if (settings.getTableClickCount() == 1) { // single click opens table
tableClickCount.setSelectedIndex(0);
} else { // double click opens table
tableClickCount.setSelectedIndex(1);
}
if(1 == settings.getTableClickBehavior()) { // open/focus
tableClickBehavior.setSelectedIndex(1);
} else { // open/close
tableClickBehavior.setSelectedIndex(0);
}
valueLimitWarning.setSelected(settings.isValueLimitWarning());
warningColor.setBackground(settings.getWarningColor());
chckbxColorAxis.setSelected(settings.isColorAxis());
defaultScale.setText(settings.getDefaultScale());
if(settings.getTableClipboardFormat().equalsIgnoreCase(Settings.AIRBOYS_CLIPBOARD_FORMAT)) {
this.rdbtnAirboys.setSelected(true);
} else if(settings.getTableClipboardFormat().equalsIgnoreCase(Settings.CUSTOM_CLIPBOARD_FORMAT)) {
this.rdbtnCustom.setSelected(true);
} else {
this.rdbtnDefault.setSelected(true);
}
this.textFieldEditorIconScale.setText(String.valueOf(settings.getEditorIconScale()));
this.textFieldTableIconScale.setText(String.valueOf(settings.getTableIconScale()));
chckbxShowTableToolbar.setSelected(settings.isShowTableToolbarBorder());
chckbxOpenRomNode.setSelected(settings.isOpenExpanded());
chckbxOpenTablesAt.setSelected(settings.isAlwaysOpenTableAtZero());
if(settings.getDefaultScale().equalsIgnoreCase(Settings.DEFAULT_SCALE)) {
comboBoxDefaultScale.setSelectedItem(Settings.DEFAULT_SCALE);
} else if (settings.getDefaultScale().equalsIgnoreCase(Settings.METRIC_SCALE)) {
comboBoxDefaultScale.setSelectedItem(Settings.METRIC_SCALE);
} else if (settings.getDefaultScale().equalsIgnoreCase(Settings.STANDARD_SCALE)) {
comboBoxDefaultScale.setSelectedItem(Settings.STANDARD_SCALE);
} else {
comboBoxDefaultScale.setSelectedIndex(0);
}
cbScaleHeaderAndData.setSelected(settings.isScaleHeadersAndData());
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
obsoleteWarning = new javax.swing.JCheckBox();
calcConflictWarning = new javax.swing.JCheckBox();
debug = new javax.swing.JCheckBox();
btnCancel = new javax.swing.JButton();
btnOk = new javax.swing.JButton();
btnApply = new javax.swing.JButton();
reset = new javax.swing.JButton();
settingsTabbedPane = new javax.swing.JTabbedPane();
jPanelClipboard = new javax.swing.JPanel();
jPanelDefault = new javax.swing.JPanel();
jPanelTableDisplay = new javax.swing.JPanel();
jPanelIcons = new javax.swing.JPanel();
jPanelScale = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
lblAxis = new javax.swing.JLabel();
lblHighlight = new javax.swing.JLabel();
lblSelect = new javax.swing.JLabel();
lblMin = new javax.swing.JLabel();
lblMax = new javax.swing.JLabel();
maxColor = new javax.swing.JLabel();
minColor = new javax.swing.JLabel();
highlightColor = new javax.swing.JLabel();
selectColor = new javax.swing.JLabel();
axisColor = new javax.swing.JLabel();
warningColor = new javax.swing.JLabel();
lblWarning = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
lblIncrease = new javax.swing.JLabel();
increaseColor = new javax.swing.JLabel();
decreaseColor = new javax.swing.JLabel();
lblDecrease = new javax.swing.JLabel();
lblCellHeight = new javax.swing.JLabel();
cellHeight = new javax.swing.JTextField();
cellWidth = new javax.swing.JTextField();
lblCellWidth = new javax.swing.JLabel();
lblFont = new javax.swing.JLabel();
btnChooseFont = new javax.swing.JButton();
saveDebugTables = new javax.swing.JCheckBox();
displayHighTables = new javax.swing.JCheckBox();
valueLimitWarning = new javax.swing.JCheckBox();
chckbxColorAxis = new javax.swing.JCheckBox();
jPanel4 = new javax.swing.JPanel();
extensionHex = new javax.swing.JCheckBox();
extensionBin = new javax.swing.JCheckBox();
btnAddAssocs = new javax.swing.JButton();
btnRemoveAssocs = new javax.swing.JButton();
editorIconsPanel = new javax.swing.JPanel();
tableIconsPanel = new javax.swing.JPanel();
tableClickBehavior = new javax.swing.JComboBox();
labelTableClick = new javax.swing.JLabel();
tableClickCount = new javax.swing.JComboBox();
defaultScale = new javax.swing.JTextField();
comboBoxDefaultScale = new javax.swing.JComboBox();
cbScaleHeaderAndData = new javax.swing.JCheckBox();
clipboardButtonGroup = new ButtonGroup();
rdbtnDefault = new JRadioButton("RomRaider Default");
rdbtnAirboys = new JRadioButton("Airboys Spreadsheet");
rdbtnCustom = new JRadioButton("Custom (manually specify formats in settings.xml)");
clipboardButtonGroup.add(this.rdbtnDefault);
clipboardButtonGroup.add(this.rdbtnAirboys);
clipboardButtonGroup.add(this.rdbtnCustom);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(PRODUCT_NAME + " Settings");
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setFont(new java.awt.Font("Tahoma", 0, 12));
obsoleteWarning.setText("Warn me when opening out of date ECU image revision");
obsoleteWarning.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
obsoleteWarning.setMargin(new java.awt.Insets(0, 0, 0, 0));
calcConflictWarning.setText("Warn me when real and byte value calculations conflict");
calcConflictWarning.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
calcConflictWarning.setMargin(new java.awt.Insets(0, 0, 0, 0));
debug.setText("Debug mode");
debug.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
debug.setEnabled(false);
debug.setMargin(new java.awt.Insets(0, 0, 0, 0));
btnCancel.setMnemonic('C');
btnCancel.setText("Cancel");
btnOk.setMnemonic('O');
btnOk.setText("OK");
btnApply.setMnemonic('A');
btnApply.setText("Apply");
reset.setText("Restore Defaults");
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Background"));
lblAxis.setText("Axis Cell:");
lblHighlight.setText("Highlighted Cell:");
lblSelect.setText("Selected Cell:");
lblMin.setText("Minimum Value:");
lblMax.setText("Maximum Value:");
maxColor.setBackground(new java.awt.Color(255, 0, 0));
maxColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
maxColor.setOpaque(true);
minColor.setBackground(new java.awt.Color(255, 0, 0));
minColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
minColor.setOpaque(true);
highlightColor.setBackground(new java.awt.Color(255, 0, 0));
highlightColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
highlightColor.setOpaque(true);
selectColor.setBackground(new java.awt.Color(255, 0, 0));
selectColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
selectColor.setOpaque(true);
axisColor.setBackground(new java.awt.Color(255, 0, 0));
axisColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
axisColor.setOpaque(true);
warningColor.setBackground(new java.awt.Color(255, 0, 0));
warningColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
warningColor.setOpaque(true);
lblWarning.setText("Warning:");
GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(Alignment.TRAILING)
.addComponent(lblWarning)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(4)
.addComponent(lblMin))
.addComponent(lblMax)))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(maxColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 139, Short.MAX_VALUE)
.addComponent(lblHighlight)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(highlightColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(minColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 172, Short.MAX_VALUE)
.addComponent(lblAxis))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(warningColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 151, Short.MAX_VALUE)
.addComponent(lblSelect)))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.LEADING)
.addComponent(selectColor, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(axisColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE))))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblMax)
.addComponent(maxColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(highlightColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(lblHighlight))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblMin)
.addComponent(minColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(axisColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(lblAxis))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanel2Layout.createParallelGroup(Alignment.BASELINE)
.addComponent(warningColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(lblWarning))
.addComponent(selectColor, GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE)
.addComponent(lblSelect))
.addContainerGap())
);
jPanel2.setLayout(jPanel2Layout);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Cell Borders"));
lblIncrease.setText("Increased:");
increaseColor.setBackground(new java.awt.Color(255, 0, 0));
increaseColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
increaseColor.setOpaque(true);
decreaseColor.setBackground(new java.awt.Color(255, 0, 0));
decreaseColor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
decreaseColor.setOpaque(true);
lblDecrease.setText("Decreased:");
GroupLayout jPanel3Layout = new GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblIncrease)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(increaseColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
.addComponent(lblDecrease)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(decreaseColor, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(decreaseColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)
.addComponent(lblDecrease)
.addComponent(lblIncrease)
.addComponent(increaseColor, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE))
);
lblCellHeight.setText("Cell Height:");
lblCellWidth.setText("Cell Width:");
lblFont.setText("Font:");
btnChooseFont.setText("Choose");
saveDebugTables.setText("Save changes made on tables in debug mode");
saveDebugTables.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
saveDebugTables.setMargin(new java.awt.Insets(0, 0, 0, 0));
displayHighTables.setText("List tables that are above my userlevel");
displayHighTables.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
displayHighTables.setMargin(new java.awt.Insets(0, 0, 0, 0));
valueLimitWarning.setText("Warn when values exceed limits");
valueLimitWarning.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
valueLimitWarning.setMargin(new java.awt.Insets(0, 0, 0, 0));
chckbxColorAxis.setText("Color Axis");
chckbxColorAxis.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
chckbxColorAxis.setMargin(new java.awt.Insets(0, 0, 0, 0));
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("File Associations"));
extensionHex.setText("HEX");
extensionHex.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
extensionHex.setMargin(new java.awt.Insets(0, 0, 0, 0));
extensionBin.setText("BIN");
extensionBin.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
extensionBin.setMargin(new java.awt.Insets(0, 0, 0, 0));
btnAddAssocs.setText("Add Associations");
btnRemoveAssocs.setText("Remove Associations");
GroupLayout jPanel4Layout = new GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(extensionBin)
.addComponent(extensionHex))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 93, Short.MAX_VALUE)
.addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(btnAddAssocs, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnRemoveAssocs))
.addGap(25, 25, 25))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(btnAddAssocs)
.addComponent(extensionHex))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(btnRemoveAssocs)
.addComponent(extensionBin)))
);
initTabs();
settingsTabbedPane.addTab("General", jPanelDefault);
settingsTabbedPane.addTab("Table Display", jPanelTableDisplay);
settingsTabbedPane.addTab("Clipboard", jPanelClipboard);
settingsTabbedPane.addTab("Icons", jPanelIcons);
settingsTabbedPane.addTab("Scale", jPanelScale);
this.cbScaleHeaderAndData = new JCheckBox("Scale Headers and Data.");
this.cbScaleHeaderAndData.setToolTipText("If checked, the header scale will change when the data scale is selected. Otherwise click on a header row or column to select the scale.");
JLabel lblDefaultScale = new JLabel("Default Scale:");
comboBoxDefaultScale.setModel(new DefaultComboBoxModel(new String[] { Settings.DEFAULT_SCALE, Settings.METRIC_SCALE, Settings.STANDARD_SCALE}));
GroupLayout gl_jPanelScale = new GroupLayout(jPanelScale);
gl_jPanelScale.setHorizontalGroup(
gl_jPanelScale.createParallelGroup(Alignment.LEADING)
.addGroup(gl_jPanelScale.createSequentialGroup()
.addContainerGap()
.addGroup(gl_jPanelScale.createParallelGroup(Alignment.LEADING)
.addComponent(cbScaleHeaderAndData)
.addGroup(gl_jPanelScale.createSequentialGroup()
.addComponent(lblDefaultScale)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(comboBoxDefaultScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(277, Short.MAX_VALUE))
);
gl_jPanelScale.setVerticalGroup(
gl_jPanelScale.createParallelGroup(Alignment.LEADING)
.addGroup(gl_jPanelScale.createSequentialGroup()
.addContainerGap()
.addGroup(gl_jPanelScale.createParallelGroup(Alignment.BASELINE)
.addComponent(lblDefaultScale)
.addComponent(comboBoxDefaultScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(cbScaleHeaderAndData)
.addContainerGap(453, Short.MAX_VALUE))
);
jPanelScale.setLayout(gl_jPanelScale);
editorIconsPanel = new JPanel();
// Content Pane Layout
GroupLayout layout = new GroupLayout(getContentPane());
layout.setHorizontalGroup(
layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(Alignment.LEADING)
.addComponent(settingsTabbedPane, Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 432, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(reset)
.addPreferredGap(ComponentPlacement.RELATED, 136, Short.MAX_VALUE)
.addComponent(btnApply)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(btnOk)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(btnCancel)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(settingsTabbedPane, GroupLayout.PREFERRED_SIZE, 542, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(Alignment.BASELINE)
.addComponent(btnCancel)
.addComponent(btnOk)
.addComponent(btnApply)
.addComponent(reset))
.addContainerGap())
);
getContentPane().setLayout(layout);
pack();
}// </editor-fold>//GEN-END:initComponents
private void initTabs() {
JPanel panelUISettings = new JPanel();
panelUISettings.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "UI Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null));
// Init Default Tab Panel
GroupLayout jPanelDefaultLayout = new GroupLayout(jPanelDefault);
jPanelDefaultLayout.setHorizontalGroup(
jPanelDefaultLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelDefaultLayout.createParallelGroup(Alignment.LEADING)
.addComponent(panelUISettings, GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE)
.addComponent(obsoleteWarning)
.addComponent(calcConflictWarning)
.addComponent(debug))
.addContainerGap())
);
jPanelDefaultLayout.setVerticalGroup(
jPanelDefaultLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addComponent(obsoleteWarning)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(calcConflictWarning)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(debug)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(panelUISettings, GroupLayout.PREFERRED_SIZE, 173, GroupLayout.PREFERRED_SIZE)
.addContainerGap(267, Short.MAX_VALUE))
);
chckbxOpenRomNode = new JCheckBox("Open rom node expanded");
chckbxShowTableToolbar = new JCheckBox("Show table toolbar border");
panelTreeSettings = new JPanel();
panelTreeSettings.setBorder(new TitledBorder(null, "Rom Tree Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null));
chckbxOpenTablesAt = new JCheckBox("Always open tables at [0,0]");
GroupLayout gl_panelUISettings = new GroupLayout(panelUISettings);
gl_panelUISettings.setHorizontalGroup(
gl_panelUISettings.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panelUISettings.createSequentialGroup()
.addGroup(gl_panelUISettings.createParallelGroup(Alignment.LEADING)
.addComponent(chckbxOpenRomNode)
.addComponent(chckbxShowTableToolbar))
.addContainerGap(244, Short.MAX_VALUE))
.addComponent(panelTreeSettings, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
.addGroup(gl_panelUISettings.createSequentialGroup()
.addComponent(chckbxOpenTablesAt)
.addContainerGap())
);
gl_panelUISettings.setVerticalGroup(
gl_panelUISettings.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panelUISettings.createSequentialGroup()
.addComponent(chckbxOpenRomNode)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(chckbxShowTableToolbar)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(chckbxOpenTablesAt)
.addPreferredGap(ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
.addComponent(panelTreeSettings, GroupLayout.PREFERRED_SIZE, 69, GroupLayout.PREFERRED_SIZE))
);
labelTableClick.setText("Click to open tables");
tableClickCount.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Single", "Double"}));
tableClickBehavior.setModel(new DefaultComboBoxModel(new String[] {"open/close", "open/focus"}));
lblClickBehavior = new JLabel("Table click behavior");
GroupLayout gl_panelTreeSettings = new GroupLayout(panelTreeSettings);
gl_panelTreeSettings.setHorizontalGroup(
gl_panelTreeSettings.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panelTreeSettings.createSequentialGroup()
.addGroup(gl_panelTreeSettings.createParallelGroup(Alignment.LEADING)
.addComponent(tableClickCount, 0, 72, Short.MAX_VALUE)
.addComponent(tableClickBehavior, 0, 86, Short.MAX_VALUE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_panelTreeSettings.createParallelGroup(Alignment.LEADING)
.addComponent(labelTableClick)
.addComponent(lblClickBehavior))
.addGap(200))
);
gl_panelTreeSettings.setVerticalGroup(
gl_panelTreeSettings.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panelTreeSettings.createSequentialGroup()
.addGroup(gl_panelTreeSettings.createParallelGroup(Alignment.BASELINE)
.addComponent(labelTableClick)
.addComponent(tableClickCount, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_panelTreeSettings.createParallelGroup(Alignment.BASELINE)
.addComponent(lblClickBehavior)
.addComponent(tableClickBehavior, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(23, Short.MAX_VALUE))
);
panelTreeSettings.setLayout(gl_panelTreeSettings);
panelUISettings.setLayout(gl_panelUISettings);
jPanelDefault.setLayout(jPanelDefaultLayout);
// Init Table Display Tab
GroupLayout jPanelTableDisplayLayout = new GroupLayout(jPanelTableDisplay);
jPanelTableDisplayLayout.setHorizontalGroup(
jPanelTableDisplayLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelTableDisplayLayout.createParallelGroup(Alignment.LEADING)
.addComponent(lblCellHeight)
.addComponent(lblFont))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanelTableDisplayLayout.createParallelGroup(Alignment.LEADING)
.addComponent(btnChooseFont)
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addComponent(cellHeight, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 155, Short.MAX_VALUE)
.addComponent(lblCellWidth)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(cellWidth, GroupLayout.PREFERRED_SIZE, 50, GroupLayout.PREFERRED_SIZE)))
.addGap(47))
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, 417, Short.MAX_VALUE)
.addContainerGap())
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, 417, Short.MAX_VALUE)
.addContainerGap())
.addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addComponent(saveDebugTables)
.addContainerGap(184, Short.MAX_VALUE))
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addComponent(displayHighTables)
.addContainerGap(214, Short.MAX_VALUE))
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addComponent(valueLimitWarning)
.addContainerGap(246, Short.MAX_VALUE))
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addComponent(chckbxColorAxis)
.addContainerGap(324, Short.MAX_VALUE))
);
jPanelTableDisplayLayout.setVerticalGroup(
jPanelTableDisplayLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelTableDisplayLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(jPanel4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(saveDebugTables)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(displayHighTables)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(valueLimitWarning)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(chckbxColorAxis)
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanelTableDisplayLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblCellWidth)
.addComponent(cellWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lblCellHeight)
.addComponent(cellHeight, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(jPanelTableDisplayLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblFont)
.addComponent(btnChooseFont, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanelTableDisplay.setLayout(jPanelTableDisplayLayout);
// Init Clipboard Tab Panel
GroupLayout jPanelClipboardLayout = new GroupLayout(jPanelClipboard);
jPanelClipboardLayout.setHorizontalGroup(
jPanelClipboardLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(jPanelClipboardLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelClipboardLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelClipboardLayout.createSequentialGroup()
.addGap(17)
.addGroup(jPanelClipboardLayout.createParallelGroup(Alignment.LEADING)
.addComponent(rdbtnAirboys)
.addComponent(rdbtnDefault)
.addComponent(rdbtnCustom))))
.addGap(157))
);
jPanelClipboardLayout.setVerticalGroup(
jPanelClipboardLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelClipboardLayout.createSequentialGroup()
.addContainerGap()
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(rdbtnDefault)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(rdbtnAirboys)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(rdbtnCustom)
.addGap(435))
);
jPanelClipboard.setLayout(jPanelClipboardLayout);
// Init Icons Tab panel
editorIconsPanel.setBorder(new TitledBorder(null, "Editor Toolbar Icons", TitledBorder.LEADING, TitledBorder.TOP, null, null));
tableIconsPanel.setBorder(new TitledBorder(null, "Table Toolbar Icons", TitledBorder.LEADING, TitledBorder.TOP, null, null));
GroupLayout jPanelIconsLayout = new GroupLayout(jPanelIcons);
jPanelIconsLayout.setHorizontalGroup(
jPanelIconsLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(jPanelIconsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelIconsLayout.createParallelGroup(Alignment.LEADING)
.addComponent(editorIconsPanel, GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE)
.addComponent(tableIconsPanel, GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE))
.addContainerGap())
);
jPanelIconsLayout.setVerticalGroup(
jPanelIconsLayout.createParallelGroup(Alignment.LEADING)
.addGroup(jPanelIconsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(editorIconsPanel, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(tableIconsPanel, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)
.addContainerGap(367, Short.MAX_VALUE))
);
JLabel lblTableIconScale = new JLabel("Scale:");
textFieldTableIconScale = new JTextField();
textFieldTableIconScale.setToolTipText("The percentage of the icons original size.");
textFieldTableIconScale.setColumns(10);
JLabel labelTableScalePercent = new JLabel("%");
GroupLayout tableIconsPanelLayout = new GroupLayout(tableIconsPanel);
tableIconsPanelLayout.setHorizontalGroup(
tableIconsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(tableIconsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lblTableIconScale)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(textFieldTableIconScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(labelTableScalePercent)
.addContainerGap(216, Short.MAX_VALUE))
);
tableIconsPanelLayout.setVerticalGroup(
tableIconsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(tableIconsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(tableIconsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblTableIconScale)
.addComponent(textFieldTableIconScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(labelTableScalePercent))
.addContainerGap(116, Short.MAX_VALUE))
);
tableIconsPanel.setLayout(tableIconsPanelLayout);
JLabel lblEditorIconScale = new JLabel("Scale:");
textFieldEditorIconScale = new JTextField();
textFieldEditorIconScale.setToolTipText("The percentage of the icons original size.");
textFieldEditorIconScale.setColumns(10);
JLabel labelEditorScalePercent = new JLabel("%");
GroupLayout editorIconsPanelLayout = new GroupLayout(editorIconsPanel);
editorIconsPanelLayout.setHorizontalGroup(
editorIconsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(editorIconsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lblEditorIconScale)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(textFieldEditorIconScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(labelEditorScalePercent)
.addContainerGap(216, Short.MAX_VALUE))
);
editorIconsPanelLayout.setVerticalGroup(
editorIconsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(editorIconsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(editorIconsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblEditorIconScale)
.addComponent(textFieldEditorIconScale, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(labelEditorScalePercent))
.addContainerGap(95, Short.MAX_VALUE))
);
editorIconsPanel.setLayout(editorIconsPanelLayout);
jPanelIcons.setLayout(jPanelIconsLayout);
}
@Override
public void mouseClicked(MouseEvent e) {
Settings settings = getSettings();
if (e.getSource() == maxColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getMaxColor());
if (color != null) {
maxColor.setBackground(color);
}
} else if (e.getSource() == minColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getMinColor());
if (color != null) {
minColor.setBackground(color);
}
} else if (e.getSource() == highlightColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getHighlightColor());
if (color != null) {
highlightColor.setBackground(color);
}
} else if (e.getSource() == selectColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getSelectColor());
if (color != null) {
selectColor.setBackground(color);
}
} else if (e.getSource() == axisColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getAxisColor());
if (color != null) {
axisColor.setBackground(color);
}
} else if (e.getSource() == increaseColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getIncreaseBorder());
if (color != null) {
increaseColor.setBackground(color);
}
} else if (e.getSource() == decreaseColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Background Color", settings.getDecreaseBorder());
if (color != null) {
decreaseColor.setBackground(color);
}
} else if (e.getSource() == warningColor) {
Color color = JColorChooser.showDialog(this.getContentPane(),
"Warning Color", settings.getWarningColor());
if (color != null) {
warningColor.setBackground(color);
}
} else if (e.getSource() == btnApply) {
applySettings();
} else if (e.getSource() == btnOk) {
// Apply settings to Settings object.
applySettings();
// Write settings to file.
saveSettings();
this.dispose();
} else if (e.getSource() == btnCancel) {
this.dispose();
} else if (e.getSource() == btnChooseFont) {
JFontChooser fc = new JFontChooser(this);
fc.setLocationRelativeTo(this);
if (fc.showDialog(settings.getTableFont()) == JFontChooser.OK_OPTION) {
btnChooseFont.setFont(fc.getFont());
btnChooseFont.setText(fc.getFont().getFontName());
}
} else if (e.getSource() == reset) {
Settings newSettings = new Settings();
Settings curSettings = getSettings();
newSettings.setEcuDefinitionFiles(curSettings.getEcuDefinitionFiles());
newSettings.setLastImageDir(curSettings.getLastImageDir());
newSettings.setLastRepositoryDir(curSettings.getLastRepositoryDir());
newSettings.setUserLevel(curSettings.getUserLevel());
newSettings.setLoggerDefinitionFilePath(curSettings.getLoggerDefinitionFilePath());
newSettings.setLoggerDebuggingLevel(curSettings.getLoggerDebuggingLevel());
newSettings.setLoggerProfileFilePath(curSettings.getLoggerProfileFilePath());
newSettings.setLoggerOutputDirPath(curSettings.getLoggerOutputDirPath());
SettingsManager.save(newSettings);
initSettings();
} else if (e.getSource() == btnAddAssocs) {
// add file associations for selected file types
boolean added = false;
try {
if (extensionHex.isSelected()) {
FileAssociator.addAssociation("HEX", new File(".").getCanonicalPath() + separator + PRODUCT_NAME + ".exe", "ECU Image");
added = true;
}
if (extensionBin.isSelected()) {
FileAssociator.addAssociation("BIN", new File(".").getCanonicalPath() + separator + PRODUCT_NAME + ".exe", "ECU Image");
added = true;
}
} catch (Exception ex) {
added = false;
} finally {
if(added) {
JOptionPane.showMessageDialog(null, "Association(s) added.", "Add Association Success", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Failed to add association(s).", "Add Association Failure", JOptionPane.ERROR_MESSAGE);
}
}
} else if (e.getSource() == btnRemoveAssocs) {
// remove file associations for selected file types
boolean removed = false;
if (extensionHex.isSelected()) {
removed = FileAssociator.removeAssociation("HEX");
}
if (extensionBin.isSelected()) {
removed = FileAssociator.removeAssociation("BIN");
}
if(removed) {
JOptionPane.showMessageDialog(null, "Association removed.", "Remove Association Success", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Failed to remove association.", "Remove Association Failure", JOptionPane.ERROR_MESSAGE);
}
}
}
public void applySettings() {
try {
Integer.parseInt(cellHeight.getText());
} catch (NumberFormatException ex) {
// number formatted imporperly, reset
cellHeight.setText((int) (getSettings().getCellSize().getHeight()) + "");
}
try {
Integer.parseInt(cellWidth.getText());
} catch (NumberFormatException ex) {
// number formatted imporperly, reset
cellWidth.setText((int) (getSettings().getCellSize().getWidth()) + "");
}
getSettings().setObsoleteWarning(obsoleteWarning.isSelected());
getSettings().setCalcConflictWarning(calcConflictWarning.isSelected());
getSettings().setDisplayHighTables(displayHighTables.isSelected());
getSettings().setSaveDebugTables(saveDebugTables.isSelected());
getSettings().setDebug(debug.isSelected());
getSettings().setOpenExpanded(chckbxOpenRomNode.isSelected());
getSettings().setAlwaysOpenTableAtZero(chckbxOpenTablesAt.isSelected());
getSettings().setShowTableToolbarBorder(chckbxShowTableToolbar.isSelected());
getSettings().setMaxColor(maxColor.getBackground());
getSettings().setMinColor(minColor.getBackground());
getSettings().setHighlightColor(highlightColor.getBackground());
getSettings().setSelectColor(selectColor.getBackground());
getSettings().setAxisColor(axisColor.getBackground());
getSettings().setIncreaseBorder(increaseColor.getBackground());
getSettings().setDecreaseBorder(decreaseColor.getBackground());
getSettings().setScaleHeadersAndData(this.cbScaleHeaderAndData.isSelected());
getSettings().setCellSize(new Dimension(Integer.parseInt(cellWidth.getText()),
Integer.parseInt(cellHeight.getText())));
getSettings().setTableFont(btnChooseFont.getFont());
if (tableClickCount.getSelectedIndex() == 0) { // single click opens table
getSettings().setTableClickCount(1);
} else { // double click opens table
getSettings().setTableClickCount(2);
}
getEditor().getImageList().setToggleClickCount(getSettings().getTableClickCount());
if(1 == tableClickBehavior.getSelectedIndex()) { // open/close frame
getSettings().setTableClickBehavior(1);
} else { // open/focus frame
getSettings().setTableClickBehavior(0);
}
getSettings().setValueLimitWarning(valueLimitWarning.isSelected());
getSettings().setWarningColor(warningColor.getBackground());
getSettings().setColorAxis(chckbxColorAxis.isSelected());
getSettings().setDefaultScale(defaultScale.getText());
if(rdbtnAirboys.isSelected())
{
getSettings().setAirboysFormat();
} else if(rdbtnCustom.isSelected()) {
getSettings().setTableClipboardFormat(Settings.CUSTOM_CLIPBOARD_FORMAT);
// Table Header settings need to be manually edited in the settings.xml file;
} else {
getSettings().setDefaultFormat();
}
try{
getSettings().setEditorIconScale(Integer.parseInt(textFieldEditorIconScale.getText()));
getEditor().getToolBar().updateIcons();
} catch(NumberFormatException ex) {
// Number formatted incorrectly reset.
textFieldEditorIconScale.setText(String.valueOf(getSettings().getEditorIconScale()));
}
try{
getSettings().setTableIconScale(Integer.parseInt(textFieldTableIconScale.getText()));
getEditor().getTableToolBar().updateIcons();
} catch(NumberFormatException ex) {
// Number formatted incorrectly reset.
textFieldTableIconScale.setText(String.valueOf(getSettings().getTableIconScale()));
}
getSettings().setDefaultScale(comboBoxDefaultScale.getSelectedItem().toString());
}
private Settings getSettings()
{
return SettingsManager.getSettings();
}
private ECUEditor getEditor()
{
return ECUEditorManager.getECUEditor();
}
public void saveSettings()
{
saveSettings(getSettings());
}
public void saveSettings(Settings newSettings) {
SettingsManager.save(newSettings);
drawVisibleTables();
getEditor().refreshUI();
}
private void drawVisibleTables() {
for(JInternalFrame frame : getEditor().getRightPanel().getAllFrames()) {
if(frame instanceof TableFrame && frame.isVisible()) {
TableFrame tableFrame = (TableFrame) frame;
tableFrame.getTable().drawTable();
}
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel axisColor;
private javax.swing.JButton btnAddAssocs;
private javax.swing.JButton btnApply;
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnChooseFont;
private javax.swing.JButton btnOk;
private javax.swing.JButton btnRemoveAssocs;
private javax.swing.JCheckBox calcConflictWarning;
private javax.swing.JTextField cellHeight;
private javax.swing.JTextField cellWidth;
private javax.swing.JCheckBox debug;
private javax.swing.JLabel decreaseColor;
private javax.swing.JCheckBox displayHighTables;
private javax.swing.JCheckBox extensionBin;
private javax.swing.JCheckBox extensionHex;
private javax.swing.JLabel highlightColor;
private javax.swing.JLabel selectColor;
private javax.swing.JLabel increaseColor;
private javax.swing.JLabel labelTableClick;
private javax.swing.JLabel lblClickBehavior;
private javax.swing.JTabbedPane settingsTabbedPane;
private javax.swing.JPanel jPanelDefault;
private javax.swing.JPanel jPanelClipboard;
private javax.swing.JPanel jPanelTableDisplay;
private javax.swing.JPanel jPanelIcons;
private javax.swing.JPanel jPanelScale;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JLabel lblAxis;
private javax.swing.JLabel lblCellHeight;
private javax.swing.JLabel lblCellWidth;
private javax.swing.JLabel lblDecrease;
private javax.swing.JLabel lblFont;
private javax.swing.JLabel lblHighlight;
private javax.swing.JLabel lblSelect;
private javax.swing.JLabel lblIncrease;
private javax.swing.JLabel lblMax;
private javax.swing.JLabel lblMin;
private javax.swing.JLabel lblWarning;
private javax.swing.JLabel maxColor;
private javax.swing.JLabel minColor;
private javax.swing.JCheckBox obsoleteWarning;
private javax.swing.JButton reset;
private javax.swing.JCheckBox saveDebugTables;
private javax.swing.JComboBox tableClickCount;
private javax.swing.JCheckBox valueLimitWarning;
private javax.swing.JCheckBox chckbxColorAxis;
private javax.swing.JLabel warningColor;
private ButtonGroup clipboardButtonGroup;
private javax.swing.JRadioButton rdbtnDefault;
private javax.swing.JRadioButton rdbtnAirboys;
private javax.swing.JRadioButton rdbtnCustom;
private JPanel editorIconsPanel;
private JPanel tableIconsPanel;
private JTextField textFieldTableIconScale;
private JTextField textFieldEditorIconScale;
private javax.swing.JCheckBox chckbxShowTableToolbar;
private javax.swing.JCheckBox chckbxOpenRomNode;
private JPanel panelTreeSettings;
private javax.swing.JComboBox tableClickBehavior;
private javax.swing.JCheckBox chckbxOpenTablesAt;
private javax.swing.JTextField defaultScale;
private javax.swing.JComboBox comboBoxDefaultScale;
private javax.swing.JCheckBox cbScaleHeaderAndData;
}