/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.wizards.panels;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.openide.WizardDescriptor;
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.UUID;
import de.cismet.cids.custom.switchon.utils.Taggroups;
import de.cismet.cids.custom.switchon.wizards.GenericAbstractWizardPanel;
import de.cismet.cids.custom.switchon.wizards.NameProvider;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.cids.dynamics.CidsBeanStore;
/**
* DOCUMENT ME!
*
* @author Gilles Baatz
* @version $Revision$, $Date$
*/
public abstract class AbstractBasicInformationPanel extends GenericAbstractWizardPanel<BasicInformationVisualPanel>
implements NameProvider,
PropertyChangeListener,
CidsBeanStore {
//~ Static fields/initializers ---------------------------------------------
private static final Logger LOG = Logger.getLogger(AbstractBasicInformationPanel.class);
//~ Constructors -----------------------------------------------------------
/**
* Creates a new BasicResourcePropertiesPanel object.
*/
public AbstractBasicInformationPanel() {
super(BasicInformationVisualPanel.class);
}
//~ Methods ----------------------------------------------------------------
@Override
protected Component createComponent() {
final BasicInformationVisualPanel panel = new BasicInformationVisualPanel(getTypeTaggroup());
panel.markMandatoryFieldsStrong();
return panel;
}
/**
* The used type taggroup when the BasicInformationVisualPanel is created.
*
* @return DOCUMENT ME!
*/
protected abstract Taggroups getTypeTaggroup();
@Override
protected void read(final WizardDescriptor wizard) {
final CidsBean cidsBean = getCidsBean();
getComponent().setCidsBean(cidsBean);
cidsBean.addPropertyChangeListener(this);
}
@Override
protected void store(final WizardDescriptor wizard) {
final CidsBean cidsBean = getCidsBean();
cidsBean.removePropertyChangeListener(this);
getComponent().dispose();
try {
final String uuid = (String)cidsBean.getProperty("uuid"); // NOI18N
if (StringUtils.isBlank(uuid)) {
cidsBean.setProperty("uuid", UUID.randomUUID().toString()); // NOI18N
}
} catch (Exception ex) {
LOG.error(ex, ex);
}
}
@Override
public boolean isValid() {
final CidsBean resource = getComponent().getCidsBean();
final String name = (String)resource.getProperty("name"); // NOI18N
final String desc = (String)resource.getProperty("description"); // NOI18N
final CidsBean type = (CidsBean)resource.getProperty("type"); // NOI18N
boolean valid = true;
if (StringUtils.isBlank(name) || StringUtils.isBlank(desc) || (type == null)) {
valid = false;
}
if (StringUtils.isBlank(name)) {
showWarning(org.openide.util.NbBundle.getMessage(
AbstractBasicInformationPanel.class,
"AbstractBasicInformationPanel.isValid().nameMissing")); // NOI18N
} else if (StringUtils.isBlank(desc)) {
showWarning(org.openide.util.NbBundle.getMessage(
AbstractBasicInformationPanel.class,
"AbstractBasicInformationPanel.isValid().descriptionMissing")); // NOI18N
} else if (type == null) {
showWarning(org.openide.util.NbBundle.getMessage(
AbstractBasicInformationPanel.class,
"AbstractBasicInformationPanel.isValid().typeMissing")); // NOI18N
} else {
showGeneralInformation();
}
return valid;
}
@Override
public void propertyChange(final PropertyChangeEvent evt) {
changeSupport.fireChange();
}
}