UI Settings:

Click Behavior
 - Click behavior open/close: click to open the table.  If the table is open the next click will close the table.
 - Click behavior open/focus: click to open the table.  If the table is open the next click will focus the table.

Open Table At [0,0]
 - If checked all newly opened tables will open at the point [0,0]
 - If not checked all newly opened tables will cascade from the current selected frame location.  If no table is selected the tables will cascade from the frame at index [0].

 - Moved adding the Rom node to the UI behind applying the table colors.
This commit is contained in:
Scotthew 2013-06-08 15:07:21 -07:00
parent b46b79b6a9
commit 76260cf3cf
6 changed files with 200 additions and 67 deletions

View File

@ -167,6 +167,7 @@ public class Settings implements Serializable {
private Color axisColor = new Color(255, 255, 255);
private Color warningColor = new Color(255, 0, 0);
private int tableClickCount = 1; // number of clicks to open table
private int tableClickBehavior = 0; // TableTreeNode click behavior. 0=open/close frame, 1=open/focus frame
private String loggerPort;
private String loggerPortDefault;
@ -208,6 +209,7 @@ public class Settings implements Serializable {
private boolean openExpanded = true;
private boolean showTableToolbarBorder = false;
private boolean alwaysOpenTableAtZero = false;
private static Map<String, IntfKitSensor> phidgetSensors;
@ -396,6 +398,16 @@ public class Settings implements Serializable {
this.tableClickCount = tableClickCount;
}
public int getTableClickBehavior() {
return tableClickBehavior;
}
public void setTableClickBehavior(int clickBehavior) {
// 0 = open/close
// 1 = open/focus
this.tableClickBehavior = clickBehavior;
}
public String getRecentVersion() {
return recentVersion;
}
@ -766,6 +778,14 @@ public class Settings implements Serializable {
this.showTableToolbarBorder = showBorder;
}
public boolean isAlwaysOpenTableAtZero() {
return alwaysOpenTableAtZero;
}
public void setAlwaysOpenTableAtZero(boolean openAtZero) {
this.alwaysOpenTableAtZero = openAtZero;
}
public static final Map<String, IntfKitSensor> getPhidgetSensors() {
return Settings.phidgetSensors;
}

View File

@ -55,6 +55,7 @@ import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@ -279,6 +280,7 @@ public class ECUEditor extends AbstractFrame {
public void addRom(Rom input) {
input.refreshDisplayedTables();
input.applyTableColorSettings();
// add to ecu image list pane
getImageRoot().add(input);
@ -320,20 +322,48 @@ public class ECUEditor extends AbstractFrame {
infoPanel.add(check);
showMessageDialog(this, infoPanel, "ECU Revision is Obsolete", INFORMATION_MESSAGE);
}
input.applyTableColorSettings();
}
public void displayTable(TableFrame frame) {
try {
// check if frame has been added.
for(JInternalFrame curFrame : getRightPanel().getAllFrames()) {
if(curFrame.equals(frame)) {
// table is already open.
if(1 == getSettings().getTableClickBehavior()) { // open/focus frame
// table is already open, so set focus on the frame.
boolean selected = true;
frame.toFront();
try {
frame.setSelected(true);
} catch (PropertyVetoException e) {
frame.toBack();
selected = false;
}
if(selected) {
frame.requestFocusInWindow();
}
} else { // default to open/close frame
// table is already open, so close the frame.
rightPanel.remove(frame);
frame.setVisible(false);
try {
frame.setClosed(true);
} catch (PropertyVetoException e) {
; // Do nothing.
}
frame.dispose();
}
frame.pack();
rightPanel.repaint();
return;
}
}
// frame not added. add the frame.
rightPanel.add(frame);
} catch (IllegalArgumentException ex) {
// table is already open, so set focus
frame.toFront();
try {
frame.setSelected(true);
} catch (PropertyVetoException e) {
}
frame.requestFocusInWindow();
;// Do nothing.
}
frame.pack();
rightPanel.repaint();

View File

@ -59,30 +59,36 @@ public class MDIDesktopPane extends JDesktopPane {
}
public Component add(JInternalFrame frame) {
JInternalFrame[] array = getAllFrames();
Point p;
int w;
int h;
// check if frame has been added.
for(JInternalFrame curFrame : array) {
if(curFrame.equals(frame)) {
throw new IllegalArgumentException("The frame has been added.");
// get frame location.
if(getEditor().getSettings().isAlwaysOpenTableAtZero()) {
p = new Point(0, 0);
} else {
if (getAllFrames().length > 0) {
JInternalFrame selectedFrame = getSelectedFrame();
if(null == selectedFrame) {
// if none selected get the location at index 0.
p = getAllFrames()[0].getLocation();
} else {
// get the selected frame location and open off of that location.
p = selectedFrame.getLocation();
}
p.x = p.x + Settings.FRAME_OFFSET;
p.y = p.y + Settings.FRAME_OFFSET;
} else {
p = new Point(0, 0);
}
}
Component retval = super.add(frame);
frame.setLocation(p.x, p.y);
checkDesktopSize();
if (array.length > 0) {
p = array[0].getLocation();
p.x = p.x + Settings.FRAME_OFFSET;
p.y = p.y + Settings.FRAME_OFFSET;
} else {
p = new Point(0, 0);
}
frame.setLocation(p.x, p.y);
if (frame.isResizable()) {
w = getWidth() - (getWidth() / 3);
h = getHeight() - (getHeight() / 3);
@ -114,9 +120,7 @@ public class MDIDesktopPane extends JDesktopPane {
@Override
public void remove(Component c) {
super.remove(c);
getEditor().getTableToolBar().updateTableToolBar();
checkDesktopSize();
}

View File

@ -30,6 +30,7 @@ import java.io.File;
import java.util.StringTokenizer;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JCheckBox;
@ -40,6 +41,7 @@ import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import ZoeloeSoft.projects.JFontChooser.JFontChooser;
@ -75,6 +77,7 @@ public class SettingsForm extends JFrame implements MouseListener {
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"));
@ -114,6 +117,12 @@ public class SettingsForm extends JFrame implements MouseListener {
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());
@ -130,6 +139,7 @@ public class SettingsForm extends JFrame implements MouseListener {
chckbxShowTableToolbar.setSelected(settings.isShowTableToolbarBorder());
chckbxOpenRomNode.setSelected(settings.isOpenExpanded());
chckbxOpenTablesAt.setSelected(settings.isAlwaysOpenTableAtZero());
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
@ -176,13 +186,11 @@ public class SettingsForm extends JFrame implements MouseListener {
extensionBin = new javax.swing.JCheckBox();
btnAddAssocs = new javax.swing.JButton();
btnRemoveAssocs = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
tableClickCount = new javax.swing.JComboBox();
editorIconsPanel = new javax.swing.JPanel();
tableIconsPanel = new javax.swing.JPanel();;
chckbxShowTableToolbar = new JCheckBox("Show table toolbar border");
chckbxOpenRomNode = new JCheckBox("Open rom node expanded");
tableIconsPanel = new javax.swing.JPanel();
tableClickBehavior = new javax.swing.JComboBox();
labelTableClick = new javax.swing.JLabel();
tableClickCount = new javax.swing.JComboBox();
clipboardButtonGroup = new ButtonGroup();
rdbtnDefault = new JRadioButton("RomRaider Default");
@ -399,10 +407,6 @@ public class SettingsForm extends JFrame implements MouseListener {
.add(extensionBin)))
);
jLabel1.setText("click to open tables");
tableClickCount.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Single", "Double"}));
initTabs();
settingsTabbedPane.addTab("General", jPanelDefault);
@ -448,52 +452,100 @@ public class SettingsForm extends JFrame implements MouseListener {
}// </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)
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelDefaultLayout.createParallelGroup(Alignment.LEADING)
.addComponent(calcConflictWarning)
.addComponent(obsoleteWarning)
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addComponent(tableClickCount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(jLabel1)))
.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addComponent(chckbxOpenRomNode))
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addComponent(chckbxShowTableToolbar))
.addGroup(jPanelDefaultLayout.createSequentialGroup()
.addContainerGap()
.addComponent(debug)))
.addContainerGap())
.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()
.addGroup(jPanelDefaultLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(jLabel1)
.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)
.addComponent(obsoleteWarning)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(calcConflictWarning)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(chckbxOpenRomNode)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(chckbxShowTableToolbar)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(debug)
.addContainerGap(378, Short.MAX_VALUE))
.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
@ -787,6 +839,7 @@ public class SettingsForm extends JFrame implements MouseListener {
getSettings().setSaveDebugTables(saveDebugTables.isSelected());
getSettings().setDebug(debug.isSelected());
getSettings().setOpenExpanded(chckbxOpenRomNode.isSelected());
getSettings().setAlwaysOpenTableAtZero(chckbxOpenTablesAt.isSelected());
getSettings().setShowTableToolbarBorder(chckbxShowTableToolbar.isSelected());
getSettings().setMaxColor(maxColor.getBackground());
@ -807,6 +860,12 @@ public class SettingsForm extends JFrame implements MouseListener {
getSettings().setTableClickCount(2);
}
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());
@ -887,7 +946,8 @@ public class SettingsForm extends JFrame implements MouseListener {
private javax.swing.JCheckBox extensionHex;
private javax.swing.JLabel highlightColor;
private javax.swing.JLabel increaseColor;
private javax.swing.JLabel jLabel1;
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;
@ -924,4 +984,7 @@ public class SettingsForm extends JFrame implements MouseListener {
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;
}

View File

@ -153,6 +153,11 @@ public final class DOMSettingsBuilder {
tableClickCount.setAttribute("value", String.valueOf(settings.getTableClickCount()));
options.appendChild(tableClickCount);
// table click behavior
IIOMetadataNode tableClickBehavior = new IIOMetadataNode("tableclickbehavior");
tableClickBehavior.setAttribute("value", String.valueOf(settings.getTableClickBehavior()));
options.appendChild(tableClickBehavior);
// last version used
IIOMetadataNode version = new IIOMetadataNode("version");
version.setAttribute("value", versionNumber);
@ -183,6 +188,11 @@ public final class DOMSettingsBuilder {
openRomExpanded.setAttribute("value", String.valueOf(settings.isOpenExpanded()));
options.appendChild(openRomExpanded);
// show table toolbar border
IIOMetadataNode alwaysOpenTableAtZero = new IIOMetadataNode("alwaysopentableatzero");
alwaysOpenTableAtZero.setAttribute("value", String.valueOf(settings.isAlwaysOpenTableAtZero()));
options.appendChild(alwaysOpenTableAtZero);
return options;
}

View File

@ -142,6 +142,9 @@ public final class DOMSettingsUnmarshaller {
} else if (n.getNodeType() == ELEMENT_NODE && n.getNodeName().equalsIgnoreCase("tableclickcount")) {
settings.setTableClickCount(unmarshallAttribute(n, "value", 2));
} else if (n.getNodeType() == ELEMENT_NODE && n.getNodeName().equalsIgnoreCase("tableclickbehavior")) {
settings.setTableClickBehavior(unmarshallAttribute(n, "value", 0));
} else if (n.getNodeType() == ELEMENT_NODE && n.getNodeName().equalsIgnoreCase("version")) {
settings.setRecentVersion(unmarshallAttribute(n, "value", ""));
@ -160,6 +163,9 @@ public final class DOMSettingsUnmarshaller {
} else if (n.getNodeType() == ELEMENT_NODE && n.getNodeName().equalsIgnoreCase("openromexpanded")) {
settings.setOpenExpanded(Boolean.parseBoolean(unmarshallAttribute(n, "value", "true")));
} else if (n.getNodeType() == ELEMENT_NODE && n.getNodeName().equalsIgnoreCase("alwaysopentableatzero")) {
settings.setAlwaysOpenTableAtZero(Boolean.parseBoolean(unmarshallAttribute(n, "value", "false")));
}
}
return settings;