/* * Created by JFormDesigner on Sun Mar 18 19:01:57 CST 2018 */ package featurecat.lizzie.gui; import com.google.common.primitives.Ints; import featurecat.lizzie.Lizzie; import featurecat.lizzie.rules.Board; import org.apache.commons.lang3.StringUtils; import org.eclipse.collections.api.map.ImmutableMap; import org.eclipse.collections.api.map.MutableMap; import org.eclipse.collections.impl.factory.Maps; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Map; import java.util.ResourceBundle; public class OptionDialog extends JDialog { // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables // Generated using JFormDesigner non-commercial license private JPanel dialogPane; private JPanel contentPanel; private JLabel labelVariationLimit; private JRadioButton radioButtonV5; private JRadioButton radioButtonV10; private JRadioButton radioButtonV15; private JRadioButton radioButtonV30; private JRadioButton radioButtonUnlimited; private JLabel labelAxisSetting; private JRadioButton radioButtonA1Top; private JRadioButton radioButtonA1Bottom; private JLabel labelBoardDisplay; private JRadioButton radioButtonBoardClassic; private JRadioButton radioButtonBoardFancy; private JLabel labelSuggestion; private JLabel labelAnalysisModeOn; private JCheckBox checkBoxAnalysisWindowShow; private JCheckBox checkBoxMouseMoveShow; private JLabel labelLeelazCommandLine; private JTextField textFieldLeelazCommandLine; private JLabel labelNotes; private JButton buttonResetCommandLine; private JLabel labelMoveNumber; private JCheckBox checkBoxShowMoveNumber; private JCheckBox checkBoxMoveNumberLimit; private JTextField textFieldMoveNumberLimitCount; private JLabel labelMoveNumberLimitLabelTail; private JCheckBox checkBoxPlayoutsInShortForm; private JLabel labelTryPlayingMode; private JCheckBox checkBoxAutoEnterTryPlayingMode; private JLabel labelMainWindow; private JCheckBox checkBoxMainWindowAlwaysOnTop; private JCheckBox checkBoxShowBlackSuggestion; private JLabel labelMaxAnalysisTime; private JLabel labelAnalysisTimeUnit; private JCheckBox checkBoxShowWhiteSuggestion; private JCheckBox checkBoxFancyStones; private JLabel labelStoneDisplay; private JCheckBox checkBoxShowShadow; private JSpinner spinnerShadowSize; private JCheckBox checkBoxShowNextMove; private JButton buttonManage; private JCheckBox checkBoxTransparentVariation; private JCheckBox checkBoxAutoStartThinkingAfterPlacingMoves; private JCheckBox checkBoxShowAxis; private JLabel labelBoardColor; private JLabel labelBestSuggestionColorHint; private JLabel labelBestSuggestionColor; private JLabel labelWinrate; private JCheckBox checkBoxAlwaysShowBlackWinrate; private JCheckBox checkBoxShowWhiteWinrateWithWhiteFonts; private JSpinner spinnerMaxAnalysisTime; private JPanel buttonBar; private JButton okButton; private JButton cancelButton; private JPanel panelBasicSettings; private JLabel labelBoardSize; private JRadioButton radioButtonBoard19x19; private JRadioButton radioButtonBoard15x15; private JRadioButton radioButtonBoard13x13; private JRadioButton radioButtonBoard9x9; private JRadioButton radioButtonBoard7x7; private JRadioButton radioButtonBoard5x5; // JFormDesigner - End of variables declaration //GEN-END:variables private ImmutableMap<OptionSetting.BoardSize, JRadioButton> boardSizeToRadioButtonMap; public OptionDialog(Window owner) { super(owner); initComponents(); initOtherComponents(); } public void setDialogSetting(OptionSetting setting) { JRadioButton selectedBoardSizeRadioButton = boardSizeToRadioButtonMap.get(setting.getBoardSize()); if (selectedBoardSizeRadioButton != null) { selectedBoardSizeRadioButton.setSelected(true); } else { radioButtonBoard19x19.setSelected(true); } switch (setting.getVariationLimit()) { case 5: radioButtonV5.setSelected(true); break; case 10: radioButtonV10.setSelected(true); break; case 15: radioButtonV15.setSelected(true); break; case 30: radioButtonV30.setSelected(true); break; default: radioButtonUnlimited.setSelected(true); break; } checkBoxShowAxis.setSelected(setting.isShowAxis()); if (setting.isA1OnTop()) { radioButtonA1Top.setSelected(true); } else { radioButtonA1Bottom.setSelected(true); } if (setting.isShowFancyBoard()) { radioButtonBoardFancy.setSelected(true); } else { radioButtonBoardClassic.setSelected(true); } labelBoardColor.setBackground(setting.getBoardColor().toColor()); checkBoxFancyStones.setSelected(setting.isShowFancyStone()); checkBoxShowShadow.setSelected(setting.isShowShadow()); spinnerShadowSize.setValue(Ints.constrainToRange(setting.getShadowSize(), 0, 999)); checkBoxPlayoutsInShortForm.setSelected(setting.isPlayoutsInShortForm()); checkBoxShowNextMove.setSelected(setting.isShowNextMove()); checkBoxAnalysisWindowShow.setSelected(setting.isAnalysisWindowShow()); checkBoxMouseMoveShow.setSelected(setting.isMouseOverShowMove()); checkBoxShowBlackSuggestion.setSelected(setting.isShowBlackSuggestion()); checkBoxShowWhiteSuggestion.setSelected(setting.isShowWhiteSuggestion()); textFieldLeelazCommandLine.setText(setting.getLeelazCommandLine()); checkBoxShowMoveNumber.setSelected(setting.isShowMoveNumber()); if (setting.getNumberOfLastMovesShown() <= 0) { setting.setNumberOfLastMovesShown(new OptionSetting().getNumberOfLastMovesShown()); } if (setting.getNumberOfLastMovesShown() == Integer.MAX_VALUE) { checkBoxMoveNumberLimit.setSelected(false); } else { checkBoxMoveNumberLimit.setSelected(true); textFieldMoveNumberLimitCount.setText(String.valueOf(setting.getNumberOfLastMovesShown())); } checkBoxAutoEnterTryPlayingMode.setSelected(setting.isAutoEnterTryPlayingMode()); checkBoxMainWindowAlwaysOnTop.setSelected(setting.isMainWindowAlwaysOnTop()); spinnerMaxAnalysisTime.setValue(setting.getMaxAnalysisTime()); checkBoxTransparentVariation.setSelected(setting.isVariationTransparent()); checkBoxAutoStartThinkingAfterPlacingMoves.setSelected(setting.isAutoStartAnalyzingAfterPlacingMoves()); labelBestSuggestionColor.setBackground(setting.getBestSuggestionColor().toColor()); checkBoxAlwaysShowBlackWinrate.setSelected(setting.isAlwaysShowBlackWinrate()); checkBoxShowWhiteWinrateWithWhiteFonts.setSelected(setting.isShowWhiteWinrateWithWhiteFonts()); } public void readDialogSetting(OptionSetting setting) { setting.setBoardSize(new OptionSetting.BoardSize(19, 19)); // Default value for (Map.Entry<OptionSetting.BoardSize, JRadioButton> entry : boardSizeToRadioButtonMap.castToMap().entrySet()) { OptionSetting.BoardSize boardSize = entry.getKey(); JRadioButton radioButton = entry.getValue(); if (radioButton.isSelected()) { setting.setBoardSize(boardSize); break; } } int variationLimit; if (radioButtonV5.isSelected()) { variationLimit = 5; } else if (radioButtonV10.isSelected()) { variationLimit = 10; } else if (radioButtonV15.isSelected()) { variationLimit = 15; } else if (radioButtonV30.isSelected()) { variationLimit = 30; } else { variationLimit = Integer.MAX_VALUE; } setting.setShowFancyBoard(radioButtonBoardFancy.isSelected()); setting.setBoardColor(new OptionSetting.ColorSetting(labelBoardColor.getBackground())); setting.setShowFancyStone(checkBoxFancyStones.isSelected()); setting.setShowShadow(checkBoxShowShadow.isSelected()); setting.setShadowSize((Integer) spinnerShadowSize.getValue()); setting.setVariationLimit(variationLimit); setting.setPlayoutsInShortForm(checkBoxPlayoutsInShortForm.isSelected()); setting.setShowNextMove(checkBoxShowNextMove.isSelected()); setting.setShowAxis(checkBoxShowAxis.isSelected()); setting.setA1OnTop(radioButtonA1Top.isSelected()); setting.setAnalysisWindowShow(checkBoxAnalysisWindowShow.isSelected()); setting.setMouseOverShowMove(checkBoxMouseMoveShow.isSelected()); setting.setShowBlackSuggestion(checkBoxShowBlackSuggestion.isSelected()); setting.setShowWhiteSuggestion(checkBoxShowWhiteSuggestion.isSelected()); String newLeelazCommandLine = textFieldLeelazCommandLine.getText().trim(); if (StringUtils.isEmpty(newLeelazCommandLine)) { setting.setLeelazCommandLine(new OptionSetting().getLeelazCommandLine()); } else { setting.setLeelazCommandLine(newLeelazCommandLine); } setting.setShowMoveNumber(checkBoxShowMoveNumber.isSelected()); if (checkBoxMoveNumberLimit.isSelected()) { try { int moveNumberLimit = Integer.parseInt(textFieldMoveNumberLimitCount.getText()); if (moveNumberLimit <= 0) { moveNumberLimit = new OptionSetting().getNumberOfLastMovesShown(); } setting.setNumberOfLastMovesShown(moveNumberLimit); } catch (NumberFormatException e) { setting.setNumberOfLastMovesShown(new OptionSetting().getNumberOfLastMovesShown()); } } else { setting.setNumberOfLastMovesShown(Integer.MAX_VALUE); } setting.setAutoEnterTryPlayingMode(checkBoxAutoEnterTryPlayingMode.isSelected()); setting.setMainWindowAlwaysOnTop(checkBoxMainWindowAlwaysOnTop.isSelected()); setting.setMaxAnalysisTime((Integer) spinnerMaxAnalysisTime.getValue()); setting.setVariationTransparent(checkBoxTransparentVariation.isSelected()); setting.setAutoStartAnalyzingAfterPlacingMoves(checkBoxAutoStartThinkingAfterPlacingMoves.isSelected()); setting.setBestSuggestionColor(new OptionSetting.ColorSetting(labelBestSuggestionColor.getBackground())); setting.setAlwaysShowBlackWinrate(checkBoxAlwaysShowBlackWinrate.isSelected()); setting.setShowWhiteWinrateWithWhiteFonts(checkBoxShowWhiteWinrateWithWhiteFonts.isSelected()); } private void cancelButtonActionPerformed(ActionEvent e) { setVisible(false); } private void okButtonActionPerformed(ActionEvent e) { doApplySettings(); } private void doApplySettings() { String originalCommandLine = Lizzie.optionSetting.getLeelazCommandLine(); readDialogSetting(Lizzie.optionSetting); if (!Lizzie.optionSetting.isShowBlackSuggestion() || !Lizzie.optionSetting.isShowWhiteSuggestion() || !Lizzie.optionSetting.isAnalysisWindowShow()) { Lizzie.analysisFrame.getAnalysisTableModel().clearSelectedMove(); } Lizzie.analysisDialog.setVisible(Lizzie.optionSetting.isAnalysisWindowShow()); Lizzie.frame.setAlwaysOnTop(Lizzie.optionSetting.isMainWindowAlwaysOnTop()); Lizzie.frame.getBoardRenderer().forceCachedBackgroundImageRefresh(); Lizzie.frame.getBoardRenderer().forceCachedStoneImageRefresh(); if (Board.BOARD_SIZE != Lizzie.optionSetting.getBoardSize().getWidth()) { Board.changeBoardSize(Lizzie.optionSetting.getBoardSize().getWidth()); Lizzie.clearBoardAndState(); } Lizzie.frame.repaint(); setVisible(false); if (!StringUtils.equals(originalCommandLine, Lizzie.optionSetting.getLeelazCommandLine())) { Lizzie.switchEngineBySetting(); } } private void buttonResetCommandLineActionPerformed(ActionEvent e) { textFieldLeelazCommandLine.setText(new OptionSetting().getLeelazCommandLine()); } private void buttonManageActionPerformed(ActionEvent e) { // Show dialog EngineProfileManagerDialog engineProfileManagerDialog = new EngineProfileManagerDialog(this); engineProfileManagerDialog.setVisible(true); if (engineProfileManagerDialog.isUserApproved()) { Lizzie.optionSetting.setEngineProfileList(engineProfileManagerDialog.getProfileList()); } } private void labelBoardColorMouseClicked(MouseEvent e) { Color newColor = JColorChooser.showDialog(this, "Lizzie", labelBoardColor.getBackground()); if (newColor != null) { labelBoardColor.setBackground(newColor); } } private void labelBestSuggestionColorMouseClicked(MouseEvent e) { Color newColor = JColorChooser.showDialog(this, "Lizzie", labelBestSuggestionColor.getBackground()); if (newColor != null) { labelBestSuggestionColor.setBackground(newColor); } } private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents // Generated using JFormDesigner non-commercial license ResourceBundle bundle = ResourceBundle.getBundle("featurecat.lizzie.i18n.GuiBundle"); dialogPane = new JPanel(); contentPanel = new JPanel(); labelVariationLimit = new JLabel(); radioButtonV5 = new JRadioButton(); radioButtonV10 = new JRadioButton(); radioButtonV15 = new JRadioButton(); radioButtonV30 = new JRadioButton(); radioButtonUnlimited = new JRadioButton(); labelAxisSetting = new JLabel(); radioButtonA1Top = new JRadioButton(); radioButtonA1Bottom = new JRadioButton(); labelBoardDisplay = new JLabel(); radioButtonBoardClassic = new JRadioButton(); radioButtonBoardFancy = new JRadioButton(); labelSuggestion = new JLabel(); labelAnalysisModeOn = new JLabel(); checkBoxAnalysisWindowShow = new JCheckBox(); checkBoxMouseMoveShow = new JCheckBox(); labelLeelazCommandLine = new JLabel(); textFieldLeelazCommandLine = new JTextField(); labelNotes = new JLabel(); buttonResetCommandLine = new JButton(); labelMoveNumber = new JLabel(); checkBoxShowMoveNumber = new JCheckBox(); checkBoxMoveNumberLimit = new JCheckBox(); textFieldMoveNumberLimitCount = new JTextField(); labelMoveNumberLimitLabelTail = new JLabel(); checkBoxPlayoutsInShortForm = new JCheckBox(); labelTryPlayingMode = new JLabel(); checkBoxAutoEnterTryPlayingMode = new JCheckBox(); labelMainWindow = new JLabel(); checkBoxMainWindowAlwaysOnTop = new JCheckBox(); checkBoxShowBlackSuggestion = new JCheckBox(); labelMaxAnalysisTime = new JLabel(); labelAnalysisTimeUnit = new JLabel(); checkBoxShowWhiteSuggestion = new JCheckBox(); checkBoxFancyStones = new JCheckBox(); labelStoneDisplay = new JLabel(); checkBoxShowShadow = new JCheckBox(); spinnerShadowSize = new JSpinner(); checkBoxShowNextMove = new JCheckBox(); buttonManage = new JButton(); checkBoxTransparentVariation = new JCheckBox(); checkBoxAutoStartThinkingAfterPlacingMoves = new JCheckBox(); checkBoxShowAxis = new JCheckBox(); labelBoardColor = new JLabel(); labelBestSuggestionColorHint = new JLabel(); labelBestSuggestionColor = new JLabel(); labelWinrate = new JLabel(); checkBoxAlwaysShowBlackWinrate = new JCheckBox(); checkBoxShowWhiteWinrateWithWhiteFonts = new JCheckBox(); spinnerMaxAnalysisTime = new JSpinner(); buttonBar = new JPanel(); okButton = new JButton(); cancelButton = new JButton(); panelBasicSettings = new JPanel(); labelBoardSize = new JLabel(); radioButtonBoard19x19 = new JRadioButton(); radioButtonBoard15x15 = new JRadioButton(); radioButtonBoard13x13 = new JRadioButton(); radioButtonBoard9x9 = new JRadioButton(); radioButtonBoard7x7 = new JRadioButton(); radioButtonBoard5x5 = new JRadioButton(); //======== this ======== setTitle(bundle.getString("OptionDialog.this.title")); setModal(true); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); //======== dialogPane ======== { dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12)); dialogPane.setLayout(new BorderLayout()); //======== contentPanel ======== { //---- labelVariationLimit ---- labelVariationLimit.setText(bundle.getString("OptionDialog.labelVariationLimit.text")); //---- radioButtonV5 ---- radioButtonV5.setText(bundle.getString("OptionDialog.radioButtonV5.text")); //---- radioButtonV10 ---- radioButtonV10.setText(bundle.getString("OptionDialog.radioButtonV10.text")); //---- radioButtonV15 ---- radioButtonV15.setText(bundle.getString("OptionDialog.radioButtonV15.text")); //---- radioButtonV30 ---- radioButtonV30.setText(bundle.getString("OptionDialog.radioButtonV30.text")); //---- radioButtonUnlimited ---- radioButtonUnlimited.setText(bundle.getString("OptionDialog.radioButtonUnlimited.text")); radioButtonUnlimited.setSelected(true); //---- labelAxisSetting ---- labelAxisSetting.setText(bundle.getString("OptionDialog.labelAxisSetting.text")); //---- radioButtonA1Top ---- radioButtonA1Top.setText(bundle.getString("OptionDialog.radioButtonA1Top.text")); //---- radioButtonA1Bottom ---- radioButtonA1Bottom.setText(bundle.getString("OptionDialog.radioButtonA1Bottom.text")); radioButtonA1Bottom.setSelected(true); //---- labelBoardDisplay ---- labelBoardDisplay.setText(bundle.getString("OptionDialog.labelBoardDisplay.text")); //---- radioButtonBoardClassic ---- radioButtonBoardClassic.setText(bundle.getString("OptionDialog.radioButtonBoardClassic.text")); //---- radioButtonBoardFancy ---- radioButtonBoardFancy.setText(bundle.getString("OptionDialog.radioButtonBoardFancy.text")); radioButtonBoardFancy.setSelected(true); //---- labelSuggestion ---- labelSuggestion.setText(bundle.getString("OptionDialog.labelSuggestion.text")); //---- labelAnalysisModeOn ---- labelAnalysisModeOn.setText(bundle.getString("OptionDialog.labelAnalysisModeOn.text")); //---- checkBoxAnalysisWindowShow ---- checkBoxAnalysisWindowShow.setText(bundle.getString("OptionDialog.checkBoxAnalysisWindowShow.text")); checkBoxAnalysisWindowShow.setSelected(true); //---- checkBoxMouseMoveShow ---- checkBoxMouseMoveShow.setText(bundle.getString("OptionDialog.checkBoxMouseMoveShow.text")); //---- labelLeelazCommandLine ---- labelLeelazCommandLine.setText(bundle.getString("OptionDialog.labelLeelazCommandLine.text")); //---- textFieldLeelazCommandLine ---- textFieldLeelazCommandLine.setText("./leelaz -g -t2 -wnetwork -b0"); //---- labelNotes ---- labelNotes.setText(bundle.getString("OptionDialog.labelNotes.text")); labelNotes.setFont(labelNotes.getFont().deriveFont(labelNotes.getFont().getStyle() | Font.BOLD)); //---- buttonResetCommandLine ---- buttonResetCommandLine.setText(bundle.getString("OptionDialog.buttonResetCommandLine.text")); buttonResetCommandLine.addActionListener(e -> buttonResetCommandLineActionPerformed(e)); //---- labelMoveNumber ---- labelMoveNumber.setText(bundle.getString("OptionDialog.labelMoveNumber.text")); //---- checkBoxShowMoveNumber ---- checkBoxShowMoveNumber.setText(bundle.getString("OptionDialog.checkBoxShowMoveNumber.text")); checkBoxShowMoveNumber.setSelected(true); //---- checkBoxMoveNumberLimit ---- checkBoxMoveNumberLimit.setText(bundle.getString("OptionDialog.checkBoxMoveNumberLimit.text")); //---- textFieldMoveNumberLimitCount ---- textFieldMoveNumberLimitCount.setText("30"); //---- labelMoveNumberLimitLabelTail ---- labelMoveNumberLimitLabelTail.setText(bundle.getString("OptionDialog.labelMoveNumberLimitLabelTail.text")); //---- checkBoxPlayoutsInShortForm ---- checkBoxPlayoutsInShortForm.setText(bundle.getString("OptionDialog.checkBoxPlayoutsInShortForm.text")); //---- labelTryPlayingMode ---- labelTryPlayingMode.setText(bundle.getString("OptionDialog.labelTryPlayingMode.text")); //---- checkBoxAutoEnterTryPlayingMode ---- checkBoxAutoEnterTryPlayingMode.setText(bundle.getString("OptionDialog.checkBoxAutoEnterTryPlayingMode.text")); //---- labelMainWindow ---- labelMainWindow.setText(bundle.getString("OptionDialog.labelMainWindow.text")); //---- checkBoxMainWindowAlwaysOnTop ---- checkBoxMainWindowAlwaysOnTop.setText(bundle.getString("OptionDialog.checkBoxMainWindowAlwaysOnTop.text")); //---- checkBoxShowBlackSuggestion ---- checkBoxShowBlackSuggestion.setText(bundle.getString("OptionDialog.checkBoxShowBlackSuggestion.text")); checkBoxShowBlackSuggestion.setSelected(true); //---- labelMaxAnalysisTime ---- labelMaxAnalysisTime.setText(bundle.getString("OptionDialog.labelMaxAnalysisTime.text")); //---- labelAnalysisTimeUnit ---- labelAnalysisTimeUnit.setText(bundle.getString("OptionDialog.labelAnalysisTimeUnit.text")); //---- checkBoxShowWhiteSuggestion ---- checkBoxShowWhiteSuggestion.setText(bundle.getString("OptionDialog.checkBoxShowWhiteSuggestion.text")); checkBoxShowWhiteSuggestion.setSelected(true); //---- checkBoxFancyStones ---- checkBoxFancyStones.setText(bundle.getString("OptionDialog.checkBoxFancyStones.text")); checkBoxFancyStones.setSelected(true); //---- labelStoneDisplay ---- labelStoneDisplay.setText(bundle.getString("OptionDialog.labelStoneDisplay.text")); //---- checkBoxShowShadow ---- checkBoxShowShadow.setText(bundle.getString("OptionDialog.checkBoxShowShadow.text")); checkBoxShowShadow.setSelected(true); //---- spinnerShadowSize ---- spinnerShadowSize.setModel(new SpinnerNumberModel(100, 0, 999, 1)); //---- checkBoxShowNextMove ---- checkBoxShowNextMove.setText(bundle.getString("OptionDialog.checkBoxShowNextMove.text")); //---- buttonManage ---- buttonManage.setText(bundle.getString("OptionDialog.buttonManage.text")); buttonManage.addActionListener(e -> buttonManageActionPerformed(e)); //---- checkBoxTransparentVariation ---- checkBoxTransparentVariation.setText(bundle.getString("OptionDialog.checkBoxTransparentVariation.text")); //---- checkBoxAutoStartThinkingAfterPlacingMoves ---- checkBoxAutoStartThinkingAfterPlacingMoves.setText(bundle.getString("OptionDialog.checkBoxAutoStartThinkingAfterPlacingMoves.text")); checkBoxAutoStartThinkingAfterPlacingMoves.setSelected(true); //---- checkBoxShowAxis ---- checkBoxShowAxis.setText(bundle.getString("OptionDialog.checkBoxShowAxis.text")); checkBoxShowAxis.setSelected(true); //---- labelBoardColor ---- labelBoardColor.setPreferredSize(new Dimension(21, 21)); labelBoardColor.setBackground(new Color(178, 140, 0)); labelBoardColor.setOpaque(true); labelBoardColor.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { labelBoardColorMouseClicked(e); } }); //---- labelBestSuggestionColorHint ---- labelBestSuggestionColorHint.setText(bundle.getString("OptionDialog.labelBestSuggestionColorHint.text")); //---- labelBestSuggestionColor ---- labelBestSuggestionColor.setBackground(Color.red); labelBestSuggestionColor.setOpaque(true); labelBestSuggestionColor.setPreferredSize(new Dimension(21, 21)); labelBestSuggestionColor.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { labelBestSuggestionColorMouseClicked(e); } }); //---- labelWinrate ---- labelWinrate.setText(bundle.getString("OptionDialog.labelWinrate.text")); //---- checkBoxAlwaysShowBlackWinrate ---- checkBoxAlwaysShowBlackWinrate.setText(bundle.getString("OptionDialog.checkBoxAlwaysShowBlackWinrate.text")); //---- checkBoxShowWhiteWinrateWithWhiteFonts ---- checkBoxShowWhiteWinrateWithWhiteFonts.setText(bundle.getString("OptionDialog.checkBoxShowWhiteWinrateWithWhiteFonts.text")); //---- spinnerMaxAnalysisTime ---- spinnerMaxAnalysisTime.setModel(new SpinnerNumberModel(120, 1, 3600, 1)); GroupLayout contentPanelLayout = new GroupLayout(contentPanel); contentPanel.setLayout(contentPanelLayout); contentPanelLayout.setHorizontalGroup( contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelLeelazCommandLine) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(textFieldLeelazCommandLine, GroupLayout.PREFERRED_SIZE, 283, GroupLayout.PREFERRED_SIZE) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonManage, GroupLayout.PREFERRED_SIZE, 102, GroupLayout.PREFERRED_SIZE) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonResetCommandLine, GroupLayout.PREFERRED_SIZE, 95, GroupLayout.PREFERRED_SIZE) .addContainerGap(30, Short.MAX_VALUE)) .addGroup(contentPanelLayout.createSequentialGroup() .addGroup(contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelVariationLimit) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonV5) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonV10) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonV15) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonV30) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonUnlimited) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxTransparentVariation)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelAxisSetting) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowAxis) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonA1Top) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonA1Bottom)) .addComponent(labelNotes) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelMoveNumber) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowMoveNumber) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxMoveNumberLimit) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(textFieldMoveNumberLimitCount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelMoveNumberLimitLabelTail)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelTryPlayingMode) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxAutoEnterTryPlayingMode)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelMainWindow) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxMainWindowAlwaysOnTop)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelBoardDisplay) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonBoardFancy) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioButtonBoardClassic) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelBoardColor, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelStoneDisplay) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxFancyStones) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowShadow) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerShadowSize, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelAnalysisModeOn) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup() .addComponent(checkBoxAutoStartThinkingAfterPlacingMoves) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(checkBoxAnalysisWindowShow) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxMouseMoveShow) .addGap(18, 18, 18) .addComponent(labelMaxAnalysisTime) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMaxAnalysisTime, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelAnalysisTimeUnit)))) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelSuggestion) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelBestSuggestionColorHint) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelBestSuggestionColor, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(checkBoxShowBlackSuggestion) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowWhiteSuggestion) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxPlayoutsInShortForm) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowNextMove)))) .addGroup(contentPanelLayout.createSequentialGroup() .addComponent(labelWinrate) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxAlwaysShowBlackWinrate) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxShowWhiteWinrateWithWhiteFonts))) .addGap(0, 68, Short.MAX_VALUE)))) ); contentPanelLayout.setVerticalGroup( contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(contentPanelLayout.createParallelGroup() .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(radioButtonUnlimited) .addComponent(checkBoxTransparentVariation)) .addComponent(radioButtonV30) .addComponent(radioButtonV15) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelVariationLimit) .addComponent(radioButtonV5)) .addComponent(radioButtonV10)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelAxisSetting, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE) .addComponent(radioButtonA1Top) .addComponent(radioButtonA1Bottom) .addComponent(checkBoxShowAxis)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelBoardDisplay) .addComponent(radioButtonBoardFancy) .addComponent(radioButtonBoardClassic) .addComponent(labelBoardColor, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelStoneDisplay) .addComponent(checkBoxShowShadow) .addComponent(spinnerShadowSize, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(checkBoxFancyStones)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelSuggestion) .addComponent(checkBoxShowBlackSuggestion) .addComponent(checkBoxShowWhiteSuggestion) .addComponent(checkBoxPlayoutsInShortForm) .addComponent(checkBoxShowNextMove)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup() .addComponent(labelBestSuggestionColorHint) .addComponent(labelBestSuggestionColor, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelAnalysisModeOn) .addComponent(checkBoxAnalysisWindowShow) .addComponent(checkBoxMouseMoveShow) .addComponent(labelMaxAnalysisTime) .addComponent(labelAnalysisTimeUnit) .addComponent(spinnerMaxAnalysisTime, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkBoxAutoStartThinkingAfterPlacingMoves) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelWinrate) .addComponent(checkBoxAlwaysShowBlackWinrate) .addComponent(checkBoxShowWhiteWinrateWithWhiteFonts)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelLeelazCommandLine) .addComponent(textFieldLeelazCommandLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(buttonManage) .addComponent(buttonResetCommandLine)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelMoveNumber) .addComponent(checkBoxShowMoveNumber) .addComponent(checkBoxMoveNumberLimit) .addComponent(textFieldMoveNumberLimitCount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(labelMoveNumberLimitLabelTail)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelTryPlayingMode) .addComponent(checkBoxAutoEnterTryPlayingMode)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) .addGroup(contentPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(labelMainWindow) .addComponent(checkBoxMainWindowAlwaysOnTop)) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) .addComponent(labelNotes) .addContainerGap()) ); } dialogPane.add(contentPanel, BorderLayout.CENTER); //======== buttonBar ======== { buttonBar.setBorder(new EmptyBorder(12, 0, 0, 0)); buttonBar.setLayout(new GridBagLayout()); ((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 85, 80}; ((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0}; //---- okButton ---- okButton.setText(bundle.getString("OptionDialog.okButton.text")); okButton.addActionListener(e -> okButtonActionPerformed(e)); buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 5), 0, 0)); //---- cancelButton ---- cancelButton.setText(bundle.getString("OptionDialog.cancelButton.text")); cancelButton.addActionListener(e -> cancelButtonActionPerformed(e)); buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); } dialogPane.add(buttonBar, BorderLayout.SOUTH); //======== panelBasicSettings ======== { panelBasicSettings.setLayout(new FlowLayout(FlowLayout.LEFT)); //---- labelBoardSize ---- labelBoardSize.setText(bundle.getString("OptionDialog.labelBoardSize.text")); panelBasicSettings.add(labelBoardSize); //---- radioButtonBoard19x19 ---- radioButtonBoard19x19.setText(bundle.getString("OptionDialog.radioButtonBoard19x19.text")); radioButtonBoard19x19.setSelected(true); panelBasicSettings.add(radioButtonBoard19x19); //---- radioButtonBoard15x15 ---- radioButtonBoard15x15.setText(bundle.getString("OptionDialog.radioButtonBoard15x15.text")); panelBasicSettings.add(radioButtonBoard15x15); //---- radioButtonBoard13x13 ---- radioButtonBoard13x13.setText(bundle.getString("OptionDialog.radioButtonBoard13x13.text")); panelBasicSettings.add(radioButtonBoard13x13); //---- radioButtonBoard9x9 ---- radioButtonBoard9x9.setText(bundle.getString("OptionDialog.radioButtonBoard9x9.text")); panelBasicSettings.add(radioButtonBoard9x9); //---- radioButtonBoard7x7 ---- radioButtonBoard7x7.setText(bundle.getString("OptionDialog.radioButtonBoard7x7.text")); panelBasicSettings.add(radioButtonBoard7x7); //---- radioButtonBoard5x5 ---- radioButtonBoard5x5.setText(bundle.getString("OptionDialog.radioButtonBoard5x5.text")); panelBasicSettings.add(radioButtonBoard5x5); } dialogPane.add(panelBasicSettings, BorderLayout.NORTH); } contentPane.add(dialogPane, BorderLayout.CENTER); pack(); setLocationRelativeTo(null); //---- buttonGroupVariationLimit ---- ButtonGroup buttonGroupVariationLimit = new ButtonGroup(); buttonGroupVariationLimit.add(radioButtonV5); buttonGroupVariationLimit.add(radioButtonV10); buttonGroupVariationLimit.add(radioButtonV15); buttonGroupVariationLimit.add(radioButtonV30); buttonGroupVariationLimit.add(radioButtonUnlimited); //---- buttonGroupAxisSetting ---- ButtonGroup buttonGroupAxisSetting = new ButtonGroup(); buttonGroupAxisSetting.add(radioButtonA1Top); buttonGroupAxisSetting.add(radioButtonA1Bottom); //---- buttonGroupBoardColor ---- ButtonGroup buttonGroupBoardColor = new ButtonGroup(); buttonGroupBoardColor.add(radioButtonBoardClassic); buttonGroupBoardColor.add(radioButtonBoardFancy); //---- buttonGroupBoardSize ---- ButtonGroup buttonGroupBoardSize = new ButtonGroup(); buttonGroupBoardSize.add(radioButtonBoard19x19); buttonGroupBoardSize.add(radioButtonBoard15x15); buttonGroupBoardSize.add(radioButtonBoard13x13); buttonGroupBoardSize.add(radioButtonBoard9x9); buttonGroupBoardSize.add(radioButtonBoard7x7); buttonGroupBoardSize.add(radioButtonBoard5x5); // JFormDesigner - End of component initialization //GEN-END:initComponents } private void initOtherComponents() { getRootPane().registerKeyboardAction(e -> setVisible(false), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); getRootPane().registerKeyboardAction(e -> doApplySettings(), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); MutableMap<OptionSetting.BoardSize, JRadioButton> m = Maps.mutable.empty(); m.put(new OptionSetting.BoardSize(19, 19), radioButtonBoard19x19); m.put(new OptionSetting.BoardSize(15, 15), radioButtonBoard15x15); m.put(new OptionSetting.BoardSize(13, 13), radioButtonBoard13x13); m.put(new OptionSetting.BoardSize(9, 9), radioButtonBoard9x9); m.put(new OptionSetting.BoardSize(7, 7), radioButtonBoard7x7); m.put(new OptionSetting.BoardSize(5, 5), radioButtonBoard5x5); boardSizeToRadioButtonMap = m.toImmutable(); } }