/* * Created by JFormDesigner on Sun Jul 01 10:57:26 CEST 2007 */ package info.opencards.ui.lastmin; import info.opencards.Utils; import info.opencards.learnstrats.leitner.CardLimitLeitner; import info.opencards.learnstrats.leitner.LearnAllLeitner; import info.opencards.learnstrats.leitner.LeitnerLearnMethodFactory; import info.opencards.learnstrats.leitner.TimeLimitLeitner; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ResourceBundle; import java.util.prefs.Preferences; /** * @author Holger Brandl */ public class LeitnerStrategyPanel extends JPanel { private static final String LEITLEARN_TIME_LIMIT = "leitlearn.timeLimitSpinner"; private static final String LEITLEARN_CARD_LIMIT = "leitlearn.cardLimitSpinner"; private static final String LEITLEARN_MODE = "leitlearn.mode"; public LeitnerStrategyPanel() { initComponents(); } public LeitnerLearnMethodFactory getLearnMethodFactory() { if (limitTimeOption.isSelected()) { return TimeLimitLeitner.getFactory((Integer) timeLimitSpinner.getValue()); } else if (limitCardsOption.isSelected()) { return CardLimitLeitner.getFactory((Integer) cardLimitSpinner.getValue()); } else if (learnAllOption.isSelected()) { return LearnAllLeitner.getFactory(); } throw new RuntimeException("nothing is selected"); } public void saveDefaults() { Preferences prefs = Utils.getPrefs(); prefs.putInt(LEITLEARN_TIME_LIMIT, (Integer) timeLimitSpinner.getValue()); prefs.putInt(LEITLEARN_CARD_LIMIT, (Integer) cardLimitSpinner.getValue()); if (limitTimeOption.isSelected()) { prefs.putInt(LEITLEARN_MODE, 1); } else if (limitCardsOption.isSelected()) { prefs.putInt(LEITLEARN_MODE, 2); } else if (learnAllOption.isSelected()) { prefs.putInt(LEITLEARN_MODE, 0); } Utils.flushPreferences(); } void initializeStrategy() { Preferences prefs = Utils.getPrefs(); timeLimitSpinner.setValue(prefs.getInt(LEITLEARN_TIME_LIMIT, 10)); cardLimitSpinner.setValue(prefs.getInt(LEITLEARN_CARD_LIMIT, 10)); int mode = prefs.getInt(LEITLEARN_MODE, 0); switch (mode) { case 0: learnAllOption.setSelected(true); break; case 1: limitTimeOption.setSelected(true); break; case 2: limitCardsOption.setSelected(true); break; } } private void limitTimeOptionItemStateChanged() { timeLimitSpinner.setEnabled(limitTimeOption.isSelected()); } private void limitCardsOptionItemStateChanged() { cardLimitSpinner.setEnabled(limitCardsOption.isSelected()); } private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents // Generated using JFormDesigner non-commercial license ResourceBundle bundle = ResourceBundle.getBundle("info.opencards.translation"); panel2 = new JPanel(); learnAllOption = new JRadioButton(); limitTimeOption = new JRadioButton(); JLabel timeLimitLabel = new JLabel(); timeLimitSpinner = new JSpinner(); JLabel minutesLabel = new JLabel(); limitCardsOption = new JRadioButton(); JLabel cardLimitLabel = new JLabel(); cardLimitSpinner = new JSpinner(); JLabel cardsLabel = new JLabel(); sessionTypeGroup = new ButtonGroup(); //======== this ======== setLayout(new BorderLayout()); //======== panel2 ======== { panel2.setBorder(new EmptyBorder(20, 20, 20, 20)); panel2.setLayout(new GridBagLayout()); ((GridBagLayout) panel2.getLayout()).columnWidths = new int[]{25, 55, 52, 0, 0}; ((GridBagLayout) panel2.getLayout()).rowHeights = new int[]{0, 0, 0, 0, 0, 20, 0}; ((GridBagLayout) panel2.getLayout()).columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, 1.0E-4}; ((GridBagLayout) panel2.getLayout()).rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4}; //---- learnAllOption ---- learnAllOption.setText(bundle.getString("LeitnerStrategyPanel.learnAllOption.text")); learnAllOption.setSelected(true); panel2.add(learnAllOption, new GridBagConstraints(0, 0, 4, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); //---- limitTimeOption ---- limitTimeOption.setText(bundle.getString("LeitnerStrategyPanel.limitTimeOption.text")); limitTimeOption.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { limitTimeOptionItemStateChanged(); } }); panel2.add(limitTimeOption, new GridBagConstraints(0, 1, 4, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); //---- timeLimitLabel ---- timeLimitLabel.setText(bundle.getString("LeitnerStrategyPanel.timeLimitLabel.text")); panel2.add(timeLimitLabel, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- timeLimitSpinner ---- timeLimitSpinner.setModel(new SpinnerNumberModel(10, 1, null, 1)); timeLimitSpinner.setEnabled(false); panel2.add(timeLimitSpinner, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- minutesLabel ---- minutesLabel.setText(bundle.getString("LeitnerStrategyPanel.minutesLabel.text")); panel2.add(minutesLabel, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); //---- limitCardsOption ---- limitCardsOption.setText(bundle.getString("LeitnerStrategyPanel.limitCardsOption.text")); limitCardsOption.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { limitCardsOptionItemStateChanged(); } }); panel2.add(limitCardsOption, new GridBagConstraints(0, 3, 4, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); //---- cardLimitLabel ---- cardLimitLabel.setText(bundle.getString("LeitnerStrategyPanel.cardLimitLabel.text")); panel2.add(cardLimitLabel, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- cardLimitSpinner ---- cardLimitSpinner.setModel(new SpinnerNumberModel(10, 1, null, 1)); cardLimitSpinner.setEnabled(false); panel2.add(cardLimitSpinner, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- cardsLabel ---- cardsLabel.setText(bundle.getString("LeitnerStrategyPanel.cardsLabel.text")); panel2.add(cardsLabel, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); } add(panel2, BorderLayout.CENTER); //---- sessionTypeGroup ---- sessionTypeGroup = new ButtonGroup(); sessionTypeGroup.add(learnAllOption); sessionTypeGroup.add(limitTimeOption); sessionTypeGroup.add(limitCardsOption); // JFormDesigner - End of component initialization //GEN-END:initComponents initializeStrategy(); } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables // Generated using JFormDesigner non-commercial license private JPanel panel2; private JRadioButton learnAllOption; private JRadioButton limitTimeOption; private JSpinner timeLimitSpinner; private JRadioButton limitCardsOption; private JSpinner cardLimitSpinner; private ButtonGroup sessionTypeGroup; // JFormDesigner - End of variables declaration //GEN-END:variables }