/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.wizards.panels;
import Sirius.server.middleware.types.MetaObject;
import java.awt.event.ItemEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import de.cismet.cids.custom.switchon.gui.InfoReceiver;
import de.cismet.cids.custom.switchon.gui.MarkMandtoryFieldsStrong;
import de.cismet.cids.custom.switchon.gui.utils.QueryComboBox;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.cids.dynamics.CidsBeanStore;
import de.cismet.cids.dynamics.Disposable;
/**
* DOCUMENT ME!
*
* @author Gilles Baatz
* @version $Revision$, $Date$
*/
public class ContactInformationVisualPanel extends javax.swing.JPanel implements CidsBeanStore,
Disposable,
PropertyChangeListener,
MarkMandtoryFieldsStrong,
InfoReceiver {
//~ Static fields/initializers ---------------------------------------------
private static final transient org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(
ContactInformationVisualPanel.class);
//~ Instance fields --------------------------------------------------------
private CidsBean resource;
private CidsBean newlyCreatedContact;
private PropertyChangeListener model;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnEdit;
private javax.swing.JButton btnNew;
private javax.swing.JComboBox cmbContacts;
private de.cismet.cids.custom.switchon.objecteditors.ContactEditor contactEditor;
protected de.cismet.cids.custom.switchon.wizards.WizardInfoBoxPanel infoBoxPanel;
private javax.swing.JPanel jPanel1;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form AdditonalMetaDataContactInformationVisualPanel.
*/
public ContactInformationVisualPanel() {
initComponents();
contactEditor.setInfoReceiver(infoBoxPanel);
}
//~ Methods ----------------------------------------------------------------
@Override
public CidsBean getCidsBean() {
return resource;
}
@Override
public void setCidsBean(final CidsBean cidsBean) {
resource = cidsBean;
CidsBean contact = (CidsBean)resource.getProperty("contact");
Object selectedObject = cmbContacts.getSelectedItem();
if (contact == null) {
if (selectedObject instanceof MetaObject) {
contact = ((MetaObject)selectedObject).getBean();
} else if (selectedObject instanceof CidsBean) {
contact = (CidsBean)selectedObject;
}
try {
resource.setProperty("contact", contact);
model.propertyChange(null);
} catch (Exception ex) {
LOG.error(ex, ex);
}
} else {
if (!((selectedObject instanceof MetaObject) && ((MetaObject)selectedObject).getBean().equals(contact))
&& !((selectedObject instanceof CidsBean) && selectedObject.equals(contact))) {
boolean found = false;
for (int i = 0; i < cmbContacts.getModel().getSize(); i++) {
selectedObject = cmbContacts.getModel().getElementAt(i);
if (((selectedObject instanceof MetaObject)
&& ((MetaObject)selectedObject).getBean().equals(contact))
|| ((selectedObject instanceof CidsBean) && selectedObject.equals(contact))) {
cmbContacts.setSelectedItem(selectedObject);
found = true;
break;
}
}
if (!found) {
if (LOG.isDebugEnabled()) {
LOG.debug("could not find contact '" + contact.getProperty("name")
+ "' in combo box [" + cmbContacts.getModel().getSize() + "]");
}
}
}
}
contactEditor.setCidsBean(contact);
}
/**
* 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() {
java.awt.GridBagConstraints gridBagConstraints;
infoBoxPanel = new de.cismet.cids.custom.switchon.wizards.WizardInfoBoxPanel();
jPanel1 = new javax.swing.JPanel();
btnEdit = new javax.swing.JButton();
cmbContacts = new QueryComboBox(
"select id, organisation as name from contact order by organisation",
false,
"contact");
;
btnNew = new javax.swing.JButton();
contactEditor = new de.cismet.cids.custom.switchon.objecteditors.ContactEditor();
addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
formFocusGained(evt);
}
});
setLayout(new java.awt.GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 5, 10);
add(infoBoxPanel, gridBagConstraints);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
jPanel1.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(
btnEdit,
org.openide.util.NbBundle.getMessage(
ContactInformationVisualPanel.class,
"ContactInformationVisualPanel.btnEdit.text")); // NOI18N
btnEdit.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnEditActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 20);
jPanel1.add(btnEdit, gridBagConstraints);
cmbContacts.addItemListener(new java.awt.event.ItemListener() {
@Override
public void itemStateChanged(final java.awt.event.ItemEvent evt) {
cmbContactsItemStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(10, 20, 0, 10);
jPanel1.add(cmbContacts, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
btnNew,
org.openide.util.NbBundle.getMessage(
ContactInformationVisualPanel.class,
"ContactInformationVisualPanel.btnNew.text")); // NOI18N
btnNew.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnNewActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 10);
jPanel1.add(btnNew, gridBagConstraints);
contactEditor.setEnabled(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.8;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
jPanel1.add(contactEditor, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.8;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(jPanel1, gridBagConstraints);
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void formFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_formFocusGained
} //GEN-LAST:event_formFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnNewActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnNewActionPerformed
if (newlyCreatedContact == null) {
try {
newlyCreatedContact = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "contact");
newlyCreatedContact.addPropertyChangeListener(this);
cmbContacts.addItem(newlyCreatedContact);
cmbContacts.setSelectedItem(newlyCreatedContact);
} catch (Exception ex) {
LOG.error(ex, ex);
}
}
} //GEN-LAST:event_btnNewActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cmbContactsItemStateChanged(final java.awt.event.ItemEvent evt) { //GEN-FIRST:event_cmbContactsItemStateChanged
if (evt.getStateChange() == ItemEvent.SELECTED) {
final Object selectedContact = cmbContacts.getSelectedItem();
CidsBean selectContactBean = null;
if (selectedContact instanceof MetaObject) {
selectContactBean = ((MetaObject)selectedContact).getBean();
} else if (selectedContact instanceof CidsBean) {
selectContactBean = (CidsBean)selectedContact;
}
try {
resource.setProperty("contact", selectContactBean);
model.propertyChange(null);
} catch (Exception ex) {
LOG.error(ex, ex);
}
contactEditor.setCidsBean(selectContactBean);
contactEditor.setEnabled((selectContactBean == newlyCreatedContact));
this.btnEdit.setEnabled((selectContactBean == newlyCreatedContact));
}
} //GEN-LAST:event_cmbContactsItemStateChanged
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnEditActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnEditActionPerformed
contactEditor.setEnabled(true);
} //GEN-LAST:event_btnEditActionPerformed
@Override
public void dispose() {
contactEditor.dispose();
if (newlyCreatedContact != null) {
newlyCreatedContact.removePropertyChangeListener(this);
}
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public PropertyChangeListener getModel() {
return model;
}
/**
* DOCUMENT ME!
*
* @param model DOCUMENT ME!
*/
public void setModel(final PropertyChangeListener model) {
this.model = model;
}
@Override
public void propertyChange(final PropertyChangeEvent evt) {
model.propertyChange(evt);
}
@Override
public void markMandatoryFieldsStrong() {
contactEditor.markMandatoryFieldsStrong();
}
@Override
public void setInformation(final String information) {
infoBoxPanel.setInformation(information);
}
@Override
public void setError(final String error) {
infoBoxPanel.setError(error);
}
/**
* DOCUMENT ME!
*
* @param readOnly DOCUMENT ME!
*/
public void setReadOnly(final boolean readOnly) {
this.btnEdit.setEnabled(!readOnly);
this.btnNew.setEnabled(!readOnly);
this.contactEditor.setEnabled(!readOnly);
}
}