Logo Search packages:      
Sourcecode: jclic version File versions  Download package

ActivityEditorOptionsPanel.java

/*
 * File    : ActivityEditorOptionsPanel.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;

import edu.xtec.jclic.automation.AutoContentProvider;
import edu.xtec.jclic.automation.AutoContentProviderEditor;
import edu.xtec.jclic.bags.ActivityBagElementEditor;
import edu.xtec.jclic.bags.SelectActivityClass;
import edu.xtec.jclic.beans.EventSoundsButton;
import edu.xtec.jclic.beans.SmallIntEditor;
import edu.xtec.jclic.edit.*;
import edu.xtec.util.Options;
import edu.xtec.jclic.misc.Utils;
import edu.xtec.util.Messages;
import edu.xtec.util.ProgressDialog;
import edu.xtec.util.StrUtils;
import edu.xtec.util.SwingWorker;
import edu.xtec.util.TripleString;
import java.awt.Container;
import java.util.EventObject;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.ScrollPaneConstants;

/**
 *
 * @author Francesc Busquets (fbusquets@xtec.net)
 * @version 1.0
 */
00050 public class ActivityEditorOptionsPanel extends ActivityEditorInternalPanel {
    
    Vector contentProviders, allContentProviders;
    
    /** Creates new form MenuEditorPanel */
00055     public ActivityEditorOptionsPanel(ActivityEditorPanel parent) {
        super(parent);
        allContentProviders=AutoContentProviderEditor.getSystemContentProvidersList(options);
        initComponents();
        checkContentProviders();
        evSoundsBtn.setOptions(options);
        setEnabled(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.
     */
00069     private void initComponents() {//GEN-BEGIN:initComponents
        javax.swing.JLabel autoCpLb;
        javax.swing.JLabel classLb;
        javax.swing.JLabel codeLb;
        javax.swing.JLabel descLb;
        javax.swing.JLabel evSoundsLb;
        java.awt.GridBagConstraints gridBagConstraints;
        javax.swing.ButtonGroup helpBtnButtonGroup;
        javax.swing.ButtonGroup infoBtnButtonGroup;
        javax.swing.JPanel mainPanel;
        javax.swing.JLabel maxActionsLb;
        javax.swing.JLabel maxTimeLb;
        javax.swing.JLabel nameLb;
        javax.swing.JLabel scrambleTimesLb;
        javax.swing.JLabel skinLb;
        javax.swing.JLabel spacer;

        helpBtnButtonGroup = new javax.swing.ButtonGroup();
        infoBtnButtonGroup = new javax.swing.ButtonGroup();
        scroll = new javax.swing.JScrollPane();
        mainPanel = new javax.swing.JPanel();
        descPanel = new edu.xtec.jclic.beans.RollPanel();
        classLb = new javax.swing.JLabel();
        className = new javax.swing.JLabel();
        chClassBtn = new javax.swing.JButton();
        chClassBtn.addActionListener(this);
        nameLb = new javax.swing.JLabel();
        nameText = new javax.swing.JLabel();
        chNameBtn = new javax.swing.JButton();
        chNameBtn.addActionListener(this);
        descLb = new javax.swing.JLabel();
        descScroll = new javax.swing.JScrollPane();
        descText = new javax.swing.JTextPane();
        reportPanel = new edu.xtec.jclic.beans.RollPanel();
        bIncludeInReportsChk = new javax.swing.JCheckBox();
        codeLb = new javax.swing.JLabel();
        codeText = new javax.swing.JTextField();
        bRegisterActionsChk = new javax.swing.JCheckBox();
        uiPanel = new edu.xtec.jclic.beans.RollPanel();
        skinLb = new javax.swing.JLabel();
        skinCombo = new javax.swing.JComboBox(edu.xtec.jclic.skins.Skin.getSystemSkinList(true));
        evSoundsLb = new javax.swing.JLabel();
        evSoundsBtn = new edu.xtec.jclic.beans.EventSoundsButton();
        autoCpPanel = new edu.xtec.jclic.beans.RollPanel();
        autoCpLb = new javax.swing.JLabel();
        autoCpCombo = new javax.swing.JComboBox();
        autoCpEditBtn = new javax.swing.JButton();
        countersPanel = new edu.xtec.jclic.beans.RollPanel();
        timeCounterChk = new javax.swing.JCheckBox();
        maxTimeLb = new javax.swing.JLabel();
        maxTimeInt = new edu.xtec.jclic.beans.SmallIntEditor();
        countdownTimeChk = new javax.swing.JCheckBox();
        actionsCounterChk = new javax.swing.JCheckBox();
        maxActionsLb = new javax.swing.JLabel();
        maxActionsInt = new edu.xtec.jclic.beans.SmallIntEditor();
        countdownActionsChk = new javax.swing.JCheckBox();
        scoreCounterChk = new javax.swing.JCheckBox();
        buttonsPanel = new edu.xtec.jclic.beans.RollPanel();
        helpBtnChk = new javax.swing.JCheckBox();
        helpBtnMsg = new javax.swing.JRadioButton();
        helpBtnSolution = new javax.swing.JRadioButton();
        helpBtnMsgScroll = new javax.swing.JScrollPane();
        helpBtnMsgText = new javax.swing.JTextArea();
        infoBtnChk = new javax.swing.JCheckBox();
        infoBtnUrlChk = new javax.swing.JRadioButton();
        infoBtnUrlTxt = new javax.swing.JTextField();
        infoBtnCmdChk = new javax.swing.JRadioButton();
        infoBtnCmdTxt = new javax.swing.JTextField();
        behaviorPanel = new edu.xtec.jclic.beans.RollPanel();
        scrambleTimesLb = new javax.swing.JLabel();
        scrambleTimesInt = new edu.xtec.jclic.beans.SmallIntEditor();
        dragCellsChk = new javax.swing.JCheckBox();
        orderChk = new javax.swing.JCheckBox();
        spacer = new javax.swing.JLabel();

        setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.X_AXIS));

        mainPanel.setLayout(new java.awt.GridBagLayout());

        descPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        descPanel.setTitle(options.getMsg("edit_act_description_block"));
        classLb.setText(options.getMsg("edit_act_class"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
        descPanel.getMainPanel().add(classLb, gridBagConstraints);

        className.setText(" ");
        className.setPreferredSize(new java.awt.Dimension(200, 21));
        className.setBorder(new javax.swing.border.TitledBorder(""));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        descPanel.getMainPanel().add(className, gridBagConstraints);

        chClassBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/edit.gif")));
        chClassBtn.setToolTipText(options.getMsg("edit_act_changeType"));
        chClassBtn.setText("");
        chClassBtn.setMargin(new java.awt.Insets(2, 2, 2, 2));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        descPanel.getMainPanel().add(chClassBtn, gridBagConstraints);

        nameLb.setText(options.getMsg("edit_act_name"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
        descPanel.getMainPanel().add(nameLb, gridBagConstraints);

        nameText.setPreferredSize(new java.awt.Dimension(200, 21));
        nameText.setBorder(new javax.swing.border.TitledBorder(""));
        nameText.setMinimumSize(new java.awt.Dimension(110, 21));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        descPanel.getMainPanel().add(nameText, gridBagConstraints);

        chNameBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/edit.gif")));
        chNameBtn.setToolTipText(options.getMsg("edit_media_change_name"));
        chNameBtn.setText("");
        chNameBtn.setMargin(new java.awt.Insets(2, 2, 2, 2));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        descPanel.getMainPanel().add(chNameBtn, gridBagConstraints);

        descLb.setText(options.getMsg("edit_act_description"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
        descPanel.getMainPanel().add(descLb, gridBagConstraints);

        descScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        descScroll.setPreferredSize(new java.awt.Dimension(300, 60));
        descScroll.setMinimumSize(new java.awt.Dimension(150, 60));
        descText.setToolTipText(options.getMsg("edit_act_description_tooltip"));
        descText.getDocument().addDocumentListener(this);
        descScroll.setViewportView(descText);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        descPanel.getMainPanel().add(descScroll, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(descPanel, gridBagConstraints);

        reportPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        reportPanel.setTitle(options.getMsg("edit_act_reports_block"));
        bIncludeInReportsChk.setToolTipText(options.getMsg("edit_act_includeInReports_tooltip"));
        bIncludeInReportsChk.setText(options.getMsg("edit_act_includeInReports"));
        bIncludeInReportsChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        reportPanel.getMainPanel().add(bIncludeInReportsChk, gridBagConstraints);

        codeLb.setLabelFor(codeText);
        codeLb.setText(options.getMsg("edit_act_code"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
        reportPanel.getMainPanel().add(codeLb, gridBagConstraints);

        codeText.setToolTipText(options.getMsg("edit_act_code_tooltip"));
        codeText.setPreferredSize(new java.awt.Dimension(80, 21));
        codeText.setMinimumSize(new java.awt.Dimension(80, 21));
        codeText.getDocument().addDocumentListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4);
        reportPanel.getMainPanel().add(codeText, gridBagConstraints);

        bRegisterActionsChk.setToolTipText(options.getMsg("edit_act_reportActions_tooltip"));
        bRegisterActionsChk.setText(options.getMsg("edit_act_reportActions"));
        bRegisterActionsChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 13);
        reportPanel.getMainPanel().add(bRegisterActionsChk, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(reportPanel, gridBagConstraints);

        uiPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        uiPanel.setTitle(options.getMsg("edit_act_ui_block"));
        skinLb.setText(options.getMsg("settings_skin"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        uiPanel.getMainPanel().add(skinLb, gridBagConstraints);

        skinCombo.setToolTipText(options.getMsg("settings_skin_tooltip"));
        skinCombo.setEditable(true);
        skinCombo.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        uiPanel.getMainPanel().add(skinCombo, gridBagConstraints);

        evSoundsLb.setLabelFor(evSoundsBtn);
        evSoundsLb.setText(options.getMsg("edit_act_evsounds"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        uiPanel.getMainPanel().add(evSoundsLb, gridBagConstraints);

        evSoundsBtn.setToolTipText(options.getMsg("edit_act_evsounds_tooltip"));
        evSoundsBtn.addPropertyChangeListener(EventSoundsButton.PROP_EVSND_NAME, this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        uiPanel.getMainPanel().add(evSoundsBtn, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(uiPanel, gridBagConstraints);

        autoCpPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        autoCpPanel.setTitle(options.getMsg("edit_autocp_block"));
        autoCpLb.setText(options.getMsg("edit_autocp"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        autoCpPanel.getMainPanel().add(autoCpLb, gridBagConstraints);

        autoCpCombo.setPreferredSize(new java.awt.Dimension(200, 26));
        autoCpCombo.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        autoCpPanel.getMainPanel().add(autoCpCombo, gridBagConstraints);

        autoCpEditBtn.setToolTipText(options.getMsg("edit_autocp_btn_tooltip"));
        autoCpEditBtn.setText(options.getMsg("edit_autocp_btn"));
        autoCpEditBtn.setEnabled(false);
        autoCpEditBtn.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        autoCpPanel.getMainPanel().add(autoCpEditBtn, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(autoCpPanel, gridBagConstraints);

        countersPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        countersPanel.setTitle(options.getMsg("edit_act_counters_block"));
        timeCounterChk.setToolTipText(options.getMsg("edit_act_timeCounter_tooltip"));
        timeCounterChk.setText(options.getMsg("edit_act_timeCounter"));
        timeCounterChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(timeCounterChk, gridBagConstraints);

        maxTimeLb.setText(options.getMsg("edit_act_maxTime"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(maxTimeLb, gridBagConstraints);

        maxTimeInt.setToolTipText(options.getMsg("edit_act_maxTime_tooltip"));
        maxTimeInt.setMax(999);
        maxTimeInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
        countersPanel.getMainPanel().add(maxTimeInt, new java.awt.GridBagConstraints());

        countdownTimeChk.setToolTipText(options.getMsg("edit_act_countdown_tooltip"));
        countdownTimeChk.setText(options.getMsg("edit_act_countdown"));
        countdownTimeChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(countdownTimeChk, gridBagConstraints);

        actionsCounterChk.setToolTipText(options.getMsg("edit_act_actionsCounter_tooltip"));
        actionsCounterChk.setText(options.getMsg("edit_act_actionsCounter"));
        actionsCounterChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(actionsCounterChk, gridBagConstraints);

        maxActionsLb.setText(options.getMsg("edit_act_maxActions"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(maxActionsLb, gridBagConstraints);

        maxActionsInt.setToolTipText(options.getMsg("edit_act_maxActions_tooltip"));
        maxActionsInt.setMax(999);
        maxActionsInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
        countersPanel.getMainPanel().add(maxActionsInt, new java.awt.GridBagConstraints());

        countdownActionsChk.setToolTipText(options.getMsg("edit_act_countdown_tooltip"));
        countdownActionsChk.setText(options.getMsg("edit_act_countdown"));
        countdownActionsChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(countdownActionsChk, gridBagConstraints);

        scoreCounterChk.setText(options.getMsg("edit_act_scoreCounter"));
        scoreCounterChk.setToolTipText(options.getMsg("edit_act_scoreCounter_tooltip"));
        scoreCounterChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        countersPanel.getMainPanel().add(scoreCounterChk, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(countersPanel, gridBagConstraints);

        buttonsPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        buttonsPanel.setTitle(options.getMsg("edit_act_buttons_block"));
        helpBtnChk.setText(options.getMsg("edit_act_helpBtn"));
        helpBtnChk.setToolTipText(options.getMsg("edit_act_helpBtn_tooltip"));
        helpBtnChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(helpBtnChk, gridBagConstraints);

        helpBtnMsg.setText(options.getMsg("edit_act_helpBtn_msg"));
        helpBtnButtonGroup.add(helpBtnMsg);
        helpBtnMsg.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(helpBtnMsg, gridBagConstraints);

        helpBtnSolution.setText(options.getMsg("edit_act_helpBtn_solution"));
        helpBtnButtonGroup.add(helpBtnSolution);
        helpBtnSolution.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(helpBtnSolution, gridBagConstraints);

        helpBtnMsgScroll.setPreferredSize(new java.awt.Dimension(300, 60));
        helpBtnMsgScroll.setMinimumSize(new java.awt.Dimension(150, 60));
        helpBtnMsgText.setWrapStyleWord(true);
        helpBtnMsgText.setLineWrap(true);
        helpBtnMsgText.getDocument().addDocumentListener(this);
        helpBtnMsgScroll.setViewportView(helpBtnMsgText);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.gridheight = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(helpBtnMsgScroll, gridBagConstraints);

        infoBtnChk.setToolTipText(options.getMsg("edit_act_infoBtn_tooltip"));
        infoBtnChk.setText(options.getMsg("edit_act_infoBtn"));
        infoBtnChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(9, 3, 3, 3);
        buttonsPanel.getMainPanel().add(infoBtnChk, gridBagConstraints);

        infoBtnUrlChk.setText(options.getMsg("edit_act_infoBtn_url"));
        infoBtnButtonGroup.add(infoBtnUrlChk);
        infoBtnUrlChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(infoBtnUrlChk, gridBagConstraints);

        infoBtnUrlTxt.setToolTipText(options.getMsg("edit_act_infoBtn_url_tooltip"));
        infoBtnUrlTxt.setPreferredSize(new java.awt.Dimension(300, 21));
        infoBtnUrlTxt.setMinimumSize(new java.awt.Dimension(100, 21));
        infoBtnUrlTxt.getDocument().addDocumentListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(infoBtnUrlTxt, gridBagConstraints);

        infoBtnCmdChk.setText(options.getMsg("edit_act_infoBtn_cmd"));
        infoBtnButtonGroup.add(infoBtnCmdChk);
        infoBtnCmdChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(infoBtnCmdChk, gridBagConstraints);

        infoBtnCmdTxt.setToolTipText(options.getMsg("edit_act_infoBtn_cmd_tooltip"));
        infoBtnCmdTxt.setPreferredSize(new java.awt.Dimension(300, 21));
        infoBtnCmdTxt.setMinimumSize(new java.awt.Dimension(100, 21));
        infoBtnCmdTxt.getDocument().addDocumentListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        buttonsPanel.getMainPanel().add(infoBtnCmdTxt, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(buttonsPanel, gridBagConstraints);

        behaviorPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());

        behaviorPanel.setTitle(options.getMsg("edit_act_behavior_block"));
        scrambleTimesLb.setLabelFor(scrambleTimesInt);
        scrambleTimesLb.setText(options.getMsg("edit_act_behavior_scramble_times"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        behaviorPanel.getMainPanel().add(scrambleTimesLb, gridBagConstraints);

        scrambleTimesInt.setToolTipText(options.getMsg("edit_act_behavior_scramble_times_tooltip"));
        scrambleTimesInt.setMax(999);
        scrambleTimesInt.setMin(1);
        scrambleTimesInt.setValue(30);
        scrambleTimesInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        behaviorPanel.getMainPanel().add(scrambleTimesInt, gridBagConstraints);

        dragCellsChk.setText(options.getMsg("edit_act_behavior_drag"));
        dragCellsChk.setToolTipText(options.getMsg("edit_act_behavior_drag_tooltip"));
        dragCellsChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        behaviorPanel.getMainPanel().add(dragCellsChk, gridBagConstraints);

        orderChk.setText(options.getMsg("edit_act_behavior_order"));
        orderChk.setToolTipText(options.getMsg("edit_act_behavior_order_tooltip"));
        orderChk.addActionListener(this);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        behaviorPanel.getMainPanel().add(orderChk, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        mainPanel.add(behaviorPanel, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
        gridBagConstraints.weighty = 1.0;
        mainPanel.add(spacer, gridBagConstraints);

        scroll.setViewportView(mainPanel);

        add(scroll);

    }//GEN-END:initComponents
                

    public void setEnabled(boolean enabled){
        super.setEnabled(enabled);
        chNameBtn.setEnabled(enabled);
        chClassBtn.setEnabled(enabled);
        descText.setEnabled(enabled);
        bIncludeInReportsChk.setEnabled(enabled);
        skinCombo.setEnabled(enabled);
        evSoundsBtn.setEnabled(enabled);
        autoCpCombo.setEnabled(enabled);
        timeCounterChk.setEnabled(enabled);
        actionsCounterChk.setEnabled(enabled);
        scoreCounterChk.setEnabled(enabled);        
        helpBtnChk.setEnabled(enabled);
        infoBtnChk.setEnabled(enabled);
        scrambleTimesInt.setEnabled(enabled);
        dragCellsChk.setEnabled(enabled);
        orderChk.setEnabled(enabled);
        checkEnabled();
    }
    
    protected void checkEnabled(){
        boolean e=isEnabled();
        
        boolean b=e && bIncludeInReportsChk.isSelected();
        bRegisterActionsChk.setEnabled(b);
        codeText.setEnabled(b);
        
        autoCpEditBtn.setEnabled(e && autoCpCombo.getSelectedIndex()>0);
        
        b = e && timeCounterChk.isSelected();
        maxTimeInt.setEnabled(b);
        countdownTimeChk.setEnabled(b && maxTimeInt.getValue()>0);
        
        b = e && actionsCounterChk.isSelected();
        maxActionsInt.setEnabled(b);
        countdownActionsChk.setEnabled(b && maxActionsInt.getValue()>0);
        
        b = e && helpBtnChk.isSelected();
        helpBtnSolution.setEnabled(b);
        helpBtnMsg.setEnabled(b);
        helpBtnMsgText.setEnabled(b && helpBtnMsg.isSelected());
        helpBtnMsgScroll.setEnabled(b && helpBtnMsg.isSelected());
        
        b = e && infoBtnChk.isSelected();
        infoBtnUrlChk.setEnabled(b);
        infoBtnUrlTxt.setEnabled(b && infoBtnUrlChk.isSelected());
        infoBtnCmdChk.setEnabled(b);
        infoBtnCmdTxt.setEnabled(b && infoBtnCmdChk.isSelected());
        
    }
    
    private void checkContentProviders(){
        Activity act=getActivity();
        if(contentProviders==null){
            contentProviders=new Vector(allContentProviders.size());
        }
        else{
            contentProviders.clear();
        }
        autoCpCombo.removeAllItems();
        Iterator it=allContentProviders.iterator();
        while(it.hasNext()){
            TripleString ts=(TripleString)it.next();
            boolean  isOk= (ts.getClassName()==null);
            if(!isOk && act!=null)
                isOk=AutoContentProvider.checkClient(ts.getClassName(), act.getClass());
            if(isOk){
                contentProviders.add(ts);
                autoCpCombo.addItem(ts);
            }
        }
    }
    
    public void fillData() {
        Activity act=getActivity();
        
        nameText.setText(act==null ? options.getMsg("UNNAMED") : act.name);
        descText.setText(act==null ? "" : act.description==null ? "" : act.description);
        String s= act==null ? "" : act.getShortClassName();
        if(s.startsWith(Activity.BASE_CLASS_TAG))
            s=s.substring(1);
        className.setText(s);
        
        bIncludeInReportsChk.setSelected(act==null ? true : act.includeInReports);
        bRegisterActionsChk.setSelected(act==null ? false : act.reportActions);
        codeText.setText(act==null ? "" : act.code);
        skinCombo.setSelectedItem(act==null ? null : act.skinFileName);
        evSoundsBtn.setMediaBagEditor(act==null ? null : getActivityEditor().getProjectEditor().getMediaBagEditor());
        evSoundsBtn.setEventSounds(act==null ? null : act.eventSounds);
        evSoundsBtn.setModified(false);
        checkContentProviders();
        String acpClassName=(act==null || act.acp==null) ? null : act.acp.getShortClassName();
        int index=Math.max(0, TripleString.getFirstItemWithClass(contentProviders, acpClassName));
        autoCpCombo.setSelectedIndex(index);
        
        timeCounterChk.setSelected(act==null ? true : act.bTimeCounter);
        maxTimeInt.setValue(act==null ? 0 : act.maxTime);
        countdownTimeChk.setSelected(act==null ? false : act.countDownTime);
        
        actionsCounterChk.setSelected(act==null ? false : act.bActionsCounter);
        maxActionsInt.setValue(act==null ? 0 : act.maxActions);
        countdownActionsChk.setSelected(act==null ? false : act.countDownActions);
        
        scoreCounterChk.setSelected(act==null ? true : act.bScoreCounter);
        
        helpBtnChk.setSelected(act==null ? true : act.helpWindow);
        boolean helpSolution = act!=null && (act.showSolution || act.helpMsg==null || act.helpMsg.length()==0);
        helpBtnSolution.setSelected(helpSolution);
        helpBtnMsg.setSelected(!helpSolution);
        helpBtnMsgText.setText(act==null ? "" : act.helpMsg);
        
        int v=0;
        if(act!=null && act.infoUrl!=null && act.infoUrl.length()>0)
            v=1;
        else if(act!=null && act.infoCmd!=null && act.infoCmd.length()>0)
            v=2;
        
        infoBtnChk.setSelected(v>0);
        infoBtnUrlChk.setSelected(v!=2);
        infoBtnCmdChk.setSelected(v==2);
        infoBtnUrlTxt.setText(act==null ? "" : act.infoUrl);
        infoBtnCmdTxt.setText(act==null ? "" : act.infoCmd);
        
        if(act!=null && act.hasRandom()){
            scrambleTimesInt.setValue(act==null ? Activity.DEFAULT_SHUFFLES : act.shuffles);
            //behaviorPanel.setVisible(true);
        }
        else{
            //behaviorPanel.setVisible(false);
        }
        
        dragCellsChk.setSelected(act==null ? false : act.dragCells);
        orderChk.setSelected(act==null ? false : act.useOrder);
        
        checkEnabled();
    }
    
    public void saveData(){
        Activity act=getActivity();
        if(act!=null){
            
            act.description=descText.getText();
            
            act.includeInReports=bIncludeInReportsChk.isSelected();
            act.reportActions=bRegisterActionsChk.isSelected();
            act.code=codeText.getText();
            act.skinFileName=(String)skinCombo.getSelectedItem();
            act.eventSounds=evSoundsBtn.getEventSounds();
            evSoundsBtn.setModified(false);
            
            act.bTimeCounter=timeCounterChk.isSelected();
            act.maxTime=maxTimeInt.getValue();
            act.countDownTime=countdownTimeChk.isSelected();
            
            act.bActionsCounter=actionsCounterChk.isSelected();
            act.maxActions= maxActionsInt.getValue();
            act.countDownActions=countdownActionsChk.isSelected();
            
            act.bScoreCounter=scoreCounterChk.isSelected();
            
            act.helpWindow=helpBtnChk.isSelected();
            act.showSolution=helpBtnSolution.isSelected();
            act.helpMsg=StrUtils.nullableString(helpBtnMsgText.getText());
            
            int v=0;
            if(infoBtnChk.isSelected()){
                if(infoBtnUrlChk.isSelected()){
                    act.infoUrl=StrUtils.nullableString(infoBtnUrlTxt.getText());
                    act.infoCmd=null;
                } else{
                    act.infoUrl=null;
                    act.infoCmd=StrUtils.nullableString(infoBtnCmdTxt.getText());
                }
            }
            else{
                act.infoUrl=null;
                act.infoCmd=null;
            }
            
            if(act.hasRandom())
                act.shuffles=scrambleTimesInt.getValue();
            
            act.dragCells=dragCellsChk.isSelected();
            act.useOrder=orderChk.isSelected();
        }
    }
        
    private static SelectActivityClass sac;
    public boolean eventPerformed(EventObject ev){
        
        Object cmp=ev==null ? null : ev.getSource();
        boolean result=(cmp!=null);
        final ActivityEditor aed=getActivityEditor();
        
        if(cmp==chClassBtn && aed!=null){
            if(sac==null){
                sac=new SelectActivityClass(options);
                sac.setAlertMsg(options.getMsg("edit_act_changeType_warning"));
            }
            String oldClassName=getActivity().getShortClassName();            
            sac.setCurrentClassName(oldClassName);
            sac.setListFilter(getActivity().getSimilarActivityClasses(), true);
            if((result= getOptions().getMessages().showInputDlg(this, sac, "edit_act_changeType")
              && sac.getCurrentClassName()!=null 
              && !oldClassName.equals(sac.getCurrentClassName()))){
                ActivityBagElementEditor abed=aed.getActivityBagElementEditor();
                aed.collectData();
                aed.saveData();
                try{
                    abed.changeActivityClass(sac.getCurrentClassName());
                    abed.reselect();
                } catch(Exception ex){
                    options.getMessages().showErrorWarning(this, "ERROR", ex);
                }
            }
        }
        else if(cmp==chNameBtn && aed!=null){
            final String oldName=getActivity().name;
            final String newName=options.getMessages().showInputDlg(this, 
            "edit_media_rename", "edit_media_rename_prompt", oldName, 
            "edit_media_rename_title", false);
            if((result=newName!=null && !newName.equals(oldName))){
                final ProgressDialog progressDialog=new ProgressDialog(this, options);
                SwingWorker sw=new SwingWorker(){
                    public Object construct(){
                        aed.rename(newName, ActivityEditorOptionsPanel.this, options.getMessages());
                        aed.getActivityBagElementEditor().reselect();
                        return null;
                    }
                    public void finished(){
                        //nameText.setText(newName);
                        progressDialog.setVisible(false);                        
                    }
                };
                progressDialog.start("edit_media_rename", "edit_media_renaming", sw, false, false, false);                    
            }
        }        
        else if(cmp==autoCpCombo && aed!=null){
            AutoContentProviderEditor acped=aed.getAutoContentProviderEditor();
            TripleString ts=(TripleString)autoCpCombo.getSelectedItem();
            String acpClassName=ts==null ? null : ts.getClassName();
            if(acped!=null){
                if(acped.getAutoContentProvider().getShortClassName().equals(acpClassName))
                    return false;
                acped.removeFromParent();
                aed.getActivity().acp=null;
            }
            if(acpClassName!=null){
                try{
                    AutoContentProvider acp=AutoContentProvider.getAutoContentProvider(acpClassName);
                    aed.getActivity().acp=acp;
                    acp.getEditor(aed);
                } catch(Exception ex){
                    options.getMessages().showErrorWarning(this, "edit_acp_err_creating", ex);
                    aed.getActivity().acp=null;
                }
            }
        }
        else if(cmp==autoCpEditBtn && aed!=null){
            AutoContentProviderEditor acped=(AutoContentProviderEditor)aed.getFirstChild(AutoContentProviderEditor.class);
            if(acped!=null)
                acped.editData(this, options);
        }        
        
        if(result)
            checkEnabled();
        return result;
    }
    
    protected javax.swing.Icon getIcon(){
        return edu.xtec.util.ResourceManager.getImageIcon("icons/options.gif");
    }
    
    protected String getTitle() {
        return options.getMsg("edit_act_panels_options");
    }
    
    protected String getTooltip() {
        return options.getMsg("edit_act_panels_options_tooltip");
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox actionsCounterChk;
    private javax.swing.JComboBox autoCpCombo;
    private javax.swing.JButton autoCpEditBtn;
    private edu.xtec.jclic.beans.RollPanel autoCpPanel;
    private javax.swing.JCheckBox bIncludeInReportsChk;
    private javax.swing.JCheckBox bRegisterActionsChk;
    private edu.xtec.jclic.beans.RollPanel behaviorPanel;
    private edu.xtec.jclic.beans.RollPanel buttonsPanel;
    private javax.swing.JButton chClassBtn;
    private javax.swing.JButton chNameBtn;
    private javax.swing.JLabel className;
    private javax.swing.JTextField codeText;
    private javax.swing.JCheckBox countdownActionsChk;
    private javax.swing.JCheckBox countdownTimeChk;
    private edu.xtec.jclic.beans.RollPanel countersPanel;
    private edu.xtec.jclic.beans.RollPanel descPanel;
    private javax.swing.JScrollPane descScroll;
    private javax.swing.JTextPane descText;
    private javax.swing.JCheckBox dragCellsChk;
    private edu.xtec.jclic.beans.EventSoundsButton evSoundsBtn;
    private javax.swing.JCheckBox helpBtnChk;
    private javax.swing.JRadioButton helpBtnMsg;
    private javax.swing.JScrollPane helpBtnMsgScroll;
    private javax.swing.JTextArea helpBtnMsgText;
    private javax.swing.JRadioButton helpBtnSolution;
    private javax.swing.JCheckBox infoBtnChk;
    private javax.swing.JRadioButton infoBtnCmdChk;
    private javax.swing.JTextField infoBtnCmdTxt;
    private javax.swing.JRadioButton infoBtnUrlChk;
    private javax.swing.JTextField infoBtnUrlTxt;
    private edu.xtec.jclic.beans.SmallIntEditor maxActionsInt;
    private edu.xtec.jclic.beans.SmallIntEditor maxTimeInt;
    private javax.swing.JLabel nameText;
    private javax.swing.JCheckBox orderChk;
    private edu.xtec.jclic.beans.RollPanel reportPanel;
    private javax.swing.JCheckBox scoreCounterChk;
    private edu.xtec.jclic.beans.SmallIntEditor scrambleTimesInt;
    private javax.swing.JScrollPane scroll;
    private javax.swing.JComboBox skinCombo;
    private javax.swing.JCheckBox timeCounterChk;
    private edu.xtec.jclic.beans.RollPanel uiPanel;
    // End of variables declaration//GEN-END:variables
    
}

Generated by  Doxygen 1.6.0   Back to index