/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.objecteditors;
import Sirius.server.middleware.types.MetaObject;
import org.apache.commons.lang.StringUtils;
import org.jfree.util.Log;
import java.awt.Component;
import java.util.HashSet;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import de.cismet.cids.client.tools.DevelopmentTools;
import de.cismet.cids.custom.switchon.gui.utils.QueryComboBox;
import de.cismet.cids.custom.switchon.gui.utils.QueryJList;
import de.cismet.cids.custom.switchon.gui.utils.TagsJList;
import de.cismet.cids.custom.switchon.utils.ActionTagUtils;
import de.cismet.cids.custom.switchon.utils.TaggroupUtils;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.cids.editors.EditorClosedEvent;
import de.cismet.cids.editors.EditorSaveListener;
import de.cismet.cids.tools.metaobjectrenderer.CidsBeanRenderer;
/**
* The TagAndTagGroupEditor is a unusual CidsBean-Editor as it allows to create and modify more than one CidsBean.
* Furthermore the CidsBeans can be of the type Tag or TagGroup. To achieve this the editor can not act as a usual
* editor and has to persist the changed CidsBeans himself.
*
* @author Gilles Baatz
* @version $Revision$, $Date$
*/
public class TagAndTagGroupEditor extends javax.swing.JPanel implements EditorSaveListener,
CidsBeanRenderer,
EditorShowableInDialog {
//~ Static fields/initializers ---------------------------------------------
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(TagAndTagGroupEditor.class);
private static final String ACTION_TAG = "custom.tag.admin@SWITCHON";
//~ Instance fields --------------------------------------------------------
/**
* The CidsBean which is set and get by NavigatorAttributeEditorGui, although it will be persist by this class and
* not by NavigatorAttributeEditorGui.
*/
private CidsBean dummyCidsBean;
private CidsBean selectedTagGroup;
private CidsBean selectedTag;
private final HashSet<CidsBean> modifiedBeans = new HashSet<CidsBean>();
private final HashSet<CidsBean> deletedBeans = new HashSet<CidsBean>();
private HashSet<CidsBean> newlyAddedTags = new HashSet<CidsBean>();
private HashSet<CidsBean> persistedCidsBeans = new HashSet<CidsBean>();
private boolean hasActionTag = false;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnGroupDelete;
private javax.swing.JButton btnGroupEdit;
private javax.swing.JButton btnGroupNew;
private javax.swing.JButton btnTagDelete;
private javax.swing.JButton btnTagEdit;
private javax.swing.JButton btnTagNew;
private javax.swing.JComboBox cmbTagGroups;
private javax.swing.Box.Filler filler1;
private javax.swing.Box.Filler filler2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JList lstTagGroups;
private javax.swing.JList lstTags;
private javax.swing.JPanel pnlTagGroups;
private javax.swing.JPanel pnlTags;
private javax.swing.JTextField txtGroupName;
private javax.swing.JTextField txtTagName;
private javax.swing.JTextArea txtaGroupDescrption;
private javax.swing.JTextArea txtaTagDescription;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form TagAndTagGroupEditor.
*/
public TagAndTagGroupEditor() {
try {
this.dummyCidsBean = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "tag");
} catch (Exception ex) {
LOG.error("Could not create new Tag-CidsBean.", ex);
}
try {
hasActionTag = ActionTagUtils.checkActionTag(ACTION_TAG);
} catch (Exception ex) {
LOG.error("The value of the action tag can not be checked.", ex);
}
initComponents();
if (cmbTagGroups.getModel().getSize() > 0) {
cmbTagGroups.setSelectedIndex(0);
}
btnGroupDelete.setEnabled(hasActionTag);
btnGroupEdit.setEnabled(hasActionTag);
btnGroupNew.setEnabled(hasActionTag);
}
//~ 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();
pnlTagGroups = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
lstTagGroups = new QueryJList("SELECT t.ID,"
+ " t.NAME"
+ " FROM taggroup t"
+ " ORDER BY t.name",
"Taggroup");
jPanel3 = new javax.swing.JPanel();
btnGroupNew = new javax.swing.JButton();
btnGroupEdit = new javax.swing.JButton();
btnGroupDelete = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
txtGroupName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
txtaGroupDescrption = new javax.swing.JTextArea();
pnlTags = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
txtTagName = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
txtaTagDescription = new javax.swing.JTextArea();
jScrollPane4 = new javax.swing.JScrollPane();
lstTags = new TagsJList();
;
jLabel5 = new javax.swing.JLabel();
cmbTagGroups = new QueryComboBox("SELECT t.ID," + " t.NAME" + " FROM taggroup t" + " ORDER BY t.name",
false,
"taggroup");
jPanel4 = new javax.swing.JPanel();
btnTagNew = new javax.swing.JButton();
btnTagEdit = new javax.swing.JButton();
btnTagDelete = new javax.swing.JButton();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 0),
new java.awt.Dimension(32767, 0));
filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 32767));
setOpaque(false);
setLayout(new java.awt.GridBagLayout());
pnlTagGroups.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
TagAndTagGroupEditor.class,
"TagAndTagGroupEditor.pnlTagGroups.border.title"))); // NOI18N
pnlTagGroups.setOpaque(false);
pnlTagGroups.setLayout(new java.awt.GridBagLayout());
lstTagGroups.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
lstTagGroups.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
@Override
public void valueChanged(final javax.swing.event.ListSelectionEvent evt) {
lstTagGroupsValueChanged(evt);
}
});
jScrollPane1.setViewportView(lstTagGroups);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(9, 11, 5, 5);
pnlTagGroups.add(jScrollPane1, gridBagConstraints);
jPanel3.setOpaque(false);
jPanel3.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(
btnGroupNew,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.btnGroupNew.text")); // NOI18N
btnGroupNew.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnGroupNewActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel3.add(btnGroupNew, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
btnGroupEdit,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.btnGroupEdit.text")); // NOI18N
btnGroupEdit.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnGroupEditActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel3.add(btnGroupEdit, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
btnGroupDelete,
org.openide.util.NbBundle.getMessage(
TagAndTagGroupEditor.class,
"TagAndTagGroupEditor.btnGroupDelete.text")); // NOI18N
btnGroupDelete.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnGroupDeleteActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel3.add(btnGroupDelete, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 7;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
pnlTagGroups.add(jPanel3, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel1,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.jLabel1.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(10, 5, 0, 10);
pnlTagGroups.add(jLabel1, gridBagConstraints);
txtGroupName.setEnabled(false);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${selectedTagGroup.name}"),
txtGroupName,
org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceNullValue("");
binding.setSourceUnreadableValue("");
bindingGroup.addBinding(binding);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
pnlTagGroups.add(txtGroupName, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel2,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.jLabel2.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 10);
pnlTagGroups.add(jLabel2, gridBagConstraints);
txtaGroupDescrption.setColumns(20);
txtaGroupDescrption.setLineWrap(true);
txtaGroupDescrption.setRows(5);
txtaGroupDescrption.setWrapStyleWord(true);
txtaGroupDescrption.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${selectedTagGroup.description}"),
txtaGroupDescrption,
org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceNullValue("");
binding.setSourceUnreadableValue("");
bindingGroup.addBinding(binding);
jScrollPane2.setViewportView(txtaGroupDescrption);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridheight = 5;
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);
pnlTagGroups.add(jScrollPane2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
add(pnlTagGroups, gridBagConstraints);
pnlTags.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
TagAndTagGroupEditor.class,
"TagAndTagGroupEditor.pnlTags.border.title"))); // NOI18N
pnlTags.setOpaque(false);
pnlTags.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(
jLabel3,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.jLabel3.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(10, 5, 0, 10);
pnlTags.add(jLabel3, gridBagConstraints);
txtTagName.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${selectedTag.name}"),
txtTagName,
org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceNullValue("");
binding.setSourceUnreadableValue("");
bindingGroup.addBinding(binding);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 10);
pnlTags.add(txtTagName, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel4,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.jLabel4.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 10);
pnlTags.add(jLabel4, gridBagConstraints);
txtaTagDescription.setColumns(20);
txtaTagDescription.setLineWrap(true);
txtaTagDescription.setRows(5);
txtaTagDescription.setWrapStyleWord(true);
txtaTagDescription.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create("${selectedTag.description}"),
txtaTagDescription,
org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceNullValue("");
binding.setSourceUnreadableValue("");
bindingGroup.addBinding(binding);
jScrollPane3.setViewportView(txtaTagDescription);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridheight = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 10);
pnlTags.add(jScrollPane3, gridBagConstraints);
lstTags.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
lstTags.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
@Override
public void valueChanged(final javax.swing.event.ListSelectionEvent evt) {
lstTagsValueChanged(evt);
}
});
jScrollPane4.setViewportView(lstTags);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 5);
pnlTags.add(jScrollPane4, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
jLabel5,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.jLabel5.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 5);
pnlTags.add(jLabel5, gridBagConstraints);
cmbTagGroups.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
cmbTagGroupsActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 5);
pnlTags.add(cmbTagGroups, gridBagConstraints);
jPanel4.setOpaque(false);
jPanel4.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(
btnTagNew,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.btnTagNew.text")); // NOI18N
btnTagNew.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnTagNewActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel4.add(btnTagNew, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
btnTagEdit,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.btnTagEdit.text")); // NOI18N
btnTagEdit.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnTagEditActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel4.add(btnTagEdit, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(
btnTagDelete,
org.openide.util.NbBundle.getMessage(TagAndTagGroupEditor.class, "TagAndTagGroupEditor.btnTagDelete.text")); // NOI18N
btnTagDelete.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnTagDeleteActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
jPanel4.add(btnTagDelete, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 5);
pnlTags.add(jPanel4, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
pnlTags.add(filler1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
add(pnlTags, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
add(filler2, gridBagConstraints);
bindingGroup.bind();
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void lstTagGroupsValueChanged(final javax.swing.event.ListSelectionEvent evt) { //GEN-FIRST:event_lstTagGroupsValueChanged
if (!evt.getValueIsAdjusting()) {
final MetaObject selectedMO = (MetaObject)lstTagGroups.getSelectedValue();
CidsBean selectedTagGroup = null;
if (selectedMO != null) {
selectedTagGroup = selectedMO.getBean();
}
bindingGroup.unbind();
this.selectedTagGroup = selectedTagGroup;
bindingGroup.bind();
txtGroupName.setEnabled(false);
txtaGroupDescrption.setEnabled(false);
}
} //GEN-LAST:event_lstTagGroupsValueChanged
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void lstTagsValueChanged(final javax.swing.event.ListSelectionEvent evt) { //GEN-FIRST:event_lstTagsValueChanged
if (!evt.getValueIsAdjusting()) {
final MetaObject selectedMO = (MetaObject)lstTags.getSelectedValue();
CidsBean selectedTag = null;
if (selectedMO != null) {
selectedTag = selectedMO.getBean();
}
bindingGroup.unbind();
this.selectedTag = selectedTag;
bindingGroup.bind();
txtTagName.setEnabled(false);
txtaTagDescription.setEnabled(false);
final boolean isNewlyAdded = newlyAddedTags.contains(selectedTag);
btnTagDelete.setEnabled(hasActionTag || isNewlyAdded);
btnTagEdit.setEnabled(hasActionTag || isNewlyAdded);
}
} //GEN-LAST:event_lstTagsValueChanged
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void cmbTagGroupsActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmbTagGroupsActionPerformed
final MetaObject selectedMO = ((MetaObject)cmbTagGroups.getSelectedItem());
if (selectedMO != null) {
((TagsJList)lstTags).changeModelToTaggroup(selectedMO.getID());
btnTagDelete.setEnabled(hasActionTag);
btnTagEdit.setEnabled(hasActionTag);
btnTagNew.setEnabled(hasActionTag || TaggroupUtils.isTaggroupOpen(selectedMO.getName()));
}
} //GEN-LAST:event_cmbTagGroupsActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnGroupEditActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnGroupEditActionPerformed
txtGroupName.setEnabled(true);
txtaGroupDescrption.setEnabled(true);
modifiedBeans.add(selectedTagGroup);
dummyCidsBean.setArtificialChangeFlag(true);
} //GEN-LAST:event_btnGroupEditActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnTagEditActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnTagEditActionPerformed
txtTagName.setEnabled(true);
txtaTagDescription.setEnabled(true);
modifiedBeans.add(selectedTag);
dummyCidsBean.setArtificialChangeFlag(true);
} //GEN-LAST:event_btnTagEditActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnGroupDeleteActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnGroupDeleteActionPerformed
if (selectedTagGroup != null) {
deletedBeans.add(selectedTagGroup);
modifiedBeans.remove(selectedTagGroup);
cmbTagGroups.removeItem(selectedTagGroup.getMetaObject());
((DefaultListModel)lstTagGroups.getModel()).removeElement(selectedTagGroup.getMetaObject());
lstTagGroups.getSelectionModel().clearSelection();
dummyCidsBean.setArtificialChangeFlag(true);
}
} //GEN-LAST:event_btnGroupDeleteActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnTagDeleteActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnTagDeleteActionPerformed
if (selectedTag != null) {
deletedBeans.add(selectedTag);
newlyAddedTags.remove(selectedTag);
modifiedBeans.remove(selectedTag);
((DefaultListModel)lstTags.getModel()).removeElement(selectedTag.getMetaObject());
lstTags.getSelectionModel().clearSelection();
dummyCidsBean.setArtificialChangeFlag(true);
}
} //GEN-LAST:event_btnTagDeleteActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnGroupNewActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnGroupNewActionPerformed
try {
final CidsBean newTaggroupBean = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "taggroup");
newTaggroupBean.setProperty("name", "New Taggroup");
newTaggroupBean.setProperty("description", "No description provided.");
modifiedBeans.add(newTaggroupBean);
final DefaultListModel model = ((DefaultListModel)lstTagGroups.getModel());
final MetaObject mo = newTaggroupBean.getMetaObject();
model.addElement(mo);
final int index = model.indexOf(mo);
lstTagGroups.setSelectedIndex(index);
lstTagGroups.ensureIndexIsVisible(index);
btnGroupEdit.doClick();
dummyCidsBean.setArtificialChangeFlag(true);
} catch (Exception ex) {
LOG.error("new Taggroup CidsBean could not be created.", ex);
}
} //GEN-LAST:event_btnGroupNewActionPerformed
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnTagNewActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnTagNewActionPerformed
try {
final CidsBean newTagBean = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "tag");
newTagBean.setProperty("name", "New Tag");
newTagBean.setProperty("description", "No description provided.");
newTagBean.setProperty("taggroup", ((MetaObject)cmbTagGroups.getSelectedItem()).getBean());
modifiedBeans.add(newTagBean);
newlyAddedTags.add(newTagBean);
final DefaultListModel model = ((DefaultListModel)lstTags.getModel());
final MetaObject mo = newTagBean.getMetaObject();
model.addElement(mo);
final int index = model.indexOf(mo);
lstTags.setSelectedIndex(index);
lstTags.ensureIndexIsVisible(index);
btnTagEdit.doClick();
dummyCidsBean.setArtificialChangeFlag(true);
} catch (Exception ex) {
LOG.error("new Tag CidsBean could not be created.", ex);
}
} //GEN-LAST:event_btnTagNewActionPerformed
/**
* DOCUMENT ME!
*
* @param args DOCUMENT ME!
*
* @throws Exception DOCUMENT ME!
*/
public static void main(final String[] args) throws Exception {
DevelopmentTools.createEditorInFrameFromRMIConnectionOnLocalhost(
"SWITCHON",
"Administratoren",
"admin",
"cismet",
"tag",
2,
1280,
1024);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public CidsBean getSelectedTagGroup() {
return selectedTagGroup;
}
/**
* DOCUMENT ME!
*
* @param selectedTagGroup DOCUMENT ME!
*/
public void setSelectedTagGroup(final CidsBean selectedTagGroup) {
this.selectedTagGroup = selectedTagGroup;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public CidsBean getSelectedTag() {
return selectedTag;
}
/**
* DOCUMENT ME!
*
* @param selectedTag DOCUMENT ME!
*/
public void setSelectedTag(final CidsBean selectedTag) {
this.selectedTag = selectedTag;
}
@Override
public void editorClosed(final EditorClosedEvent event) {
}
/**
* Saves the modified cidsBeans. The newly added cidsbeans will also be persisted and the persisted cidsbeans will
* be saved in an own set. After the persist that set will replace the <code>newlyAddedTags</code>-set.
*/
@Override
public void saveChanges() {
final HashSet<CidsBean> newlyAddedTagsAfterPersist = new HashSet<CidsBean>(newlyAddedTags.size());
for (final CidsBean modifiedBean : modifiedBeans) {
try {
final CidsBean persistedBean = modifiedBean.persist();
persistedCidsBeans.add(persistedBean);
if (newlyAddedTags.contains(modifiedBean)) {
newlyAddedTagsAfterPersist.add(persistedBean);
}
} catch (Exception ex) {
Log.error(ex.getMessage(), ex);
}
}
newlyAddedTags = newlyAddedTagsAfterPersist;
for (final CidsBean beanToDelete : deletedBeans) {
try {
beanToDelete.delete();
beanToDelete.persist();
} catch (Exception ex) {
Log.error(ex.getMessage(), ex);
}
}
JOptionPane.showMessageDialog(
this,
"The changed tags and taggroups were saved.",
"Changes saved",
JOptionPane.INFORMATION_MESSAGE);
}
@Override
public boolean prepareForSave() {
boolean save = true;
for (final CidsBean modifiedBean : modifiedBeans) {
if (StringUtils.isBlank(modifiedBean.toString())) {
JOptionPane.showMessageDialog(
this,
"Can not save. The name of one object is blank.",
"Blank name",
JOptionPane.WARNING_MESSAGE);
save = false;
break;
}
}
if (save) {
saveChanges();
}
return false;
}
@Override
public CidsBean getCidsBean() {
return dummyCidsBean;
}
@Override
public void setCidsBean(final CidsBean cidsBean) {
if (cidsBean != null) {
dummyCidsBean = cidsBean;
}
}
@Override
public void dispose() {
bindingGroup.unbind();
}
@Override
public String getTitle() {
return "Tag and Tag Group";
}
@Override
public void setTitle(final String title) {
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@Override
public HashSet<CidsBean> getNewlyAddedCidsBeans() {
return newlyAddedTags;
}
@Override
public HashSet<CidsBean> getModifiedCidsBeans() {
return persistedCidsBeans;
}
@Override
public Component getComponent() {
return this;
}
}