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