/* * File : ArithEditorPanel.java * Created : 10-jun-2002 09:59 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.arith; import edu.xtec.jclic.automation.AutoContentProviderEditor; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import javax.swing.JComboBox; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.08.29 */ public class ArithEditorPanel extends EditorPanel { private String[] ORD_LIST; private OperatorEditorPanel firstOpPanel; private OperatorEditorPanel secondOpPanel; /** Creates new form MenuEditorPanel */ public ArithEditorPanel(Options options) { super(options); ORD_LIST=new String[3]; ORD_LIST[0]=options.getMsg("edit_arith_result_random"); ORD_LIST[1]=options.getMsg("edit_arith_result_asc"); ORD_LIST[2]=options.getMsg("edit_arith_result_desc"); initComponents(); firstOpPanel=(OperatorEditorPanel)firstOpPanelX; secondOpPanel=(OperatorEditorPanel)secondOpPanelX; postInit(250, false, false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel fromLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JPanel leftPanel; javax.swing.JLabel orderLb; javax.swing.JSeparator sep; javax.swing.JLabel sepleft; javax.swing.JLabel toLb; condGrp = new javax.swing.ButtonGroup(); leftPanel = new javax.swing.JPanel(); operationsPanel = new javax.swing.JPanel(); chkPlus = new javax.swing.JCheckBox(); chkMinus = new javax.swing.JCheckBox(); chkMultiply = new javax.swing.JCheckBox(); chkDivide = new javax.swing.JCheckBox(); unknownPanel = new javax.swing.JPanel(); chk_aobx = new javax.swing.JCheckBox(); chk_aoxr = new javax.swing.JCheckBox(); chk_xobr = new javax.swing.JCheckBox(); chk_axbr = new javax.swing.JCheckBox(); sep = new javax.swing.JSeparator(); chk_invert = new javax.swing.JCheckBox(); sepleft = new javax.swing.JLabel(); rightPanel = new javax.swing.JPanel(); firstOpPanelX = new OperatorEditorPanel(options); secondOpPanelX = new OperatorEditorPanel(options); resultPanel = new javax.swing.JPanel(); fromLb = new javax.swing.JLabel(); fromCombo = new JComboBox(OperatorEditorPanel.LIST_OF_VALUES); toLb = new javax.swing.JLabel(); toCombo = new JComboBox(OperatorEditorPanel.LIST_OF_VALUES); notCarryChk = new javax.swing.JCheckBox(); orderLb = new javax.swing.JLabel(); orderCombo = new JComboBox(ORD_LIST); avoidDupChk = new javax.swing.JCheckBox(); condPanel = new javax.swing.JPanel(); indOpt = new javax.swing.JRadioButton(); agbOpt = new javax.swing.JRadioButton(); albOpt = new javax.swing.JRadioButton(); sepright1 = new javax.swing.JLabel(); sepright = new javax.swing.JLabel(); setLayout(new java.awt.GridBagLayout()); setToolTipText(options.getMsg("edit_act_descriptionTab_tooltip")); leftPanel.setLayout(new java.awt.GridBagLayout()); operationsPanel.setLayout(new java.awt.GridBagLayout()); operationsPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_operations"))); operationsPanel.setToolTipText(options.getMsg("edit_arith_operations_tooltip")); chkPlus.setText(options.getMsg("edit_arith_operations_plus")); chkPlus.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; operationsPanel.add(chkPlus, gridBagConstraints); chkMinus.setText(options.getMsg("edit_arith_operations_minus")); chkMinus.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; operationsPanel.add(chkMinus, gridBagConstraints); chkMultiply.setText(options.getMsg("edit_arith_operations_multiply")); chkMultiply.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; operationsPanel.add(chkMultiply, gridBagConstraints); chkDivide.setText(options.getMsg("edit_arith_operations_divide")); chkDivide.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; operationsPanel.add(chkDivide, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; leftPanel.add(operationsPanel, gridBagConstraints); unknownPanel.setLayout(new java.awt.GridBagLayout()); unknownPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_unknown"))); unknownPanel.setToolTipText(options.getMsg("edit_arith_unknown_tooltip")); chk_aobx.setToolTipText(options.getMsg("edit_arith_unknown_aobx")); chk_aobx.setText("A @ B = ?"); chk_aobx.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; unknownPanel.add(chk_aobx, gridBagConstraints); chk_aoxr.setToolTipText(options.getMsg("edit_arith_unknown_aoxr")); chk_aoxr.setText("A @ ? = C"); chk_aoxr.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; unknownPanel.add(chk_aoxr, gridBagConstraints); chk_xobr.setToolTipText(options.getMsg("edit_arith_unknown_xobr")); chk_xobr.setText("? @ B = C"); chk_xobr.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; unknownPanel.add(chk_xobr, gridBagConstraints); chk_axbr.setToolTipText(options.getMsg("edit_arith_unknown_axbr")); chk_axbr.setText("A ? B = C"); chk_axbr.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; unknownPanel.add(chk_axbr, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; unknownPanel.add(sep, gridBagConstraints); chk_invert.setToolTipText(options.getMsg("edit_arith_unknown_invert")); chk_invert.setText("C = A @ B"); chk_invert.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; unknownPanel.add(chk_invert, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; leftPanel.add(unknownPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; leftPanel.add(sepleft, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; add(leftPanel, gridBagConstraints); rightPanel.setLayout(new java.awt.GridBagLayout()); firstOpPanelX.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_firstOp"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; rightPanel.add(firstOpPanelX, gridBagConstraints); secondOpPanelX.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_secondOp"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; rightPanel.add(secondOpPanelX, gridBagConstraints); resultPanel.setLayout(new java.awt.GridBagLayout()); resultPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_result"))); fromLb.setLabelFor(fromCombo); fromLb.setText(options.getMsg("edit_arith_op_from")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; resultPanel.add(fromLb, gridBagConstraints); fromCombo.setToolTipText(options.getMsg("edit_arith_op_from_tooltip")); fromCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; resultPanel.add(fromCombo, gridBagConstraints); toLb.setLabelFor(toCombo); toLb.setText(options.getMsg("edit_arith_op_to")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; resultPanel.add(toLb, gridBagConstraints); toCombo.setToolTipText(options.getMsg("edit_arith_op_to_tooltip")); toCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; resultPanel.add(toCombo, gridBagConstraints); notCarryChk.setText(options.getMsg("edit_arith_result_notCarry")); notCarryChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; resultPanel.add(notCarryChk, gridBagConstraints); orderLb.setText(options.getMsg("edit_arith_result_order")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; resultPanel.add(orderLb, gridBagConstraints); orderCombo.setToolTipText(options.getMsg("edit_arith_op_to_tooltip")); orderCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; resultPanel.add(orderCombo, gridBagConstraints); avoidDupChk.setText(options.getMsg("edit_arith_result_avoidDup")); avoidDupChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; resultPanel.add(avoidDupChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; rightPanel.add(resultPanel, gridBagConstraints); condPanel.setLayout(new java.awt.GridBagLayout()); condPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_arith_cond"))); condPanel.setToolTipText(options.getMsg("edit_arith_cond_tooltip")); indOpt.setText(options.getMsg("edit_arith_cond_ind")); condGrp.add(indOpt); indOpt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; condPanel.add(indOpt, gridBagConstraints); agbOpt.setToolTipText(options.getMsg("edit_arith_cond_agb")); agbOpt.setText("A > B"); condGrp.add(agbOpt); agbOpt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; condPanel.add(agbOpt, gridBagConstraints); albOpt.setToolTipText(options.getMsg("edit_arith_cond_alb")); albOpt.setText("A < B"); condGrp.add(albOpt); albOpt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; condPanel.add(albOpt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; rightPanel.add(condPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; rightPanel.add(sepright1, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; rightPanel.add(sepright, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(rightPanel, gridBagConstraints); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof ArithEditor; } public ArithEditor getArithEditor(){ return (ArithEditor)getEditor(); } public Arith getArith(){ ArithEditor aed=getArithEditor(); return aed==null ? null : (Arith)aed.getAutoContentProvider(); } public void fillData(){ Arith a=getArith(); chkPlus.setSelected(a==null ? true : a.use_add); chkMinus.setSelected(a==null ? false : a.use_subst); chkMultiply.setSelected(a==null ? false : a.use_mult); chkDivide.setSelected(a==null ? false : a.use_div); chk_aobx.setSelected(a==null ? true : a.exp_abx); chk_aoxr.setSelected(a==null ? false : a.exp_axc); chk_xobr.setSelected(a==null ? false : a.exp_xbc); chk_axbr.setSelected(a==null ? false : a.exp_axbc); chk_invert.setSelected(a==null ? false : a.exp_caxb); firstOpPanel.setOperator(a==null ? new Operator() : a.opA); secondOpPanel.setOperator(a==null ? new Operator() : a.opB); fromCombo.setSelectedIndex(a==null ? 1 : a.resultLimInf); toCombo.setSelectedIndex(a==null ? Operator.LIMITS.length-1 : a.resultLimSup); notCarryChk.setSelected(a==null ? false : a.resultCarry); avoidDupChk.setSelected(a==null ? false : a.resultNoDup); orderCombo.setSelectedIndex(a==null ? 0 : a.resultOrder); int cond=(a==null ? 0 : a.opCond); indOpt.setSelected(cond==0); agbOpt.setSelected(cond==1); albOpt.setSelected(cond==2); setModified(false); } public void saveData(){ Arith a=getArith(); if(a!=null){ a.use_add=chkPlus.isSelected(); a.use_subst=chkMinus.isSelected(); a.use_mult=chkMultiply.isSelected(); a.use_div=chkDivide.isSelected(); a.exp_abx=chk_aobx.isSelected(); a.exp_axc=chk_aoxr.isSelected(); a.exp_xbc=chk_xobr.isSelected(); a.exp_axbc=chk_axbr.isSelected(); a.exp_caxb=chk_invert.isSelected(); a.opA=firstOpPanel.getOperator(); a.opB=secondOpPanel.getOperator(); a.resultLimInf=fromCombo.getSelectedIndex(); a.resultLimSup=toCombo.getSelectedIndex(); a.resultCarry=notCarryChk.isSelected(); a.resultNoDup=avoidDupChk.isSelected(); a.resultOrder=orderCombo.getSelectedIndex(); a.opCond=agbOpt.isSelected() ? 1 : albOpt.isSelected() ? 2 : 0; } } @Override protected javax.swing.Icon getIcon(){ return AutoContentProviderEditor.getIcon(); } @Override protected String getTitle(){ return options.getMsg("edit_arith_title"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton agbOpt; private javax.swing.JRadioButton albOpt; private javax.swing.JCheckBox avoidDupChk; private javax.swing.JCheckBox chkDivide; private javax.swing.JCheckBox chkMinus; private javax.swing.JCheckBox chkMultiply; private javax.swing.JCheckBox chkPlus; private javax.swing.JCheckBox chk_aobx; private javax.swing.JCheckBox chk_aoxr; private javax.swing.JCheckBox chk_axbr; private javax.swing.JCheckBox chk_invert; private javax.swing.JCheckBox chk_xobr; private javax.swing.ButtonGroup condGrp; private javax.swing.JPanel condPanel; private javax.swing.JPanel firstOpPanelX; private javax.swing.JComboBox fromCombo; private javax.swing.JRadioButton indOpt; private javax.swing.JCheckBox notCarryChk; private javax.swing.JPanel operationsPanel; private javax.swing.JComboBox orderCombo; private javax.swing.JPanel resultPanel; private javax.swing.JPanel rightPanel; private javax.swing.JPanel secondOpPanelX; private javax.swing.JLabel sepright; private javax.swing.JLabel sepright1; private javax.swing.JComboBox toCombo; private javax.swing.JPanel unknownPanel; // End of variables declaration//GEN-END:variables }