/*
* 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.util.ProgressDialog;
import edu.xtec.util.StrUtils;
import edu.xtec.util.TripleString;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.16
*/
public class ActivityEditorOptionsPanel extends ActivityEditorInternalPanel {
List<TripleString> contentProviders, allContentProviders;
/** Creates new form MenuEditorPanel */
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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
javax.swing.ButtonGroup helpBtnButtonGroup = new javax.swing.ButtonGroup();
javax.swing.ButtonGroup infoBtnButtonGroup = new javax.swing.ButtonGroup();
scroll = new javax.swing.JScrollPane();
javax.swing.JPanel mainPanel = new javax.swing.JPanel();
descPanel = new edu.xtec.jclic.beans.RollPanel();
javax.swing.JLabel classLb = new javax.swing.JLabel();
className = new javax.swing.JLabel();
chClassBtn = new javax.swing.JButton();
chClassBtn.addActionListener(this);
javax.swing.JLabel nameLb = new javax.swing.JLabel();
nameText = new javax.swing.JLabel();
chNameBtn = new javax.swing.JButton();
chNameBtn.addActionListener(this);
javax.swing.JLabel 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();
javax.swing.JLabel codeLb = new javax.swing.JLabel();
codeText = new javax.swing.JTextField();
bRegisterActionsChk = new javax.swing.JCheckBox();
uiPanel = new edu.xtec.jclic.beans.RollPanel();
javax.swing.JLabel skinLb = new javax.swing.JLabel();
skinCombo = new javax.swing.JComboBox(edu.xtec.jclic.skins.Skin.getSystemSkinList(true));
javax.swing.JLabel evSoundsLb = new javax.swing.JLabel();
evSoundsBtn = new edu.xtec.jclic.beans.EventSoundsButton();
autoCpPanel = new edu.xtec.jclic.beans.RollPanel();
javax.swing.JLabel 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();
javax.swing.JLabel maxTimeLb = new javax.swing.JLabel();
maxTimeInt = new edu.xtec.jclic.beans.SmallIntEditor();
countdownTimeChk = new javax.swing.JCheckBox();
actionsCounterChk = new javax.swing.JCheckBox();
javax.swing.JLabel 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();
javax.swing.JLabel scrambleTimesLb = new javax.swing.JLabel();
scrambleTimesInt = new edu.xtec.jclic.beans.SmallIntEditor();
dragCellsChk = new javax.swing.JCheckBox();
orderChk = new javax.swing.JCheckBox();
javax.swing.JLabel spacer = new javax.swing.JLabel();
setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));
mainPanel.setLayout(new java.awt.GridBagLayout());
descPanel.setTitle(options.getMsg("edit_act_description_block"));
descPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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(javax.swing.BorderFactory.createTitledBorder(""));
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"))); // NOI18N
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(javax.swing.BorderFactory.createTitledBorder(""));
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"))); // NOI18N
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(javax.swing.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.setTitle(options.getMsg("edit_act_reports_block"));
reportPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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.setTitle(options.getMsg("edit_act_ui_block"));
uiPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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.setEditable(true);
skinCombo.setToolTipText(options.getMsg("settings_skin_tooltip"));
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.setTitle(options.getMsg("edit_autocp_block"));
autoCpPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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.setTitle(options.getMsg("edit_act_counters_block"));
countersPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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.setTitle(options.getMsg("edit_act_buttons_block"));
buttonsPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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);
helpBtnButtonGroup.add(helpBtnMsg);
helpBtnMsg.setText(options.getMsg("edit_act_helpBtn_msg"));
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);
helpBtnButtonGroup.add(helpBtnSolution);
helpBtnSolution.setText(options.getMsg("edit_act_helpBtn_solution"));
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);
infoBtnButtonGroup.add(infoBtnUrlChk);
infoBtnUrlChk.setText(options.getMsg("edit_act_infoBtn_url"));
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);
infoBtnButtonGroup.add(infoBtnCmdChk);
infoBtnCmdChk.setText(options.getMsg("edit_act_infoBtn_cmd"));
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.setTitle(options.getMsg("edit_act_behavior_block"));
behaviorPanel.getMainPanel().setLayout(new java.awt.GridBagLayout());
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.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
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.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
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.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
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);
}// </editor-fold>//GEN-END:initComponents
@Override
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 ArrayList<TripleString>(allContentProviders.size());
}
else{
contentProviders.clear();
}
autoCpCombo.removeAllItems();
for (TripleString ts : allContentProviders) {
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.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;
@Override
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);
edu.xtec.util.SwingWorker sw=new edu.xtec.util.SwingWorker(){
@Override
public Object construct(){
aed.rename(newName, ActivityEditorOptionsPanel.this, options.getMessages());
aed.getActivityBagElementEditor().reselect();
return null;
}
@Override
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
}