package envoy.client.ui.settings; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JComponent; import javax.swing.JTextPane; import envoy.client.data.Settings; import envoy.client.data.SettingsItem; import envoy.client.ui.Theme; import envoy.util.EnvoyLog; /** * Displays GUI components that allow general settings regarding the client.
*
* Project: envoy-client
* File: GeneralSettingsPanel.java
* Created: 21 Dec 2019
* * @author Maximilian Käfer * @since Envoy Client v0.3-alpha */ public class GeneralSettingsPanel extends SettingsPanel { private Theme theme; private static final String[] items = { "onCloseMode", "enterToSend" }; private static final Logger logger = EnvoyLog.getLogger(GeneralSettingsPanel.class); private static final long serialVersionUID = 0L; /** * This is the constructor for the General class. Here the user can set general * settings for the client. * * @param parent the {@link SettingsScreen} as a part of which this * {@link SettingsPanel} is displayed * @since Envoy Client v0.3-alpha */ public GeneralSettingsPanel(SettingsScreen parent) { super(parent); theme = Settings.getInstance().getCurrentTheme(); setBackground(theme.getCellColor()); GridBagLayout gbl_general = new GridBagLayout(); gbl_general.columnWidths = new int[] { 1, 1 }; gbl_general.rowHeights = new int[] { 1, 1, 1 }; gbl_general.columnWeights = new double[] { 1.0, 0.1 }; gbl_general.rowWeights = new double[] { 0.02, 0.02, 1.0 }; setLayout(gbl_general); for (int i = 0; i < items.length; i++) try { createSettingElement(i, Settings.getInstance().getItems().get(items[i])); } catch (SecurityException | ReflectiveOperationException e) { logger.log(Level.WARNING, "Could not create settings item", e); } } private void createSettingElement(int gridy, SettingsItem settingsItem) throws SecurityException, ReflectiveOperationException { JTextPane descriptionText = new JTextPane(); JComponent settingComponent = settingsItem.getComponent(); GridBagConstraints gbc_toggleSwitch = new GridBagConstraints(); gbc_toggleSwitch.gridx = 1; gbc_toggleSwitch.gridy = gridy; add(settingComponent, gbc_toggleSwitch); descriptionText.setText(settingsItem.getDescription()); descriptionText.setBackground(theme.getBackgroundColor()); descriptionText.setForeground(theme.getBackgroundColor().invert()); descriptionText.setEditable(false); GridBagConstraints gbc_descriptionText = new GridBagConstraints(); gbc_descriptionText.fill = GridBagConstraints.BOTH; gbc_descriptionText.gridx = 0; gbc_descriptionText.gridy = gridy; gbc_descriptionText.insets = new Insets(5, 5, 5, 5); add(descriptionText, gbc_descriptionText); } }