/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.objecteditors;
import org.apache.commons.lang.StringUtils;
import java.awt.Desktop;
import java.net.URI;
import de.cismet.cids.client.tools.DevelopmentTools;
import de.cismet.cids.custom.switchon.gui.MarkMandtoryFieldsStrong;
import de.cismet.cids.custom.switchon.gui.MarkMandtoryFieldsStrongUtils;
import de.cismet.cids.custom.switchon.gui.utils.FastBindableReferenceComboFactory;
import de.cismet.cids.custom.switchon.gui.utils.RendererTools;
import de.cismet.cids.custom.switchon.utils.Taggroups;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.cids.editors.DefaultCustomObjectEditor;
import de.cismet.cids.editors.FastBindableReferenceCombo;
import de.cismet.tools.EMailComposer;
/**
* DOCUMENT ME!
*
* @author Gilles Baatz
* @version $Revision$, $Date$
*/
public class ContactEditor extends AbstractEditorShowableInDialog implements MarkMandtoryFieldsStrong {
//~ Static fields/initializers ---------------------------------------------
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ContactEditor.class);
//~ Instance fields --------------------------------------------------------
private boolean editor;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cmbRole;
private javax.swing.Box.Filler filler1;
private org.jdesktop.swingx.JXHyperlink hypMail;
private org.jdesktop.swingx.JXHyperlink hypWebsite;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblOrganisation;
private javax.swing.JLabel lblRole;
private javax.swing.JTextField txtContactPerson;
private javax.swing.JTextField txtEMail;
private javax.swing.JTextField txtOrganisation;
private javax.swing.JTextField txtWebsite;
private javax.swing.JTextArea txtaDescription;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form ContactEditor.
*/
public ContactEditor() {
this(true);
}
/**
* Creates a new ContactEditor object.
*
* @param editor DOCUMENT ME!
*/
public ContactEditor(final boolean editor) {
this.editor = editor;
initComponents();
makeEditable();
}
//~ Methods ----------------------------------------------------------------
@Override
public void setEnabled(final boolean enabled) {
super.setEnabled(enabled);
editor = enabled;
makeEditable();
}
/**
* DOCUMENT ME!
*/
private void makeEditable() {
txtWebsite.setVisible(editor);
txtEMail.setVisible(editor);
hypWebsite.setVisible(!editor);
hypWebsite.setVisible(!editor);
if (!editor) {
RendererTools.makeReadOnly(txtContactPerson);
RendererTools.makeReadOnly(txtOrganisation);
RendererTools.makeReadOnly(txtaDescription);
RendererTools.makeReadOnly(cmbRole);
} else {
RendererTools.resetComponent(txtContactPerson);
RendererTools.resetComponent(txtOrganisation);
RendererTools.resetComponent(txtaDescription);
RendererTools.resetComponent(cmbRole);
}
}
/**
* DOCUMENT ME!
*/
protected void hideRoleComponents() {
cmbRole.setVisible(false);
lblRole.setVisible(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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
lblOrganisation = new javax.swing.JLabel();
txtOrganisation = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
lblRole = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
txtaDescription = new javax.swing.JTextArea();
txtWebsite = new javax.swing.JTextField();
txtContactPerson = new javax.swing.JTextField();
txtEMail = new javax.swing.JTextField();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 32767));
cmbRole = FastBindableReferenceComboFactory.createTagsFastBindableReferenceComboBox(Taggroups.ROLE);
hypWebsite = new org.jdesktop.swingx.JXHyperlink();
hypMail = new org.jdesktop.swingx.JXHyperlink();
setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(
lblOrganisation,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.lblOrganisation.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 5, 10);
add(lblOrganisation, gridBagConstraints);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.organisation}"),
txtOrganisation,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
txtOrganisation.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
txtOrganisationFocusGained(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 10);
add(txtOrganisation, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel2,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.jLabel2.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
add(jLabel2, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel3,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.jLabel3.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
add(jLabel3, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel4,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.jLabel4.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
add(jLabel4, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
lblRole,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.lblRole.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10);
add(lblRole, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel6,
org.openide.util.NbBundle.getMessage(ContactEditor.class, "ContactEditor.jLabel6.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
add(jLabel6, gridBagConstraints);
jScrollPane1.setMinimumSize(new java.awt.Dimension(223, 78));
txtaDescription.setColumns(20);
txtaDescription.setRows(5);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.description}"),
txtaDescription,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
txtaDescription.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
txtaDescriptionFocusGained(evt);
}
});
jScrollPane1.setViewportView(txtaDescription);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.4;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(jScrollPane1, gridBagConstraints);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.url}"),
txtWebsite,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
txtWebsite.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
txtWebsiteFocusGained(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(txtWebsite, gridBagConstraints);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.name}"),
txtContactPerson,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
txtContactPerson.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
txtContactPersonFocusGained(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(txtContactPerson, gridBagConstraints);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.email}"),
txtEMail,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
txtEMail.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
txtEMailFocusGained(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(txtEMail, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 0.6;
add(filler1, gridBagConstraints);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.role}"),
cmbRole,
org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
bindingGroup.addBinding(binding);
cmbRole.addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(final java.awt.event.FocusEvent evt) {
cmbRoleFocusGained(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 10);
add(cmbRole, gridBagConstraints);
((FastBindableReferenceCombo)cmbRole).setNullable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${cidsBean.url}"),
hypWebsite,
org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
hypWebsite.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
hypWebsiteActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(hypWebsite, gridBagConstraints);
hypMail.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
hypMailActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
add(hypMail, gridBagConstraints);
bindingGroup.bind();
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void hypWebsiteActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_hypWebsiteActionPerformed
final Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if ((desktop != null) && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
final URI uri = new URI(hypWebsite.getText());
desktop.browse(uri);
} catch (Exception e) {
LOG.error("Could not open URI: " + hypWebsite.getText(), e); // NOI18N
}
} else {
LOG.info("Opening a website is not supported."); // NOI18N
}
} //GEN-LAST:event_hypWebsiteActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void hypMailActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_hypMailActionPerformed
final EMailComposer mail = new EMailComposer();
mail.addTo(((String)cidsBean.getProperty("email")).split(" ")); // NOI18N
mail.compose();
} //GEN-LAST:event_hypMailActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtOrganisationFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtOrganisationFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.txtOrganisationFocusGained.info"));
} //GEN-LAST:event_txtOrganisationFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtaDescriptionFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtaDescriptionFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.txtaDescriptionFocusGained().info"));
} //GEN-LAST:event_txtaDescriptionFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtWebsiteFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtWebsiteFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.txtWebsiteFocusGained().info"));
} //GEN-LAST:event_txtWebsiteFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtContactPersonFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtContactPersonFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.txtContactPersonFocusGained().info"));
} //GEN-LAST:event_txtContactPersonFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void txtEMailFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtEMailFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.txtEMailFocusGained().info"));
} //GEN-LAST:event_txtEMailFocusGained
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cmbRoleFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_cmbRoleFocusGained
provideInformation(java.util.ResourceBundle.getBundle("de/cismet/cids/custom/switchon/objecteditors/Bundle")
.getString("ContactEditor.cmbRoleFocusGained().info"));
} //GEN-LAST:event_cmbRoleFocusGained
@Override
public void setCidsBean(final CidsBean cidsBean) {
bindingGroup.unbind();
if (cidsBean != null) {
this.cidsBean = cidsBean;
DefaultCustomObjectEditor.setMetaClassInformationToMetaClassStoreComponentsInBindingGroup(
bindingGroup,
this.cidsBean);
bindingGroup.bind();
String emails = (String)cidsBean.getProperty("email"); // NOI18N
if (StringUtils.isNotBlank(emails)) {
emails = emails.replaceAll(" +", ", "); // NOI18N
hypMail.setText(emails);
} else {
hypMail.setText(""); // NOI18N
}
}
}
@Override
public void dispose() {
bindingGroup.unbind();
}
/**
* DOCUMENT ME!
*
* @param args DOCUMENT ME!
*
* @throws Exception DOCUMENT ME!
*/
public static void main(final String[] args) throws Exception {
DevelopmentTools.createEditorInFrameFromRMIConnectionOnLocalhost(
"SWITCHON", // NOI18N
"Administratoren", // NOI18N
"admin", // NOI18N
"cismet", // NOI18N
"contact", // NOI18N
11,
1280,
1024);
}
@Override
public void markMandatoryFieldsStrong() {
MarkMandtoryFieldsStrongUtils.markJLabelString(lblOrganisation);
}
}