/*************************************************** * * 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); } }