/*
* File : EventSoundsEditorPanel.java
* Created : 10-feb-2004 13:33
* 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.media;
import edu.xtec.jclic.Constants;
import edu.xtec.jclic.bags.MediaBagEditor;
import edu.xtec.jclic.beans.SoundButton;
import edu.xtec.util.JDomUtility;
import edu.xtec.util.Messages;
import edu.xtec.util.Options;
import edu.xtec.util.StrUtils;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.17
*/
public class EventSoundsEditorPanel extends javax.swing.JPanel implements PropertyChangeListener, ActionListener {
Options options;
JLabel[] txFields;
JCheckBox[] chkBoxes;
SoundButton[] buttons;
EventSounds evs;
/** Creates new form EventSoundsEditorPanel */
public EventSoundsEditorPanel(Options options, MediaBagEditor mbe) {
this.options=options;
evs=new EventSounds(null);
initComponents();
txFields=new JLabel[]{
evStart, evClick, evActionError, evActionOk, evFinishedError, evFinishedOk
};
buttons=new SoundButton[]{
evStartBtn, evClickBtn, evActionErrorBtn, evActionOkBtn, evFinishedErrorBtn, evFinishedOkBtn
};
chkBoxes=new JCheckBox[]{
evStartChk, evClickChk, evActionErrorChk, evActionOkChk, evFinishedErrorChk, evFinishedOkChk
};
for(int i=0; i<buttons.length; i++){
buttons[i].setOptions(options);
buttons[i].setMediaBagEditor(mbe);
buttons[i].addPropertyChangeListener(SoundButton.PROP_SND_NAME, this);
chkBoxes[i].addActionListener(this);
chkBoxes[i].setSelected(true);
}
}
/** 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
java.awt.GridBagConstraints gridBagConstraints;
evStartLb = new javax.swing.JLabel();
evStartChk = new javax.swing.JCheckBox();
evStart = new javax.swing.JLabel();
evStartBtn = new edu.xtec.jclic.beans.SoundButton();
evClickLb = new javax.swing.JLabel();
evClickChk = new javax.swing.JCheckBox();
evClick = new javax.swing.JLabel();
evClickBtn = new edu.xtec.jclic.beans.SoundButton();
evActionOkLb = new javax.swing.JLabel();
evActionOkChk = new javax.swing.JCheckBox();
evActionOk = new javax.swing.JLabel();
evActionOkBtn = new edu.xtec.jclic.beans.SoundButton();
evActionErrorLb = new javax.swing.JLabel();
evActionErrorChk = new javax.swing.JCheckBox();
evActionError = new javax.swing.JLabel();
evActionErrorBtn = new edu.xtec.jclic.beans.SoundButton();
evFinishedOkLb = new javax.swing.JLabel();
evFinishedOkChk = new javax.swing.JCheckBox();
evFinishedOk = new javax.swing.JLabel();
evFinishedOkBtn = new edu.xtec.jclic.beans.SoundButton();
evFinishedErrorLb = new javax.swing.JLabel();
evFinishedErrorChk = new javax.swing.JCheckBox();
evFinishedError = new javax.swing.JLabel();
evFinishedErrorBtn = new edu.xtec.jclic.beans.SoundButton();
setLayout(new java.awt.GridBagLayout());
evStartLb.setLabelFor(evStartBtn);
evStartLb.setText(options.getMsg("edit_evsounds_start"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evStartLb, gridBagConstraints);
evStartChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evStartChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evStartChk, gridBagConstraints);
evStart.setText(options.getMsg("edit_evsounds_default"));
evStart.setPreferredSize(new java.awt.Dimension(140, 27));
evStart.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evStart, gridBagConstraints);
evStartBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evStartBtn, gridBagConstraints);
evClickLb.setLabelFor(evClickBtn);
evClickLb.setText(options.getMsg("edit_evsounds_click"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evClickLb, gridBagConstraints);
evClickChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evClickChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evClickChk, gridBagConstraints);
evClick.setText(options.getMsg("edit_evsounds_default"));
evClick.setPreferredSize(new java.awt.Dimension(140, 27));
evClick.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evClick, gridBagConstraints);
evClickBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evClickBtn, gridBagConstraints);
evActionOkLb.setLabelFor(evActionOkBtn);
evActionOkLb.setText(options.getMsg("edit_evsounds_actionOk"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionOkLb, gridBagConstraints);
evActionOkChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evActionOkChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionOkChk, gridBagConstraints);
evActionOk.setText(options.getMsg("edit_evsounds_default"));
evActionOk.setPreferredSize(new java.awt.Dimension(140, 27));
evActionOk.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionOk, gridBagConstraints);
evActionOkBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evActionOkBtn, gridBagConstraints);
evActionErrorLb.setLabelFor(evActionErrorBtn);
evActionErrorLb.setText(options.getMsg("edit_evsounds_actionError"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionErrorLb, gridBagConstraints);
evActionErrorChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evActionErrorChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionErrorChk, gridBagConstraints);
evActionError.setText(options.getMsg("edit_evsounds_default"));
evActionError.setPreferredSize(new java.awt.Dimension(140, 27));
evActionError.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evActionError, gridBagConstraints);
evActionErrorBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evActionErrorBtn, gridBagConstraints);
evFinishedOkLb.setLabelFor(evFinishedOkBtn);
evFinishedOkLb.setText(options.getMsg("edit_evsounds_finishedOk"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedOkLb, gridBagConstraints);
evFinishedOkChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evFinishedOkChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedOkChk, gridBagConstraints);
evFinishedOk.setText(options.getMsg("edit_evsounds_default"));
evFinishedOk.setPreferredSize(new java.awt.Dimension(140, 27));
evFinishedOk.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedOk, gridBagConstraints);
evFinishedOkBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evFinishedOkBtn, gridBagConstraints);
evFinishedErrorLb.setLabelFor(evFinishedErrorBtn);
evFinishedErrorLb.setText(options.getMsg("edit_evsounds_finishedError"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedErrorLb, gridBagConstraints);
evFinishedErrorChk.setToolTipText(options.getMsg("edit_evsounds_chk_tooltip"));
evFinishedErrorChk.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedErrorChk, gridBagConstraints);
evFinishedError.setText(options.getMsg("edit_evsounds_default"));
evFinishedError.setPreferredSize(new java.awt.Dimension(140, 27));
evFinishedError.setBorder(new javax.swing.border.TitledBorder(""));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
add(evFinishedError, gridBagConstraints);
evFinishedErrorBtn.setToolTipText(options.getMsg("edit_evsounds_select_tooltip"));
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);
add(evFinishedErrorBtn, gridBagConstraints);
}//GEN-END:initComponents
public static boolean nameChanged(EventSounds ev, int type, String oldName, String newName){
boolean result=false;
if((type & (Constants.T_AUDIO | Constants.T_MIDI))!=0){
if(ev.parent!=null)
result|=nameChanged(ev.parent, type, oldName, newName);
for(int i=0; i<ev.elements.length; i++){
if(ev.elements[i]!=null && oldName.equals(ev.elements[i].fileName)){
ev.elements[i].fileName=newName;
result=true;
}
}
}
return result;
}
public void propertyChange(PropertyChangeEvent ev){
if(ev!=null && ev.getSource() instanceof SoundButton){
SoundButton src=(SoundButton)ev.getSource();
javax.swing.JLabel destLb=null;
for(int i=0; i<buttons.length; i++){
if(src==buttons[i]){
EventSoundsElement evse=evs.createElement(i);
evse.setFileName(src.getSoundName());
updateDisplayFor(i);
break;
}
}
}
}
protected void updateDisplayFor(int event){
EventSoundsElement evse=evs.getElement(event);
boolean enabled=true;
String msgKey=null;
String msg=null;
String fName=null;
if(evse==null){
msgKey="edit_evsounds_default";
} else{
enabled=(evse.getEnabled()!=JDomUtility.FALSE);
if(!enabled)
msgKey="edit_evsounds_disabled";
else{
fName=StrUtils.nullableString(evse.getFileName());
if(fName==null)
msgKey="edit_evsounds_default";
else
msg=fName;
}
}
if(msgKey!=null)
msg=options.getMsg(msgKey);
txFields[event].setText(msg);
buttons[event].setEnabled(enabled);
buttons[event].setSoundName(fName);
chkBoxes[event].setSelected(enabled);
}
public void setEventSounds(EventSounds evs){
if((this.evs=evs)==null)
this.evs=new EventSounds(null);
for(int i=0; i<buttons.length; i++){
updateDisplayFor(i);
}
}
public EventSounds getEventSounds(){
return evs;
}
private static Map<Options, EventSoundsEditorPanel> dlgPanels=new HashMap<Options, EventSoundsEditorPanel>(1);
public static EventSounds getEventSounds(EventSounds initialValue, Options options, Component parent, MediaBagEditor mbe){
EventSounds result=null;
Messages msg=options.getMessages();
EventSoundsEditorPanel evsed=dlgPanels.get(options);
if(evsed==null){
//mbep=(MediaBagMultiEditorPanel)mbe.createEditorPanel(options);
evsed=new EventSoundsEditorPanel(options, mbe);
//evsed.setPreferredSize(new java.awt.Dimension(500, 500));
dlgPanels.put(options, evsed);
}
evsed.setEventSounds((EventSounds)initialValue.clone());
boolean b=msg.showInputDlg(parent, evsed, "edit_evsounds_dlg_title");
if(b){
result=evsed.getEventSounds();
}
return result;
}
public void actionPerformed(java.awt.event.ActionEvent ev) {
if(ev!=null && ev.getSource() instanceof JCheckBox){
for(int i=0; i<chkBoxes.length; i++){
if(chkBoxes[i]==ev.getSource()){
EventSoundsElement evse=evs.createElement(i);
evse.setEnabled(chkBoxes[i].isSelected() ? JDomUtility.DEFAULT : JDomUtility.FALSE);
updateDisplayFor(i);
break;
}
}
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel evActionError;
private edu.xtec.jclic.beans.SoundButton evActionErrorBtn;
private javax.swing.JCheckBox evActionErrorChk;
private javax.swing.JLabel evActionErrorLb;
private javax.swing.JLabel evActionOk;
private edu.xtec.jclic.beans.SoundButton evActionOkBtn;
private javax.swing.JCheckBox evActionOkChk;
private javax.swing.JLabel evActionOkLb;
private javax.swing.JLabel evClick;
private edu.xtec.jclic.beans.SoundButton evClickBtn;
private javax.swing.JCheckBox evClickChk;
private javax.swing.JLabel evClickLb;
private javax.swing.JLabel evFinishedError;
private edu.xtec.jclic.beans.SoundButton evFinishedErrorBtn;
private javax.swing.JCheckBox evFinishedErrorChk;
private javax.swing.JLabel evFinishedErrorLb;
private javax.swing.JLabel evFinishedOk;
private edu.xtec.jclic.beans.SoundButton evFinishedOkBtn;
private javax.swing.JCheckBox evFinishedOkChk;
private javax.swing.JLabel evFinishedOkLb;
private javax.swing.JLabel evStart;
private edu.xtec.jclic.beans.SoundButton evStartBtn;
private javax.swing.JCheckBox evStartChk;
private javax.swing.JLabel evStartLb;
// End of variables declaration//GEN-END:variables
}