/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ArrayTitleAndControls.java
*
* Created on 25.02.2009, 12:19:03
*/
package de.cismet.cids.editors;
import Sirius.server.middleware.types.MetaClass;
import org.jdesktop.observablecollections.ObservableList;
import java.util.List;
import javax.swing.JList;
import de.cismet.cids.dynamics.CidsBean;
/**
* DOCUMENT ME!
*
* @author thorsten
* @version $Revision$, $Date$
*/
public class ArrayTitleAndControls extends javax.swing.JPanel {
//~ Instance fields --------------------------------------------------------
private MetaClass detailClass;
private CidsBean cidsBean;
private String arrayProperty;
private JList jList;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cmdAdd;
private javax.swing.JButton cmdRemove;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JLabel lblTitle;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates a new ArrayTitleAndControls object.
*
* @param title DOCUMENT ME!
* @param detailClass DOCUMENT ME!
* @param arrayProperty DOCUMENT ME!
* @param jList DOCUMENT ME!
*/
public ArrayTitleAndControls(final String title,
final MetaClass detailClass,
final String arrayProperty,
final JList jList) {
super();
this.jList = jList;
initComponents();
this.detailClass = detailClass;
this.arrayProperty = arrayProperty;
lblTitle.setText(title);
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public MetaClass getDetailClass() {
return detailClass;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public JList getJList() {
return jList;
}
/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
cmdAdd = new javax.swing.JButton();
cmdRemove = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
lblTitle = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
setOpaque(false);
setLayout(new java.awt.BorderLayout());
jPanel2.setOpaque(false);
jPanel2.setLayout(new java.awt.BorderLayout());
jPanel1.setOpaque(false);
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 2, 2));
cmdAdd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/cismet/cids/editors/edit_add_mini.png"))); // NOI18N
cmdAdd.setBorderPainted(false);
cmdAdd.setMinimumSize(new java.awt.Dimension(16, 16));
cmdAdd.setPreferredSize(new java.awt.Dimension(16, 16));
cmdAdd.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
cmdAddActionPerformed(evt);
}
});
jPanel1.add(cmdAdd);
cmdRemove.setIcon(new javax.swing.ImageIcon(
getClass().getResource("/de/cismet/cids/editors/edit_remove_mini.png"))); // NOI18N
cmdRemove.setBorderPainted(false);
cmdRemove.setMinimumSize(new java.awt.Dimension(16, 16));
cmdRemove.setPreferredSize(new java.awt.Dimension(16, 16));
cmdRemove.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
cmdRemoveActionPerformed(evt);
}
});
jPanel1.add(cmdRemove);
jPanel2.add(jPanel1, java.awt.BorderLayout.WEST);
jPanel3.setOpaque(false);
jPanel3.setLayout(new java.awt.BorderLayout());
lblTitle.setText(org.openide.util.NbBundle.getMessage(
ArrayTitleAndControls.class,
"ArrayTitleAndControls.lblTitle.text")); // NOI18N
jPanel3.add(lblTitle, java.awt.BorderLayout.EAST);
jLabel1.setText(" ");
jPanel3.add(jLabel1, java.awt.BorderLayout.CENTER);
jPanel2.add(jPanel3, java.awt.BorderLayout.CENTER);
add(jPanel2, java.awt.BorderLayout.PAGE_START);
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cmdRemoveActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdRemoveActionPerformed
final Object o = jList.getSelectedValue();
if ((o instanceof CidsBean) && (o != null)) {
try {
final int index = jList.getSelectedIndex();
((CidsBean)o).delete();
if (jList.getModel().getSize() == 0) {
jList.setSelectedValue(null, false);
} else if (index <= (jList.getModel().getSize() - 1)) {
jList.setSelectedIndex(index);
} else {
jList.setSelectedIndex(jList.getModel().getSize() - 1);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} //GEN-LAST:event_cmdRemoveActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cmdAddActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmdAddActionPerformed
try {
final CidsBean newOne = detailClass.getEmptyInstance().getBean();
final CidsBean sourcebean = (CidsBean)jList.getClientProperty(CidsObjectEditorFactory.CIDS_BEAN);
final JList sourcelist = (JList)jList.getClientProperty(CidsObjectEditorFactory.SOURCE_LIST);
if (sourcebean != null) {
((List)(sourcebean.getProperty(arrayProperty))).add(newOne);
} else if ((sourcelist != null) && (sourcelist.getSelectedValue() != null)) {
final CidsBean localSourceBean = (CidsBean)sourcelist.getSelectedValue();
// Entferne den String bis zum ersten []
final String subElement = arrayProperty.substring(arrayProperty.lastIndexOf("[]") + 2); // NOI18N
((List)(localSourceBean.getProperty(arrayProperty))).add(newOne);
}
jList.setSelectedValue(newOne, true);
} catch (Exception ex) {
ex.printStackTrace();
}
} //GEN-LAST:event_cmdAddActionPerformed
}