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