Search in sources :

Example 1 with ModifiableOtherSettingInfo

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);
}
Also used : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) GridBagConstraints(java.awt.GridBagConstraints) Insets(java.awt.Insets) GridBagLayout(java.awt.GridBagLayout) ModifiableOtherSettingInfo(CCDD.CcddConstants.ModifiableOtherSettingInfo) ActionEvent(java.awt.event.ActionEvent) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) JTextField(javax.swing.JTextField) BorderLayout(java.awt.BorderLayout) ActionListener(java.awt.event.ActionListener) Border(javax.swing.border.Border) BevelBorder(javax.swing.border.BevelBorder)

Example 2 with ModifiableOtherSettingInfo

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);
}
Also used : JPanel(javax.swing.JPanel) ModifiableOtherSettingInfo(CCDD.CcddConstants.ModifiableOtherSettingInfo) ActionEvent(java.awt.event.ActionEvent) JButton(javax.swing.JButton) ModifiablePathInfo(CCDD.CcddConstants.ModifiablePathInfo) Dimension(java.awt.Dimension) DnDTabbedPane(CCDD.CcddClassesComponent.DnDTabbedPane) ActionListener(java.awt.event.ActionListener) PropertyChangeEvent(java.beans.PropertyChangeEvent) ChangeEvent(javax.swing.event.ChangeEvent) ModifiableSizeInfo(CCDD.CcddConstants.ModifiableSizeInfo) ModifiableSpacingInfo(CCDD.CcddConstants.ModifiableSpacingInfo) ChangeListener(javax.swing.event.ChangeListener) PropertyChangeListener(java.beans.PropertyChangeListener)

Aggregations

ModifiableOtherSettingInfo (CCDD.CcddConstants.ModifiableOtherSettingInfo)2 ActionEvent (java.awt.event.ActionEvent)2 ActionListener (java.awt.event.ActionListener)2 JButton (javax.swing.JButton)2 JPanel (javax.swing.JPanel)2 DnDTabbedPane (CCDD.CcddClassesComponent.DnDTabbedPane)1 ModifiablePathInfo (CCDD.CcddConstants.ModifiablePathInfo)1 ModifiableSizeInfo (CCDD.CcddConstants.ModifiableSizeInfo)1 ModifiableSpacingInfo (CCDD.CcddConstants.ModifiableSpacingInfo)1 BorderLayout (java.awt.BorderLayout)1 Dimension (java.awt.Dimension)1 GridBagConstraints (java.awt.GridBagConstraints)1 GridBagLayout (java.awt.GridBagLayout)1 Insets (java.awt.Insets)1 PropertyChangeEvent (java.beans.PropertyChangeEvent)1 PropertyChangeListener (java.beans.PropertyChangeListener)1 JLabel (javax.swing.JLabel)1 JScrollPane (javax.swing.JScrollPane)1 JTextField (javax.swing.JTextField)1 BevelBorder (javax.swing.border.BevelBorder)1