/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon.objecteditors;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.JTable;
import de.cismet.cids.custom.switchon.gui.InfoProviderJPanel;
import de.cismet.cids.custom.switchon.gui.utils.RendererTools;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.cids.dynamics.CidsBeanStore;
import de.cismet.cids.dynamics.Disposable;
import de.cismet.cids.navigator.utils.CidsBeanDropListener;
import de.cismet.cids.navigator.utils.CidsBeanDropTarget;
/**
* DOCUMENT ME!
*
* @author Gilles Baatz
* @version $Revision$, $Date$
*/
public class TargetResourceRelationshipPanel extends InfoProviderJPanel implements CidsBeanStore, Disposable {
//~ Static fields/initializers ---------------------------------------------
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(
TargetResourceRelationshipPanel.class);
//~ Instance fields --------------------------------------------------------
/** The single resource 'toResource' has to be put in a list, such that the binding to the table works. */
List<CidsBean> toResourceList;
private CidsBean cidsBean;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.Box.Filler filler1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblTargetResourceDragIcon;
private javax.swing.JTable tblToResource;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form TargetResourceRelationshipPanel.
*/
public TargetResourceRelationshipPanel() {
initComponents();
try {
new CidsBeanDropTarget(tblToResource);
new CidsBeanDropTarget(lblTargetResourceDragIcon);
} catch (Exception ex) {
LOG.fatal(ex);
}
}
//~ 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();
lblTargetResourceDragIcon = new ToResourceDropListenerLabel();
jScrollPane2 = new javax.swing.JScrollPane();
tblToResource = new ToResourceDropListenerTable();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 32767));
setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.border.title"))); // NOI18N
setLayout(new java.awt.GridBagLayout());
lblTargetResourceDragIcon.setIcon(new javax.swing.ImageIcon(
getClass().getResource("/de/cismet/cids/custom/switchon/document_import.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(
lblTargetResourceDragIcon,
org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.lblTargetResourceDragIcon.text")); // NOI18N
lblTargetResourceDragIcon.setToolTipText(org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.lblTargetResourceDragIcon.toolTipText")); // NOI18N
lblTargetResourceDragIcon.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 10);
add(lblTargetResourceDragIcon, gridBagConstraints);
jScrollPane2.setMinimumSize(new java.awt.Dimension(22, 38));
jScrollPane2.setPreferredSize(new java.awt.Dimension(22, 38));
tblToResource.setAutoCreateRowSorter(true);
tblToResource.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
final org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create(
"${toResource}");
final org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings
.createJTableBinding(
org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
eLProperty,
tblToResource);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(
org.jdesktop.beansbinding.ELProperty.create("${name}"));
columnBinding.setColumnName("Name");
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${type.name}"));
columnBinding.setColumnName("Type.name");
columnBinding.setEditable(false);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
tblToResource.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(final java.awt.event.MouseEvent evt) {
tblToResourceMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tblToResource);
if (tblToResource.getColumnModel().getColumnCount() > 0) {
tblToResource.getColumnModel()
.getColumn(0)
.setHeaderValue(org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.tblToResource.columnModel.title0_1")); // NOI18N
tblToResource.getColumnModel()
.getColumn(1)
.setHeaderValue(org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.tblToResource.columnModel.title1_1")); // NOI18N
}
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(jScrollPane2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
add(filler1, gridBagConstraints);
bindingGroup.bind();
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void tblToResourceMouseClicked(final java.awt.event.MouseEvent evt) { //GEN-FIRST:event_tblToResourceMouseClicked
if (tblToResource.isEnabled()) {
provideInformation(org.openide.util.NbBundle.getMessage(
TargetResourceRelationshipPanel.class,
"TargetResourceRelationshipPanel.tblToResource.info"));
}
} //GEN-LAST:event_tblToResourceMouseClicked
/**
* DOCUMENT ME!
*
* @param beans DOCUMENT ME!
*/
private void addBeansToToResource(final ArrayList<CidsBean> beans) {
if (beans != null) {
for (final CidsBean bean : beans) {
// use the first match
if (bean.getClass().getSimpleName().equalsIgnoreCase("resource")) { // NOI18N
try {
cidsBean.setProperty("toresource", bean); // NOI18N
toResourceList.clear();
toResourceList.add(bean);
tblToResource.selectAll();
break;
} catch (Exception ex) {
LOG.error("Could not set toresource of cidsBean", ex); // NOI18N
}
}
}
}
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public List<CidsBean> getToResource() {
return toResourceList;
}
/**
* DOCUMENT ME!
*
* @param toResource DOCUMENT ME!
*/
public void setToResource(final List<CidsBean> toResource) {
this.toResourceList = toResource;
}
@Override
public CidsBean getCidsBean() {
return cidsBean;
}
@Override
public void setCidsBean(final CidsBean cidsBean) {
bindingGroup.unbind();
if (cidsBean != null) {
this.cidsBean = cidsBean;
toResourceList = new ArrayList<CidsBean>(1);
toResourceList.add((CidsBean)cidsBean.getProperty("toresource")); // NOI18N
bindingGroup.bind();
if (tblToResource.getColumnModel().getColumnCount() > 0) {
tblToResource.getColumnModel()
.getColumn(0)
.setHeaderValue(org.openide.util.NbBundle.getMessage(
RelationshipEditor.class,
"TargetResourceRelationshipPanel.tblToResource.columnModel.title0_1")); // NOI18N
tblToResource.getColumnModel()
.getColumn(1)
.setHeaderValue(org.openide.util.NbBundle.getMessage(
RelationshipEditor.class,
"TargetResourceRelationshipPanel.tblToResource.columnModel.title1_1")); // NOI18N
}
}
}
@Override
public void dispose() {
bindingGroup.unbind();
}
@Override
public void setEnabled(final boolean enabled) {
super.setEnabled(enabled);
tblToResource.setEnabled(enabled);
lblTargetResourceDragIcon.setEnabled(enabled);
}
/**
* DOCUMENT ME!
*/
public void makeNonEditable() {
RendererTools.makeReadOnly(tblToResource);
lblTargetResourceDragIcon.setVisible(false);
}
//~ Inner Classes ----------------------------------------------------------
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
private class ToResourceDropListenerTable extends JTable implements CidsBeanDropListener {
//~ Methods ------------------------------------------------------------
@Override
public void beansDropped(final ArrayList<CidsBean> beans) {
addBeansToToResource(beans);
}
}
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
private class ToResourceDropListenerLabel extends JLabel implements CidsBeanDropListener {
//~ Methods ------------------------------------------------------------
@Override
public void beansDropped(final ArrayList<CidsBean> beans) {
addBeansToToResource(beans);
}
}
}