/*
* File : MenuElementEditorPanel.java
* Created : 05-jun-2002 12:17
* 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.activities.panels;
import edu.xtec.jclic.edit.*;
import edu.xtec.util.SmallButton;
import java.awt.Container;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.16
*/
public class MenuElementEditorPanel extends EditorPanel {
private static List<ImageIcon> standardIcons;
private List<ImageIcon> icons;
/** Creates new form MenuElementEditPanel */
public MenuElementEditorPanel(edu.xtec.util.Options options) {
super(options);
MenuEditor.createActions(options);
MenuElementEditor.createActions(options);
buildIconList();
initComponents();
postInit(250, true, 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
mainPanel = new javax.swing.JPanel();
javax.swing.JLabel projectLabel = new javax.swing.JLabel();
projectText = new javax.swing.JTextField();
projectText.getDocument().addDocumentListener(this);
btFindProject = new SmallButton(MenuElementEditor.findProjectAction);
javax.swing.JLabel iconLabel = new javax.swing.JLabel();
iconCombo = new javax.swing.JComboBox(new DefaultComboBoxModel(icons.toArray(new ImageIcon[icons.size()])));
iconCombo.addActionListener(this);
btFindIcon = new SmallButton(MenuElementEditor.findIconAction);
javax.swing.JLabel captionLabel = new javax.swing.JLabel();
captionText = new javax.swing.JTextField();
captionText.getDocument().addDocumentListener(this);
javax.swing.JLabel descLabel = new javax.swing.JLabel();
descText = new javax.swing.JTextField();
descText.getDocument().addDocumentListener(this);
setPreferredSize(new java.awt.Dimension(350, 300));
setLayout(new java.awt.BorderLayout());
mainPanel.setOpaque(false);
mainPanel.setLayout(new java.awt.GridBagLayout());
projectLabel.setText(options.getMsg("menuElement_dlg_project"));
projectLabel.setToolTipText(options.getMsg("menuElement_dlg_project_tooltip"));
projectLabel.setLabelFor(projectText);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
mainPanel.add(projectLabel, gridBagConstraints);
projectText.setToolTipText(options.getMsg("menuElement_dlg_project_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mainPanel.add(projectText, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
mainPanel.add(btFindProject, gridBagConstraints);
iconLabel.setText(options.getMsg("menuElement_dlg_icon"));
iconLabel.setToolTipText(options.getMsg("menuElement_dlg_icon_tooltip"));
iconLabel.setLabelFor(iconCombo);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
mainPanel.add(iconLabel, gridBagConstraints);
iconCombo.setToolTipText(options.getMsg("menuElement_dlg_icon_tooltip"));
iconCombo.setRenderer(new edu.xtec.util.CustomListCellRenderer());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4);
mainPanel.add(iconCombo, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
mainPanel.add(btFindIcon, gridBagConstraints);
captionLabel.setText(options.getMsg("edit_text"));
captionLabel.setToolTipText(options.getMsg("menuElement_dlg_text_tooltip"));
captionLabel.setLabelFor(captionText);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
mainPanel.add(captionLabel, gridBagConstraints);
captionText.setToolTipText(options.getMsg("menuElement_dlg_text_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4);
mainPanel.add(captionText, gridBagConstraints);
descLabel.setText(options.getMsg("menuElement_dlg_description"));
descLabel.setToolTipText(options.getMsg("menuElement_dlg_description_tooltip"));
descLabel.setLabelFor(descText);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2);
mainPanel.add(descLabel, gridBagConstraints);
descText.setToolTipText(options.getMsg("menuElement_dlg_description_tooltip"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4);
mainPanel.add(descText, gridBagConstraints);
add(mainPanel, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
public boolean checkIfEditorValid(Editor e) {
return e instanceof MenuElementEditor;
}
/*
public void clear() {
super.clear();
captionText.setText(null);
projectText.setText(null);
descText.setText(null);
iconCombo.setSelectedItem(null);
}
*/
public void fillData(){
MenuElement me=getMenuElement();
captionText.setText(me==null ? "" : me.caption);
projectText.setText(me==null ? "" : me.projectPath);
descText.setText(me==null ? "" : me.description);
if(getMeIcon()!=null && !icons.contains(getMeIcon())){
DefaultComboBoxModel model=(DefaultComboBoxModel)iconCombo.getModel();
model.addElement(getMeIcon());
}
iconCombo.setSelectedItem(getMeIcon());
}
/*
public boolean isModified(){
boolean result=super.isModified();
if(!result){
MenuElement me=getMenuElement();
if(me!=null){
result=
!(Utils.compareObjects(captionText.getText(), me.caption)
&& Utils.compareObjects(projectText.getText(), me.projectPath)
&& Utils.compareObjects(descText.getText(), me.description)
&& Utils.compareObjects(iconCombo.getSelectedItem(), getMeIcon())
);
}
}
return result;
}
*/
protected MenuElement getMenuElement(){
if(editor==null)
return null;
else
return (getMeEditor().getMenuElement());
}
public void saveData(){
MenuElement me=getMenuElement();
if(me!=null){
me.caption=captionText.getText();
me.projectPath=projectText.getText();
me.description=descText.getText();
getMeEditor().meIcon=(ImageIcon)iconCombo.getSelectedItem();
if(getMeIcon()!=null)
me.icon=getMeIcon().getDescription();
}
}
@Override
protected void setEditor(Editor e){
super.setEditor(e);
if(e!=null){
icons=new ArrayList<ImageIcon>(standardIcons);
iconCombo.setModel(new DefaultComboBoxModel(icons.toArray(new ImageIcon[icons.size()])));
}
}
@Override
protected javax.swing.Icon getIcon(){
return MenuElementEditor.getIcon();
}
protected MenuElementEditor getMeEditor(){
return (MenuElementEditor)editor;
}
protected ImageIcon getMeIcon(){
MenuElementEditor mee=getMeEditor();
return mee==null ? null : mee.meIcon;
}
@Override
protected String getTitle(){
return options.getMsg("menuElement_dlg_title");
}
@Override
protected void addActionsTo(Container cnt){
cnt.add(new SmallButton(MenuEditor.newMenuElementAction));
cnt.add(new SmallButton(MenuEditor.newMenuAction));
cnt.add(new SmallButton(Editor.moveUpAction));
cnt.add(new SmallButton(Editor.moveDownAction));
cnt.add(new SmallButton(Editor.copyAction));
cnt.add(new SmallButton(Editor.cutAction));
cnt.add(new SmallButton(Editor.pasteAction));
cnt.add(new SmallButton(Editor.deleteAction));
}
protected void buildIconList(){
if(standardIcons==null){
standardIcons=new ArrayList<ImageIcon>();
for(int i=0; i<4; i++){
//String s="ico0"+i+".gif";
String s="ico0"+i+".png";
ImageIcon ii=edu.xtec.util.ResourceManager.getImageIcon("icons/"+s);
if(ii!=null)
standardIcons.add(ii);
}
}
icons=new ArrayList<ImageIcon>(standardIcons);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btFindIcon;
private javax.swing.JButton btFindProject;
private javax.swing.JTextField captionText;
private javax.swing.JTextField descText;
private javax.swing.JComboBox iconCombo;
private javax.swing.JPanel mainPanel;
private javax.swing.JTextField projectText;
// End of variables declaration//GEN-END:variables
}