/** Creates a new <code>SeekPanel</code>. */ public SeekPanel(Component hintParent) { setHintParent(hintParent); Preferences prefs = getPrefs(); I18n i18n = getI18n(); WildVariant[] variants = getConn().getSupportedVariants(); // Create ui elements timeField = new FixedJTextField(new IntegerStrictPlainDocument(0, 9999), "", 3); incField = new FixedJTextField(new IntegerStrictPlainDocument(0, 9999), "", 3); isRatedBox = i18n.createCheckBox("ratedBox"); variantChoice = new FixedJComboBox(variants); variantChoice.setEditable(false); autoColor = i18n.createRadioButton("autoColorRadioButton"); whiteColor = i18n.createRadioButton("whiteColorRadioButton"); blackColor = i18n.createRadioButton("blackColorRadioButton"); limitRatingBox = i18n.createCheckBox("limitRatingCheckBox"); minRatingField = new FixedJTextField(new IntegerStrictPlainDocument(0, 9999), "", 4); maxRatingField = new FixedJTextField(new IntegerStrictPlainDocument(0, 9999), "", 4); manualAcceptBox = i18n.createCheckBox("manualAcceptCheckBox"); useFormulaBox = i18n.createCheckBox("useFormulaCheckBox"); ButtonGroup colorButtonGroup = new ButtonGroup(); colorButtonGroup.add(autoColor); colorButtonGroup.add(whiteColor); colorButtonGroup.add(blackColor); String color = prefs.getString("color", "auto"); // Set initial values of ui elements timeField.setText(String.valueOf(prefs.getInt("time", 10))); incField.setText(String.valueOf(prefs.getInt("inc", 0))); isRatedBox.setSelected(prefs.getBool("isRated", true)); variantChoice.setSelectedIndex( findVariantIndex(variants, prefs.getString("variant", "Chess"))); autoColor.setSelected("auto".equals(color)); whiteColor.setSelected("white".equals(color)); blackColor.setSelected("black".equals(color)); limitRatingBox.setSelected(prefs.getBool("limitRating", false)); minRatingField.setText(String.valueOf(prefs.getInt("minRating", 0))); maxRatingField.setText(String.valueOf(prefs.getInt("maxRating", 9999))); manualAcceptBox.setSelected(prefs.getBool("manualAccept", false)); useFormulaBox.setSelected(prefs.getBool("useFormula", true)); // Disable isRated for guests if (getUser().isGuest()) { isRatedBox.setSelected(false); isRatedBox.setEnabled(false); } createUI(); }
/** Creates the ui of this panel, laying out all the ui elements. */ private void createUI() { I18n i18n = getI18n(); final int labelPad = 4; // To align labels with checkboxes // Time controls JLabel timeLabel = i18n.createLabel("timeLabel"); timeLabel.setLabelFor(timeField); JLabel incLabel = i18n.createLabel("incrementLabel"); incLabel.setLabelFor(incField); JLabel secondsLabel = i18n.createLabel("secondsLabel"); JLabel minutesLabel = i18n.createLabel("minutesLabel"); timeField.setMaximumSize(timeField.getPreferredSize()); incField.setMaximumSize(incField.getPreferredSize()); JComponent timeContainer = new JPanel(new TableLayout(5, labelPad, 2)); timeContainer.add(Box.createHorizontalStrut(0)); timeContainer.add(timeLabel); timeContainer.add(Box.createHorizontalStrut(10)); timeContainer.add(timeField); timeContainer.add(minutesLabel); timeContainer.add(Box.createHorizontalStrut(0)); timeContainer.add(incLabel); timeContainer.add(Box.createHorizontalStrut(10)); timeContainer.add(incField); timeContainer.add(secondsLabel); // Variant JLabel variantLabel = i18n.createLabel("variantLabel"); variantLabel.setLabelFor(variantChoice); variantChoice.setMaximumSize(variantChoice.getPreferredSize()); JComponent variantContainer = SwingUtils.createHorizontalBox(); variantContainer.add(Box.createHorizontalStrut(labelPad)); variantContainer.add(variantLabel); variantContainer.add(Box.createHorizontalStrut(10)); variantContainer.add(variantChoice); variantContainer.add(Box.createHorizontalGlue()); // Color JLabel colorLabel = i18n.createLabel("colorLabel"); JComponent colorContainer = SwingUtils.createHorizontalBox(); colorContainer.add(Box.createHorizontalStrut(labelPad)); colorContainer.add(colorLabel); colorContainer.add(Box.createHorizontalStrut(15)); colorContainer.add(autoColor); colorContainer.add(Box.createHorizontalStrut(10)); colorContainer.add(whiteColor); colorContainer.add(Box.createHorizontalStrut(10)); colorContainer.add(blackColor); colorContainer.add(Box.createHorizontalGlue()); // Limit opponent rating JLabel minLabel = i18n.createLabel("minRatingLabel"); minLabel.setLabelFor(minRatingField); JLabel maxLabel = i18n.createLabel("maxRatingLabel"); maxLabel.setLabelFor(maxRatingField); minRatingField.setMaximumSize(minRatingField.getPreferredSize()); maxRatingField.setMaximumSize(minRatingField.getPreferredSize()); JComponent limitRatingBoxContainer = SwingUtils.createHorizontalBox(); limitRatingBoxContainer.add(limitRatingBox); limitRatingBoxContainer.add(Box.createHorizontalGlue()); final JComponent minMaxContainer = SwingUtils.createHorizontalBox(); minMaxContainer.add(Box.createHorizontalStrut(40)); minMaxContainer.add(minLabel); minMaxContainer.add(Box.createHorizontalStrut(10)); minMaxContainer.add(minRatingField); minMaxContainer.add(Box.createHorizontalStrut(20)); minMaxContainer.add(maxLabel); minMaxContainer.add(Box.createHorizontalStrut(10)); minMaxContainer.add(maxRatingField); minMaxContainer.add(Box.createHorizontalGlue()); JComponent limitRatingContainer = SwingUtils.createVerticalBox(); limitRatingContainer.add(limitRatingBoxContainer); limitRatingContainer.add(Box.createVerticalStrut(3)); limitRatingContainer.add(minMaxContainer); // Buttons panel JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); JButton issueSeekButton = i18n.createButton("issueSeekButton"); JButton cancelButton = i18n.createButton("cancelButton"); setDefaultButton(issueSeekButton); cancelButton.setDefaultCapable(false); buttonsPanel.add(issueSeekButton); buttonsPanel.add(cancelButton); JButton moreLessButton = i18n.createButton("moreOptionsButton"); moreLessButton.setDefaultCapable(false); moreLessButton.setActionCommand("more"); JPanel moreLessPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); moreLessPanel.add(moreLessButton); final JComponent advancedPanelHolder = new JPanel(new BorderLayout()); // Layout the subcontainers in the main container setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); timeContainer.setAlignmentX(LEFT_ALIGNMENT); add(timeContainer); add(Box.createVerticalStrut(2)); isRatedBox.setAlignmentX(LEFT_ALIGNMENT); add(isRatedBox); advancedPanelHolder.setAlignmentX(LEFT_ALIGNMENT); add(advancedPanelHolder); add(Box.createVerticalStrut(5)); moreLessPanel.setAlignmentX(LEFT_ALIGNMENT); add(moreLessPanel); add(Box.createVerticalStrut(10)); buttonsPanel.setAlignmentX(LEFT_ALIGNMENT); add(buttonsPanel); // Advanced options panel final JComponent advancedPanel = SwingUtils.createVerticalBox(); advancedPanel.add(Box.createVerticalStrut(4)); variantContainer.setAlignmentX(LEFT_ALIGNMENT); advancedPanel.add(variantContainer); advancedPanel.add(Box.createVerticalStrut(4)); colorContainer.setAlignmentX(LEFT_ALIGNMENT); advancedPanel.add(colorContainer); advancedPanel.add(Box.createVerticalStrut(2)); limitRatingContainer.setAlignmentX(LEFT_ALIGNMENT); advancedPanel.add(limitRatingContainer); advancedPanel.add(Box.createVerticalStrut(2)); manualAcceptBox.setAlignmentX(LEFT_ALIGNMENT); advancedPanel.add(manualAcceptBox); advancedPanel.add(Box.createVerticalStrut(2)); useFormulaBox.setAlignmentX(LEFT_ALIGNMENT); advancedPanel.add(useFormulaBox); AWTUtilities.setContainerEnabled(minMaxContainer, limitRatingBox.isSelected()); limitRatingBox.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent evt) { AWTUtilities.setContainerEnabled(minMaxContainer, limitRatingBox.isSelected()); } }); moreLessButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { if (evt.getActionCommand().equals("more")) { JButton moreLessButton = (JButton) evt.getSource(); moreLessButton.setText(getI18n().getString("lessOptionsButton.text")); moreLessButton.setActionCommand("less"); advancedPanelHolder.add(advancedPanel, BorderLayout.CENTER); SeekPanel.this.resizeContainerToFit(); } else { JButton moreLessButton = (JButton) evt.getSource(); moreLessButton.setText(getI18n().getString("moreOptionsButton.text")); moreLessButton.setActionCommand("more"); advancedPanelHolder.remove(advancedPanel); SeekPanel.this.resizeContainerToFit(); } } }); cancelButton.addActionListener(new ClosingListener(null)); issueSeekButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { int time, inc; try { time = Integer.parseInt(timeField.getText()); } catch (NumberFormatException e) { getI18n().error("timeError"); return; } try { inc = Integer.parseInt(incField.getText()); } catch (NumberFormatException e) { getI18n().error("incError"); return; } boolean isRated = isRatedBox.isSelected(); WildVariant variant = (WildVariant) variantChoice.getSelectedItem(); Player color = autoColor.isSelected() ? null : whiteColor.isSelected() ? Player.WHITE_PLAYER : Player.BLACK_PLAYER; int minRating, maxRating; if (limitRatingBox.isSelected()) { try { minRating = Integer.parseInt(minRatingField.getText()); } catch (NumberFormatException e) { getI18n().error("minRatingError"); return; } try { maxRating = Integer.parseInt(maxRatingField.getText()); } catch (NumberFormatException e) { getI18n().error("maxRatingError"); return; } } else { minRating = Integer.MIN_VALUE; maxRating = Integer.MAX_VALUE; } boolean manualAccept = manualAcceptBox.isSelected(); boolean useFormula = useFormulaBox.isSelected(); close( new UserSeek( time, inc, isRated, variant, color, minRating, maxRating, manualAccept, useFormula)); } }); }