| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package org.leumasjaffe.charsheet.view.summary;
- import javax.swing.JFormattedTextField;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- import java.awt.Dimension;
- import static org.leumasjaffe.charsheet.model.Ability.modifier;
- import java.awt.Color;
- import java.awt.GridBagLayout;
- import java.awt.GridBagConstraints;
- import java.awt.Insets;
- import javax.swing.border.LineBorder;
- import org.leumasjaffe.charsheet.model.observable.IntValue;
- import org.leumasjaffe.charsheet.observer.helper.IntValueHelper;
- import org.leumasjaffe.charsheet.observer.helper.IntValueStringify;
- import org.leumasjaffe.charsheet.util.StringHelper;
- import org.leumasjaffe.graphics.NumberTextField;
- import org.leumasjaffe.observer.ObservableController;
- import org.leumasjaffe.observer.ObservableListener;
- import lombok.AccessLevel;
- import lombok.experimental.FieldDefaults;
- import javax.swing.SwingConstants;
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
- public class AbilityBox extends JPanel {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- ObservableListener<JTextField, IntValue> valueListener;
- ObservableListener<JTextField, IntValue> modListener;
-
- public AbilityBox(final String name, final String heading) {
- setOpaque(false);
- setMaximumSize(new Dimension(80, 26));
- setMinimumSize(new Dimension(80, 26));
- setPreferredSize(new Dimension(80, 26));
- GridBagLayout gridBagLayout = new GridBagLayout();
- gridBagLayout.columnWidths = new int[]{0, 0, 0};
- gridBagLayout.rowHeights = new int[]{25, 0};
- gridBagLayout.columnWeights = new double[]{1.0, 1.0, Double.MIN_VALUE};
- gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
- setLayout(gridBagLayout);
-
- JFormattedTextField value = new NumberTextField();
- value.setToolTipText(heading + " Score (" + name + ")");
- value.setHorizontalAlignment(SwingConstants.CENTER);
- value.setMinimumSize(new Dimension(30, 20));
- value.setMaximumSize(new Dimension(30, 20));
- value.setPreferredSize(new Dimension(30, 20));
- value.setBorder(new LineBorder(Color.BLACK));
- GridBagConstraints gbc_value = new GridBagConstraints();
- gbc_value.insets = new Insets(0, 5, 0, 5);
- gbc_value.fill = GridBagConstraints.HORIZONTAL;
- gbc_value.gridx = 0;
- gbc_value.gridy = 0;
- add(value, gbc_value);
- value.setColumns(3);
-
- JTextField modifier = new JTextField();
- modifier.setToolTipText(heading + " Modifier (" + name + ")");
- modifier.setHorizontalAlignment(SwingConstants.CENTER);
- modifier.setEditable(false);
- modifier.setMinimumSize(new Dimension(30, 20));
- modifier.setMaximumSize(new Dimension(30, 20));
- modifier.setPreferredSize(new Dimension(30, 20));
- modifier.setBorder(new LineBorder(Color.BLACK));
- GridBagConstraints gbc_modifier = new GridBagConstraints();
- gbc_modifier.insets = new Insets(0, 0, 0, 5);
- gbc_modifier.fill = GridBagConstraints.HORIZONTAL;
- gbc_modifier.gridx = 1;
- gbc_modifier.gridy = 0;
- add(modifier, gbc_modifier);
- modifier.setColumns(3);
- valueListener = new ObservableController<>(value,
- new IntValueHelper(), IntValueStringify.withDefault(-1),
- (v) -> {
- v.value(-1);
- modifier.setText("");
- });
- modListener = new ObservableListener<>(modifier,
- (c, v) -> c.setText(v.value() <= 0 ? "" :
- StringHelper.toString(modifier(v.value()))));
- }
- public void setModel(IntValue scores) {
- valueListener.setObserved(scores);
- modListener.setObserved(scores);
- }
- }
|