use of CCDD.CcddConstants.ModifiableOtherSettingInfo in project CCDD by nasa.
the class CcddPreferencesDialog method addOtherTab.
/**
********************************************************************************************
* Add the other settings update tab to the tabbed pane
********************************************************************************************
*/
private void addOtherTab() {
// Set the initial layout manager characteristics
GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(ModifiableSpacingInfo.LABEL_VERTICAL_SPACING.getSpacing(), ModifiableSpacingInfo.LABEL_HORIZONTAL_SPACING.getSpacing() / 2, ModifiableSpacingInfo.LABEL_VERTICAL_SPACING.getSpacing(), ModifiableSpacingInfo.LABEL_HORIZONTAL_SPACING.getSpacing() / 2), 0, 0);
// Create a border for the input fields
Border border = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, Color.GRAY), BorderFactory.createEmptyBorder(ModifiableSpacingInfo.INPUT_FIELD_PADDING.getSpacing(), ModifiableSpacingInfo.INPUT_FIELD_PADDING.getSpacing(), ModifiableSpacingInfo.INPUT_FIELD_PADDING.getSpacing(), ModifiableSpacingInfo.INPUT_FIELD_PADDING.getSpacing()));
// Create storage for the description and input field representing each modifiable other
// setting
JLabel[] otherLbl = new JLabel[ModifiableOtherSettingInfo.values().length];
JButton[] otherBtn = new JButton[ModifiableOtherSettingInfo.values().length];
otherFld = new JTextField[ModifiableOtherSettingInfo.values().length];
// Create a panel to contain the other setting components
JPanel innerOtherPnl = new JPanel(new GridBagLayout());
innerOtherPnl.setBorder(emptyBorder);
// Use an outer panel so that the components can be forced to the top of the tab area
JPanel otherPnl = new JPanel(new BorderLayout());
otherPnl.setBorder(emptyBorder);
otherPnl.add(innerOtherPnl, BorderLayout.PAGE_START);
// Create a scroll pane in which to display the other setting labels and fields
JScrollPane otherScrollPane = new JScrollPane(otherPnl);
otherScrollPane.setBorder(emptyBorder);
otherScrollPane.setViewportBorder(emptyBorder);
// Add the other setting update tab to the tabbed pane
tabbedPane.addTab(OTHER, null, otherScrollPane, "Change other program settings");
// Create a listener for the default other setting buttons
ActionListener defaultListener = new ActionListener() {
/**
************************************************************************************
* Update the other setting to the default value
************************************************************************************
*/
@Override
public void actionPerformed(ActionEvent ae) {
// Get the index of the other setting field array, which is stored as the button's
// name
int index = Integer.valueOf(((JButton) ae.getSource()).getName());
// Set the other setting to its default value
otherFld[index].setText(String.valueOf(ModifiableOtherSettingInfo.values()[index].getDefault()));
}
};
int index = 0;
// Step through each modifiable other setting
for (final ModifiableOtherSettingInfo modOther : ModifiableOtherSettingInfo.values()) {
// Create the other setting label and input field
otherLbl[index] = new JLabel(modOther.getName());
otherLbl[index].setFont(ModifiableFontInfo.LABEL_BOLD.getFont());
otherLbl[index].setToolTipText(CcddUtilities.wrapText(modOther.getDescription(), ModifiableSizeInfo.MAX_TOOL_TIP_LENGTH.getSize()));
innerOtherPnl.add(otherLbl[index], gbc);
otherFld[index] = new JTextField(modOther.getValue(), 40);
otherFld[index].setFont(ModifiableFontInfo.INPUT_TEXT.getFont());
otherFld[index].setForeground(ModifiableColorInfo.INPUT_TEXT.getColor());
otherFld[index].setBackground(ModifiableColorInfo.INPUT_BACK.getColor());
otherFld[index].setBorder(border);
otherFld[index].setName(modOther.getPreferenceKey());
otherFld[index].setToolTipText(CcddUtilities.wrapText(modOther.getDescription(), ModifiableSizeInfo.MAX_TOOL_TIP_LENGTH.getSize()));
// Add the other setting field to the other panel
gbc.gridx++;
innerOtherPnl.add(otherFld[index], gbc);
// Create a button for setting the other setting to its default value and add it to the
// other panel
otherBtn[index] = new JButton("Default");
otherBtn[index].setFont(ModifiableFontInfo.DIALOG_BUTTON.getFont());
otherBtn[index].setName(String.valueOf(index));
otherBtn[index].addActionListener(defaultListener);
gbc.gridx++;
innerOtherPnl.add(otherBtn[index], gbc);
gbc.weightx = 1.0;
gbc.gridx++;
innerOtherPnl.add(new JLabel(""), gbc);
gbc.weightx = 0.0;
gbc.gridx = 0;
gbc.gridy++;
index++;
}
// Set the scroll bar scroll increment
otherScrollPane.getVerticalScrollBar().setUnitIncrement(otherFld[0].getPreferredSize().height / 2 + ModifiableSpacingInfo.LABEL_VERTICAL_SPACING.getSpacing());
// Calculate the maximum required height of the panel containing the other setting labels
// and fields (= # of rows * row height)
maxScrollPaneHeight = Math.max(maxScrollPaneHeight, 10 * otherScrollPane.getPreferredSize().height / otherFld.length);
}
use of CCDD.CcddConstants.ModifiableOtherSettingInfo in project CCDD by nasa.
the class CcddPreferencesDialog method initialize.
/**
********************************************************************************************
* Create the preferences dialog
********************************************************************************************
*/
private void initialize() {
maxScrollPaneHeight = 0;
// Create an empty border for use with the dialog components
emptyBorder = BorderFactory.createEmptyBorder();
// Create a tabbed pane
tabbedPane = new DnDTabbedPane(SwingConstants.TOP);
tabbedPane.setFont(ModifiableFontInfo.LABEL_BOLD.getFont());
// Add the tabs to the tabbed pane
addLafTab();
addFontTab();
addColorTab();
addSizeTab();
addSpacingTab();
addPathTab();
addOtherTab();
// Create a panel for the preference dialog buttons
JPanel buttonPnl = new JPanel();
// Update button
final JButton btnUpdateAll = CcddButtonPanelHandler.createButton("Update", STORE_ICON, KeyEvent.VK_U, "Update the program preference values");
// Add a listener for the Update button
btnUpdateAll.addActionListener(new ActionListener() {
/**
************************************************************************************
* Update the program preference values
************************************************************************************
*/
@Override
public void actionPerformed(ActionEvent ae) {
int index = 0;
// Base the action on the name of the tab selected
switch(tabbedPane.getTitleAt(tabbedPane.getSelectedIndex())) {
case LAF:
case FONT:
case COLOR:
// preference value
break;
case SIZE:
// size
for (ModifiableSizeInfo modSize : ModifiableSizeInfo.values()) {
// Get the current value from the size text field
int currentValue = Integer.valueOf(sizeFld[index].getText());
// Check if the size has changed
if (modSize.getSize() != currentValue) {
// Update the size to the new value
modSize.setSize(currentValue, ccddMain.getProgPrefs());
}
index++;
}
break;
case SPACING:
// modifiable spacing
for (ModifiableSpacingInfo modSpacing : ModifiableSpacingInfo.values()) {
// Get the current value from the spacing text field
int currentValue = Integer.valueOf(spacingFld[index].getText());
// Check if the spacing has changed
if (modSpacing.getSpacing() != currentValue) {
// Update the spacing to the new value
modSpacing.setSpacing(currentValue, ccddMain.getProgPrefs());
}
index++;
}
break;
case PATH:
// Update the program path preference. Step through each modifiable path
for (ModifiablePathInfo modPath : ModifiablePathInfo.values()) {
// Get the current path from the path text field
String currentPath = pathFld[index].getText().trim();
// Check if the path has changed
if (!modPath.getPath().equals(currentPath)) {
// Store the path in the program preferences backing store
CcddFileIOHandler.storePath(ccddMain, currentPath, false, modPath);
}
index++;
}
break;
case OTHER:
// setting
for (ModifiableOtherSettingInfo modOther : ModifiableOtherSettingInfo.values()) {
// Get the current setting value from the other setting text field
String currentValue = otherFld[index].getText().trim();
// Check if the setting value has changed
if (!modOther.getValue().equals(currentValue)) {
// Update the other setting to the new value
modOther.setValue(currentValue, ccddMain.getProgPrefs());
}
index++;
}
break;
}
}
});
// Close button
JButton btnCloseDlg = CcddButtonPanelHandler.createButton("Close", CLOSE_ICON, KeyEvent.VK_C, "Close the program preferences dialog");
// Add a listener for the Close button
btnCloseDlg.addActionListener(new ActionListener() {
/**
************************************************************************************
* Close the program preferences dialog
************************************************************************************
*/
@Override
public void actionPerformed(ActionEvent ae) {
// Close the dialog
closeDialog();
}
});
// Listen for tab selection changes
tabbedPane.addChangeListener(new ChangeListener() {
/**
************************************************************************************
* Handle a tab selection change
************************************************************************************
*/
@Override
public void stateChanged(ChangeEvent ce) {
// Get the index of the selected tab
int tabIndex = tabbedPane.getSelectedIndex();
// Check if a tab is selected
if (tabIndex != -1) {
// Base the action of the name of the tab selected
switch(tabbedPane.getTitleAt(tabIndex)) {
case LAF:
case FONT:
case COLOR:
// Hide the update button
btnUpdateAll.setVisible(false);
break;
case SIZE:
case SPACING:
case PATH:
case OTHER:
// Show the update button
btnUpdateAll.setVisible(true);
break;
}
}
}
});
// Add the buttons to the dialog panel
buttonPnl.add(btnUpdateAll);
buttonPnl.add(btnCloseDlg);
// Toggle the tab selection so that the first tab is selected and the Update button
// visibility is set accordingly
tabbedPane.setSelectedIndex(-1);
tabbedPane.setSelectedIndex(0);
// Set the initial size of the preferences dialog based on the individual panes' contents
tabbedPane.setPreferredSize(new Dimension(tabbedPane.getPreferredSize().width + LAF_SCROLL_BAR_WIDTH, maxScrollPaneHeight));
// Display the Preferences dialog
showOptionsDialog(ccddMain.getMainFrame(), tabbedPane, buttonPnl, btnCloseDlg, "Preferences", true);
}
Aggregations