/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon.objecteditors; import org.jdesktop.beansbinding.Binding; import org.openide.util.NbBundle; import java.util.UUID; import de.cismet.cids.custom.switchon.gui.InfoProviderJPanel; 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.TagUtils; import de.cismet.cids.custom.switchon.utils.Taggroups; import de.cismet.cids.dynamics.CidsBean; import de.cismet.cids.dynamics.CidsBeanStore; import de.cismet.cids.dynamics.Disposable; import de.cismet.cids.editors.DefaultCustomObjectEditor; import de.cismet.cids.editors.FastBindableReferenceCombo; /** * DOCUMENT ME! * * @author Gilles Baatz * @version $Revision$, $Date$ */ public class BasicPropertiesPanel extends InfoProviderJPanel implements CidsBeanStore, Disposable, MarkMandtoryFieldsStrong { //~ Static fields/initializers --------------------------------------------- private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BasicPropertiesPanel.class); //~ Instance fields -------------------------------------------------------- private CidsBean cidsBean; private final Taggroups typeTaggroup; private final String branding; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnGenerateUUID; private javax.swing.JComboBox cmbLanguage; private javax.swing.JComboBox cmbType; private javax.swing.JLabel jLabel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblDescription; private javax.swing.JLabel lblLanguage; private javax.swing.JLabel lblName; private javax.swing.JLabel lblType; private javax.swing.JTextField txtName; private javax.swing.JTextField txtUUID; private javax.swing.JTextArea txtaDescription; private org.jdesktop.beansbinding.BindingGroup bindingGroup; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form BasicPropertiesPanel. * * @deprecated Constructor for Netbeans */ public BasicPropertiesPanel() { this(Taggroups.META_DATA_TYPE); LOG.warn("Do not use this constructor, it is only there for the Netbeans GUI editor.", new Exception()); // NOI18N } /** * Creates a new BasicPropertiesPanel object. * * @param typeTaggroup DOCUMENT ME! */ public BasicPropertiesPanel(final Taggroups typeTaggroup) { this.typeTaggroup = typeTaggroup; branding = typeTaggroup.getValue().replaceAll("\\W", ""); initComponents(); } //~ Methods ---------------------------------------------------------------- /** * 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(); lblName = new javax.swing.JLabel(); lblDescription = new javax.swing.JLabel(); lblType = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); lblLanguage = new javax.swing.JLabel(); txtName = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); txtaDescription = new javax.swing.JTextArea(); cmbType = FastBindableReferenceComboFactory.createTagsFastBindableReferenceComboBox(typeTaggroup); txtUUID = new javax.swing.JTextField(); btnGenerateUUID = new javax.swing.JButton(); cmbLanguage = FastBindableReferenceComboFactory.createTagsFastBindableReferenceComboBox(Taggroups.LANGUAGE); setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(BasicPropertiesPanel.class, "BasicPropertiesPanel.border.title"))); // NOI18N setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText( lblName, org.openide.util.NbBundle.getMessage(BasicPropertiesPanel.class, "BasicPropertiesPanel.lblName.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 5, 5); add(lblName, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( lblDescription, org.openide.util.NbBundle.getMessage( BasicPropertiesPanel.class, "BasicPropertiesPanel.lblDescription.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, 5); add(lblDescription, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( lblType, org.openide.util.NbBundle.getMessage(BasicPropertiesPanel.class, "BasicPropertiesPanel.lblType.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, 5); add(lblType, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jLabel4, org.openide.util.NbBundle.getMessage(BasicPropertiesPanel.class, "BasicPropertiesPanel.jLabel4.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, 5); add(jLabel4, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( lblLanguage, org.openide.util.NbBundle.getMessage(BasicPropertiesPanel.class, "BasicPropertiesPanel.lblLanguage.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, 10, 5); add(lblLanguage, gridBagConstraints); txtName.setPreferredSize(new java.awt.Dimension(32, 24)); org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.name}"), txtName, org.jdesktop.beansbinding.BeanProperty.create("text")); bindingGroup.addBinding(binding); txtName.addFocusListener(new java.awt.event.FocusAdapter() { @Override public void focusGained(final java.awt.event.FocusEvent evt) { txtNameFocusGained(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 10); add(txtName, gridBagConstraints); txtaDescription.setColumns(20); txtaDescription.setLineWrap(true); txtaDescription.setRows(10); txtaDescription.setWrapStyleWord(true); 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.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; 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.type}"), cmbType, org.jdesktop.beansbinding.BeanProperty.create("selectedItem")); bindingGroup.addBinding(binding); cmbType.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmbTypeActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10); add(cmbType, gridBagConstraints); ((FastBindableReferenceCombo)cmbType).setNullable(false); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.uuid}"), txtUUID, org.jdesktop.beansbinding.BeanProperty.create("text")); bindingGroup.addBinding(binding); txtUUID.addFocusListener(new java.awt.event.FocusAdapter() { @Override public void focusGained(final java.awt.event.FocusEvent evt) { txtUUIDFocusGained(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10); add(txtUUID, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( btnGenerateUUID, org.openide.util.NbBundle.getMessage( BasicPropertiesPanel.class, "BasicPropertiesPanel.btnGenerateUUID.text")); // NOI18N btnGenerateUUID.setEnabled(false); btnGenerateUUID.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnGenerateUUIDActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 10); add(btnGenerateUUID, gridBagConstraints); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.language}"), cmbLanguage, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"), "bindingLanguage"); bindingGroup.addBinding(binding); cmbLanguage.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmbLanguageActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 10); add(cmbLanguage, gridBagConstraints); ((FastBindableReferenceCombo)cmbLanguage).setNullable(false); bindingGroup.bind(); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnGenerateUUIDActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnGenerateUUIDActionPerformed final UUID uuid = UUID.randomUUID(); txtUUID.setText(uuid.toString()); } //GEN-LAST:event_btnGenerateUUIDActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void txtNameFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtNameFocusGained NbBundle.setBranding(branding); provideInformation(org.openide.util.NbBundle.getMessage( BasicPropertiesPanel.class, "BasicPropertiesPanel.txtNameFocusGained().info")); NbBundle.setBranding(null); } //GEN-LAST:event_txtNameFocusGained /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void txtaDescriptionFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtaDescriptionFocusGained NbBundle.setBranding(branding); provideInformation(org.openide.util.NbBundle.getMessage( BasicPropertiesPanel.class, "BasicPropertiesPanel.txtaDescriptionFocusGained().info")); NbBundle.setBranding(null); } //GEN-LAST:event_txtaDescriptionFocusGained /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmbTypeActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmbTypeActionPerformed final String desc = TagUtils.getDescriptionOfTag(cmbType.getSelectedItem()); provideInformation(desc); } //GEN-LAST:event_cmbTypeActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void txtUUIDFocusGained(final java.awt.event.FocusEvent evt) { //GEN-FIRST:event_txtUUIDFocusGained NbBundle.setBranding(branding); provideInformation( org.openide.util.NbBundle.getMessage( BasicPropertiesPanel.class, "BasicPropertiesPanel.txtUUIDFocusGained().info")); NbBundle.setBranding(null); } //GEN-LAST:event_txtUUIDFocusGained /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmbLanguageActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmbLanguageActionPerformed final String desc = TagUtils.getDescriptionOfTag(cmbLanguage.getSelectedItem()); provideInformation(desc); } //GEN-LAST:event_cmbLanguageActionPerformed @Override public CidsBean getCidsBean() { return cidsBean; } @Override public void setCidsBean(final CidsBean cidsBean) { bindingGroup.unbind(); if (cidsBean != null) { this.cidsBean = cidsBean; hideLanguageControlsIfNotAvailable(); DefaultCustomObjectEditor.setMetaClassInformationToMetaClassStoreComponentsInBindingGroup( bindingGroup, this.cidsBean); bindingGroup.bind(); } } /** * Hides the controls for the language, if the cidsBean has no such property. */ private void hideLanguageControlsIfNotAvailable() { boolean hasPropertyLanguage = false; for (final String property : cidsBean.getPropertyNames()) { if (property.equals("language")) { // NOI18N hasPropertyLanguage = true; break; } } lblLanguage.setVisible(hasPropertyLanguage); cmbLanguage.setVisible(hasPropertyLanguage); // remove the binding to the language // it must be checked if the binding has already been removed final Binding bindingLanguage = bindingGroup.getBinding("bindingLanguage"); if (!hasPropertyLanguage && (bindingLanguage != null)) { bindingGroup.removeBinding(bindingLanguage); } } /** * DOCUMENT ME! * * @param visible DOCUMENT ME! */ public void setVisibleGenerateUUID(final boolean visible) { btnGenerateUUID.setVisible(visible); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isVisibleGenerateUUID() { return btnGenerateUUID.isVisible(); } @Override public void dispose() { bindingGroup.unbind(); } @Override public void markMandatoryFieldsStrong() { MarkMandtoryFieldsStrongUtils.markJLabelsStrong(lblName, lblDescription, lblType); } /** * DOCUMENT ME! */ public void makeNonEditable() { RendererTools.makeReadOnly(btnGenerateUUID); RendererTools.makeReadOnly(cmbLanguage); RendererTools.makeReadOnly(cmbType); RendererTools.makeReadOnly(txtName); RendererTools.makeReadOnly(txtUUID); RendererTools.makeReadOnly(txtaDescription); } }