/*
* File : TextGridContentControlPanel.java
* Created : 01-apr-2003 10:38
* 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.boxes;
import edu.xtec.jclic.Activity;
import edu.xtec.jclic.activities.textGrid.CrossWord;
import edu.xtec.jclic.activities.textGrid.WordSearch;
import edu.xtec.jclic.beans.*;
import edu.xtec.util.Options;
import java.util.EventObject;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.09
*/
public class TextGridContentControlPanel extends edu.xtec.util.CtrlPanel {
ActiveBagContentEditor parent;
TextGridContent tgc;
Options options;
boolean isWordSearch;
int index;
/** Creates new form ActiveBagContentControlPanel */
public TextGridContentControlPanel(ActiveBagContentEditor parent, int index, boolean isWordSearch){
setInitializing(true);
this.isWordSearch=isWordSearch;
this.parent=parent;
options=parent.getOptions();
this.index=index;
initComponents();
if(!isWordSearch){
wordListLb.setVisible(false);
wordListEditor.setEnabled(false);
wordListEditor.setVisible(false);
useGridBChk.setEnabled(false);
useGridBChk.setVisible(false);
} else{
wildTransparentChk.setEnabled(false);
wildTransparentChk.setVisible(false);
}
setInitializing(false);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
javax.swing.JLabel heightLb;
javax.swing.JPanel leftPanel;
javax.swing.JLabel nColsLb;
javax.swing.JLabel nRowsLb;
javax.swing.JLabel spacer;
javax.swing.JLabel spacer2;
javax.swing.JLabel styleLb;
javax.swing.JLabel widthLb;
leftPanel = new javax.swing.JPanel();
spacer = new javax.swing.JLabel();
useGridBChk = new javax.swing.JCheckBox();
nRowsLb = new javax.swing.JLabel();
nRowsEdit = new edu.xtec.jclic.beans.SmallIntEditor();
nColsLb = new javax.swing.JLabel();
nColsEdit = new edu.xtec.jclic.beans.SmallIntEditor();
wildTransparentChk = new javax.swing.JCheckBox();
spacer2 = new javax.swing.JLabel();
widthLb = new javax.swing.JLabel();
widthEdit = new edu.xtec.jclic.beans.SmallIntEditor();
heightLb = new javax.swing.JLabel();
heightEdit = new edu.xtec.jclic.beans.SmallIntEditor();
styleLb = new javax.swing.JLabel();
boxBaseButton = new edu.xtec.jclic.beans.BoxBaseButton();
boxBaseButton.setOptions(options);
borderChk = new javax.swing.JCheckBox();
wordSearchPanel = new javax.swing.JPanel();
wordListLb = new javax.swing.JLabel();
wordListEditor = new TextListEditor(options);
setLayout(new java.awt.GridBagLayout());
leftPanel.setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
leftPanel.add(spacer, gridBagConstraints);
useGridBChk.setToolTipText(options.getMsg("edit_act_wordSearch_panelB_tooltip"));
useGridBChk.setText(options.getMsg("edit_act_wordSearch_panelB"));
useGridBChk.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(2, 2, 2, 2);
leftPanel.add(useGridBChk, gridBagConstraints);
nRowsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_rows.gif")));
nRowsLb.setText(":");
nRowsLb.setIconTextGap(0);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(nRowsLb, gridBagConstraints);
nRowsEdit.setToolTipText(options.getMsg("edit_act_num_rows_tooltip"));
nRowsEdit.setMax(30);
nRowsEdit.setMin(1);
nRowsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(nRowsEdit, gridBagConstraints);
nColsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_cols.gif")));
nColsLb.setText(":");
nColsLb.setIconTextGap(0);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(nColsLb, gridBagConstraints);
nColsEdit.setToolTipText(options.getMsg("edit_act_num_cols_tooltip"));
nColsEdit.setMax(30);
nColsEdit.setMin(1);
nColsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(nColsEdit, gridBagConstraints);
wildTransparentChk.setToolTipText(options.getMsg("edit_act_wildTransparent_tooltip"));
wildTransparentChk.setText(options.getMsg("edit_act_wildTransparent"));
wildTransparentChk.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(wildTransparentChk, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
leftPanel.add(spacer2, gridBagConstraints);
widthLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_width.gif")));
widthLb.setLabelFor(widthEdit);
widthLb.setText(":");
widthLb.setIconTextGap(0);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(widthLb, gridBagConstraints);
widthEdit.setToolTipText(options.getMsg("edit_act_cell_width_tooltip"));
widthEdit.setMax(999);
widthEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE);
widthEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(widthEdit, gridBagConstraints);
heightLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_height.gif")));
heightLb.setLabelFor(heightEdit);
heightLb.setText(":");
heightLb.setIconTextGap(0);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(heightLb, gridBagConstraints);
heightEdit.setToolTipText(options.getMsg("edit_act_cell_height_tooltip"));
heightEdit.setMax(999);
heightEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE);
heightEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(heightEdit, gridBagConstraints);
styleLb.setText(options.getMsg("edit_act_style"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(styleLb, gridBagConstraints);
boxBaseButton.setToolTipText(options.getMsg("edit_style_tooltip"));
boxBaseButton.addPropertyChangeListener(BoxBaseButton.PROP_BOX_BASE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
leftPanel.add(boxBaseButton, gridBagConstraints);
borderChk.setText(options.getMsg("edit_act_border"));
borderChk.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(2, 2, 2, 2);
leftPanel.add(borderChk, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(leftPanel, gridBagConstraints);
wordSearchPanel.setLayout(new java.awt.GridBagLayout());
wordListLb.setText(options.getMsg("edit_act_hiddenWords"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
wordSearchPanel.add(wordListLb, gridBagConstraints);
wordListEditor.setToolTipText(options.getMsg("edit_act_hiddenWords_tooltip"));
wordListEditor.setPreferredSize(new java.awt.Dimension(160, 80));
wordListEditor.setUpperCase(true);
wordListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
wordSearchPanel.add(wordListEditor, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(wordSearchPanel, gridBagConstraints);
}//GEN-END:initComponents
@Override
public boolean eventPerformed(EventObject ev){
boolean result=true;
if(tgc!=null && ev!=null && ev.getSource()!=null){
Object src=ev.getSource();
if(src==boxBaseButton){
boxBaseButtonActionPerformed();
}
else if(src==borderChk){
borderChkActionPerformed();
}
else if(src==useGridBChk && isWordSearch){
parent.enableGridB(useGridBChk.isSelected());
return result;
}
if(src==widthEdit || src==heightEdit){
parent.abcpp.doResize(index, widthEdit.getValue(), heightEdit.getValue(), true);
}
else{
if(src==nColsEdit || src==nRowsEdit){
tgc.ncw=nColsEdit.getValue();
tgc.nch=nRowsEdit.getValue();
tgc.completeText();
}
parent.abcpp.setActiveBagContent(index, null, null, tgc);
AbstractBox abx=parent.abcpp.getAbstractBox(index);
if(abx!=null){
boxBaseButton.setPreview(abx);
}
}
}
return result;
}
protected void resized(){
if(tgc!=null){
widthEdit.setValue((int)tgc.w);
heightEdit.setValue((int)tgc.h);
}
}
public void fillData(Activity act){
tgc=(act!=null ? act.tgc : null);
boxBaseButton.setBoxBase(tgc!=null ? tgc.bb : null);
parent.abcpp.setActiveBagContent(index, null, null, tgc);
boxBaseButton.setPreview(parent.abcpp.getAbstractBox(index));
boxBaseButton.setEnabled(tgc!=null);
nColsEdit.setValue(tgc!=null ? tgc.ncw : 1);
nColsEdit.setEnabled(tgc!=null);
nRowsEdit.setValue(tgc!=null ? tgc.nch : 1);
nRowsEdit.setEnabled(tgc!=null);
widthEdit.setValue(tgc!=null ? (int)tgc.w : 20);
widthEdit.setEnabled(tgc!=null);
heightEdit.setValue(tgc!=null ? (int)tgc.h : 20);
heightEdit.setEnabled(tgc!=null);
borderChk.setSelected(tgc!=null ? tgc.border : true);
borderChk.setEnabled(tgc!=null);
if(isWordSearch && (act instanceof WordSearch)){
useGridBChk.setSelected(act.abc!=null && act.abc[0]!=null);
wordListEditor.setTextList(((WordSearch)act).getClues());
}
else{
wordListEditor.setTextList(null);
wordListEditor.setEnabled(false);
}
if(!isWordSearch && (act instanceof CrossWord)){
wildTransparentChk.setSelected(((CrossWord)act).wildTransparent);
}
else{
wildTransparentChk.setSelected(false);
}
}
public void saveData(Activity act){
if(act!=null){
act.tgc=tgc;
if(isWordSearch && (act instanceof WordSearch)){
((WordSearch)act).setClues(wordListEditor.getTextList(), null);
}
else if(!isWordSearch && (act instanceof CrossWord)){
((CrossWord)act).wildTransparent=wildTransparentChk.isSelected();
}
}
}
private void boxBaseButtonActionPerformed(){
BoxBase bb=boxBaseButton.getBoxBase();
if(bb!=null && tgc!=null)
tgc.bb=bb;
}
private void borderChkActionPerformed(){
if(tgc!=null)
tgc.border=borderChk.isSelected();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox borderChk;
private edu.xtec.jclic.beans.BoxBaseButton boxBaseButton;
private edu.xtec.jclic.beans.SmallIntEditor heightEdit;
private edu.xtec.jclic.beans.SmallIntEditor nColsEdit;
private edu.xtec.jclic.beans.SmallIntEditor nRowsEdit;
private javax.swing.JCheckBox useGridBChk;
private edu.xtec.jclic.beans.SmallIntEditor widthEdit;
private javax.swing.JCheckBox wildTransparentChk;
private edu.xtec.jclic.beans.TextListEditor wordListEditor;
private javax.swing.JLabel wordListLb;
private javax.swing.JPanel wordSearchPanel;
// End of variables declaration//GEN-END:variables
}