/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon.objecteditors; import Sirius.navigator.connection.SessionManager; import Sirius.navigator.ui.RequestsFullSizeComponent; import Sirius.server.middleware.types.MetaObject; import java.util.ArrayList; import java.util.Collection; import java.util.concurrent.ExecutionException; import javax.swing.DefaultListModel; import javax.swing.SwingWorker; import de.cismet.cids.client.tools.DevelopmentTools; import de.cismet.cids.custom.switchon.gui.utils.FastBindableReferenceComboFactory; import de.cismet.cids.custom.switchon.search.server.MetaObjectProvenanceRelationshipSearchStatement; import de.cismet.cids.custom.switchon.search.server.MetaObjectUsageRelationshipsSearchStatement; import de.cismet.cids.custom.switchon.utils.Taggroups; import de.cismet.cids.dynamics.CidsBean; import de.cismet.cids.editors.DefaultCustomObjectEditor; import de.cismet.cids.editors.EditorClosedEvent; import de.cismet.cids.editors.EditorSaveListener; import de.cismet.cids.editors.FastBindableReferenceCombo; import de.cismet.cids.tools.metaobjectrenderer.CidsBeanRenderer; import de.cismet.tools.gui.StaticSwingTools; /** * DOCUMENT ME! * * @author Gilles Baatz * @version $Revision$, $Date$ */ public class ResourceEditor extends javax.swing.JPanel implements CidsBeanRenderer, RequestsFullSizeComponent, EditorSaveListener { //~ Static fields/initializers --------------------------------------------- private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ResourceEditor.class); //~ Instance fields -------------------------------------------------------- private CidsBean cidsBean; private CidsBean provenanceRelationship = null; // Variables declaration - do not modify//GEN-BEGIN:variables private de.cismet.cids.custom.switchon.objecteditors.BasicPropertiesPanel basicPropertiesPanel; private javax.swing.JButton btnAddLocation; private javax.swing.JButton btnAddSrid; private javax.swing.JButton btnCreateRealtionship; private javax.swing.JButton btnEdit; private javax.swing.JButton btnEditProvenanceRelationship; private javax.swing.JButton btnEditRelationship; private javax.swing.JButton btnNewContact; private javax.swing.JComboBox cmbContact; private javax.swing.JComboBox cmbLocation; private javax.swing.JComboBox cmbSrid; private de.cismet.cids.custom.switchon.objecteditors.ContactEditor contactEditor; private de.cismet.cids.custom.switchon.gui.utils.CreateNewTagAction createNewLocation; private de.cismet.cids.custom.switchon.gui.utils.CreateNewTagAction createNewSrid; private javax.swing.Box.Filler filler1; private javax.swing.Box.Filler filler10; private javax.swing.Box.Filler filler2; private javax.swing.Box.Filler filler3; private javax.swing.Box.Filler filler4; private javax.swing.Box.Filler filler5; private javax.swing.Box.Filler filler7; private de.cismet.cids.custom.switchon.gui.GeometryChooserPanel geometryChooserPanel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel7; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTabbedPane jTabbedPane1; private de.cismet.cids.custom.switchon.objecteditors.LicenseInformationPanel licenseInformationPanel; private javax.swing.JList lstRelationships; private de.cismet.cids.custom.switchon.objecteditors.MetaDataPanel metaDataPanel; private javax.swing.JPanel pnlBasicProperties; private javax.swing.JPanel pnlContact; private javax.swing.JPanel pnlGeographicProperties; private javax.swing.JPanel pnlGeography; private javax.swing.JPanel pnlLicenseInformation; private javax.swing.JPanel pnlMetaData; private javax.swing.JPanel pnlOtherProperties; private javax.swing.JPanel pnlRelationships; private javax.swing.JPanel pnlRepresentations; private javax.swing.JPanel pnlTagsAndCategory; private javax.swing.JPanel pnlTemporalInformation; private de.cismet.cids.custom.switchon.objecteditors.RepresentationsPanel representationsPanel; private de.cismet.cids.custom.switchon.objecteditors.TemporalInformationPanel temporalInformationPanel; private de.cismet.cids.custom.switchon.objecteditors.TopicCollectionAdditionalTagsPanel topicCollectionAdditionalTagsPanel; private javax.swing.JTextField txtProvenanceRelationship; private org.jdesktop.beansbinding.BindingGroup bindingGroup; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form ResourceEditor. */ public ResourceEditor() { 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(); createNewSrid = new de.cismet.cids.custom.switchon.gui.utils.CreateNewTagAction(); createNewLocation = new de.cismet.cids.custom.switchon.gui.utils.CreateNewTagAction(); jTabbedPane1 = new javax.swing.JTabbedPane(); pnlBasicProperties = new javax.swing.JPanel(); basicPropertiesPanel = new BasicPropertiesPanel(Taggroups.RESOURCE_TYPE); filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); pnlTagsAndCategory = new javax.swing.JPanel(); topicCollectionAdditionalTagsPanel = new de.cismet.cids.custom.switchon.objecteditors.TopicCollectionAdditionalTagsPanel(); filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); pnlContact = new javax.swing.JPanel(); contactEditor = new de.cismet.cids.custom.switchon.objecteditors.ContactEditor(); filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); jPanel2 = new javax.swing.JPanel(); btnNewContact = new javax.swing.JButton(); cmbContact = new FastBindableReferenceCombo("%1$2s", new String[] { "organisation" }); btnEdit = new javax.swing.JButton(); pnlGeographicProperties = new javax.swing.JPanel(); pnlGeography = new javax.swing.JPanel(); geometryChooserPanel = new de.cismet.cids.custom.switchon.gui.GeometryChooserPanel(); pnlOtherProperties = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); cmbSrid = FastBindableReferenceComboFactory.createTagsFastBindableReferenceComboBox(Taggroups.SRID); btnAddSrid = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); cmbLocation = FastBindableReferenceComboFactory.createTagsFastBindableReferenceComboBox(Taggroups.LOCATION); btnAddLocation = new javax.swing.JButton(); pnlTemporalInformation = new javax.swing.JPanel(); temporalInformationPanel = new TemporalInformationPanel(true); ; filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); pnlLicenseInformation = new javax.swing.JPanel(); licenseInformationPanel = new LicenseInformationPanel(true); ; filler5 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); pnlMetaData = new javax.swing.JPanel(); metaDataPanel = new de.cismet.cids.custom.switchon.objecteditors.MetaDataPanel(); pnlRepresentations = new javax.swing.JPanel(); representationsPanel = new de.cismet.cids.custom.switchon.objecteditors.RepresentationsPanel(); pnlRelationships = new javax.swing.JPanel(); jPanel4 = new javax.swing.JPanel(); txtProvenanceRelationship = new javax.swing.JTextField(); btnEditProvenanceRelationship = new javax.swing.JButton(); jPanel7 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane(); lstRelationships = new javax.swing.JList(); btnEditRelationship = new javax.swing.JButton(); btnCreateRealtionship = new javax.swing.JButton(); filler10 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); filler7 = 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()); jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.RIGHT); pnlBasicProperties.setOpaque(false); pnlBasicProperties.setLayout(new java.awt.GridBagLayout()); basicPropertiesPanel.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); pnlBasicProperties.add(basicPropertiesPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; pnlBasicProperties.add(filler1, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlBasicProperties.TabConstraints.tabTitle"), pnlBasicProperties); // NOI18N pnlTagsAndCategory.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); pnlTagsAndCategory.add(topicCollectionAdditionalTagsPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 0.5; pnlTagsAndCategory.add(filler2, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlTagsAndCategory.TabConstraints.tabTitle"), pnlTagsAndCategory); // NOI18N pnlContact.setLayout(new java.awt.GridBagLayout()); contactEditor.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.contactEditor.border.title"))); // NOI18N org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.contact}"), contactEditor, org.jdesktop.beansbinding.BeanProperty.create("cidsBean")); bindingGroup.addBinding(binding); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 10); pnlContact.add(contactEditor, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; pnlContact.add(filler3, gridBagConstraints); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.jPanel2.border.title"))); // NOI18N jPanel2.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText( btnNewContact, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnNewContact.text")); // NOI18N btnNewContact.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnNewContactActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); jPanel2.add(btnNewContact, gridBagConstraints); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.contact}"), cmbContact, org.jdesktop.beansbinding.BeanProperty.create("selectedItem")); bindingGroup.addBinding(binding); cmbContact.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { cmbContactActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); jPanel2.add(cmbContact, gridBagConstraints); ((FastBindableReferenceCombo)cmbContact).setSorted(true); org.openide.awt.Mnemonics.setLocalizedText( btnEdit, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnEdit.text")); // NOI18N btnEdit.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnEditActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); jPanel2.add(btnEdit, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); pnlContact.add(jPanel2, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlContact.TabConstraints.tabTitle"), pnlContact); // NOI18N pnlGeographicProperties.setLayout(new java.awt.GridBagLayout()); pnlGeography.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlGeography.border.title"))); // NOI18N pnlGeography.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; 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(10, 10, 10, 10); pnlGeography.add(geometryChooserPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); pnlGeographicProperties.add(pnlGeography, gridBagConstraints); pnlOtherProperties.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlOtherProperties.border.title"))); // NOI18N pnlOtherProperties.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText( jLabel1, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.jLabel1.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); pnlOtherProperties.add(jLabel1, gridBagConstraints); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.srid}"), cmbSrid, org.jdesktop.beansbinding.BeanProperty.create("selectedItem")); bindingGroup.addBinding(binding); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 5); pnlOtherProperties.add(cmbSrid, gridBagConstraints); createNewSrid.setCombo((FastBindableReferenceCombo)cmbSrid); btnAddSrid.setAction(createNewSrid); org.openide.awt.Mnemonics.setLocalizedText( btnAddSrid, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnAddSrid.text")); // NOI18N btnAddSrid.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnAddSridActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(10, 5, 5, 10); pnlOtherProperties.add(btnAddSrid, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jLabel2, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.jLabel2.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(5, 10, 10, 5); pnlOtherProperties.add(jLabel2, gridBagConstraints); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${cidsBean.location}"), cmbLocation, org.jdesktop.beansbinding.BeanProperty.create("selectedItem")); 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.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 5); pnlOtherProperties.add(cmbLocation, gridBagConstraints); createNewLocation.setCombo((FastBindableReferenceCombo)cmbLocation); btnAddLocation.setAction(createNewLocation); org.openide.awt.Mnemonics.setLocalizedText( btnAddLocation, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnAddLocation.text")); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 10); pnlOtherProperties.add(btnAddLocation, gridBagConstraints); 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(10, 10, 10, 10); pnlGeographicProperties.add(pnlOtherProperties, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlGeographicProperties.TabConstraints.tabTitle"), pnlGeographicProperties); // NOI18N pnlTemporalInformation.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); pnlTemporalInformation.add(temporalInformationPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; pnlTemporalInformation.add(filler4, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlTemporalInformation.TabConstraints.tabTitle"), pnlTemporalInformation); // NOI18N pnlLicenseInformation.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; pnlLicenseInformation.add(licenseInformationPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; pnlLicenseInformation.add(filler5, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlLicenseInformation.TabConstraints.tabTitle_1"), pnlLicenseInformation); // NOI18N pnlMetaData.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); pnlMetaData.add(metaDataPanel, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlMetaData.TabConstraints.tabTitle_1"), pnlMetaData); // NOI18N pnlRepresentations.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; 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(10, 10, 10, 10); pnlRepresentations.add(representationsPanel, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlRepresentations.TabConstraints.tabTitle"), pnlRepresentations); // NOI18N pnlRelationships.setLayout(new java.awt.GridBagLayout()); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.jPanel4.border.title"))); // NOI18N jPanel4.setLayout(new java.awt.GridBagLayout()); txtProvenanceRelationship.setText(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.txtProvenanceRelationship.text")); // NOI18N txtProvenanceRelationship.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); jPanel4.add(txtProvenanceRelationship, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( btnEditProvenanceRelationship, org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.btnEditProvenanceRelationship.text")); // NOI18N btnEditProvenanceRelationship.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnEditProvenanceRelationshipActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 10); jPanel4.add(btnEditProvenanceRelationship, 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; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); pnlRelationships.add(jPanel4, gridBagConstraints); jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder( org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.jPanel7.border.title"))); // NOI18N jPanel7.setLayout(new java.awt.GridBagLayout()); lstRelationships.setModel(new DefaultListModel()); lstRelationships.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane3.setViewportView(lstRelationships); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); jPanel7.add(jScrollPane3, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( btnEditRelationship, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnEditRelationship.text")); // NOI18N btnEditRelationship.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnEditRelationshipActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 10); jPanel7.add(btnEditRelationship, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( btnCreateRealtionship, org.openide.util.NbBundle.getMessage(ResourceEditor.class, "ResourceEditor.btnCreateRealtionship.text")); // NOI18N btnCreateRealtionship.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { btnCreateRealtionshipActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); jPanel7.add(btnCreateRealtionship, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; jPanel7.add(filler10, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); pnlRelationships.add(jPanel7, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; pnlRelationships.add(filler7, gridBagConstraints); jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage( ResourceEditor.class, "ResourceEditor.pnlRelationships.TabConstraints.tabTitle_1"), pnlRelationships); // NOI18N gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(jTabbedPane1, gridBagConstraints); bindingGroup.bind(); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnEditProvenanceRelationshipActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnEditProvenanceRelationshipActionPerformed CidsBean relationship = provenanceRelationship; if (relationship == null) { try { relationship = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "relationship"); relationship.setProperty("toresource", cidsBean); } catch (Exception ex) { LOG.error("Could not create new Relationship-CidsBean.", ex); } } if (relationship != null) { final RelationshipEditor relationshipEditor = new RelationshipEditor(); relationshipEditor.setCidsBean(relationship); final NonModalShowEditorInDialog dialog = new NonModalShowEditorInDialog(StaticSwingTools.getParentFrame( this), relationshipEditor); dialog.addListener(new NonModalShowEditorInDialog.ChangesSavedListener() { @Override public void changesWereSaved() { new ProvenanceRelationshipFetcherWorker().execute(); } }); dialog.showDialog(); } } //GEN-LAST:event_btnEditProvenanceRelationshipActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnEditRelationshipActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnEditRelationshipActionPerformed final CidsBean selectedRelationship = (CidsBean)lstRelationships.getSelectedValue(); if (selectedRelationship != null) { final RelationshipEditor relationshipEditor = new RelationshipEditor(); relationshipEditor.setCidsBean(selectedRelationship); final NonModalShowEditorInDialog dialog = new NonModalShowEditorInDialog(StaticSwingTools.getParentFrame( this), relationshipEditor); dialog.addListener(new NonModalShowEditorInDialog.ChangesSavedListener() { @Override public void changesWereSaved() { new UsageRelationshipsFetcherWorker().execute(); } }); dialog.showDialog(); } } //GEN-LAST:event_btnEditRelationshipActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnCreateRealtionshipActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnCreateRealtionshipActionPerformed try { final CidsBean newCidsBean = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "relationship"); newCidsBean.getBeanCollectionProperty("fromresources").add(cidsBean); final RelationshipEditor relationshipEditor = new RelationshipEditor(); relationshipEditor.setCidsBean(newCidsBean); final NonModalShowEditorInDialog dialog = new NonModalShowEditorInDialog(StaticSwingTools.getParentFrame( this), relationshipEditor); dialog.addListener(new NonModalShowEditorInDialog.ChangesSavedListener() { @Override public void changesWereSaved() { new UsageRelationshipsFetcherWorker().execute(); } }); dialog.showDialog(); } catch (Exception ex) { LOG.error("new Relationship-CidsBean could not be created.", ex); } } //GEN-LAST:event_btnCreateRealtionshipActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnAddSridActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnAddSridActionPerformed } //GEN-LAST:event_btnAddSridActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnNewContactActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnNewContactActionPerformed final CidsBean contact; try { contact = CidsBean.createNewCidsBeanFromTableName("SWITCHON", "contact"); } catch (Exception ex) { LOG.error("Contact cidsBean could not be created.", ex); return; } final ContactEditor contactEditor = new ContactEditor(true); contactEditor.setCidsBean(contact); final ShowEditorInDialog dialog = new ShowEditorInDialog(StaticSwingTools.getParentFrame(this), contactEditor); dialog.setTitle(contactEditor.getTitle()); dialog.showDialog(); // contactEditor.getModifiedCidsBeans().size() should be 0 or 1 for (final CidsBean persistedContact : contactEditor.getModifiedCidsBeans()) { try { cidsBean.setProperty("contact", persistedContact); } catch (Exception ex) { LOG.error("Property contact can not be set.", ex); } } ((FastBindableReferenceCombo)cmbContact).refreshModel(); } //GEN-LAST:event_btnNewContactActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void btnEditActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnEditActionPerformed contactEditor.setEnabled(true); } //GEN-LAST:event_btnEditActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void cmbContactActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_cmbContactActionPerformed contactEditor.setEnabled(false); } //GEN-LAST:event_cmbContactActionPerformed @Override public CidsBean getCidsBean() { return cidsBean; } @Override public void setCidsBean(final CidsBean cidsBean) { bindingGroup.unbind(); if (cidsBean != null) { this.cidsBean = cidsBean; new ProvenanceRelationshipFetcherWorker().execute(); new UsageRelationshipsFetcherWorker().execute(); DefaultCustomObjectEditor.setMetaClassInformationToMetaClassStoreComponentsInBindingGroup( bindingGroup, this.cidsBean); basicPropertiesPanel.setCidsBean(cidsBean); topicCollectionAdditionalTagsPanel.setCidsBean(cidsBean); temporalInformationPanel.setCidsBean(cidsBean); licenseInformationPanel.setCidsBean(cidsBean); metaDataPanel.setCidsBean(cidsBean); geometryChooserPanel.setCidsBean(cidsBean); representationsPanel.setCidsBean(cidsBean); bindingGroup.bind(); } } @Override public void dispose() { bindingGroup.unbind(); topicCollectionAdditionalTagsPanel.dispose(); geometryChooserPanel.dispose(); temporalInformationPanel.dispose(); metaDataPanel.dispose(); basicPropertiesPanel.dispose(); } @Override public String getTitle() { if (cidsBean != null) { return cidsBean.toString(); } else { return "new Resource"; } } @Override public void setTitle(final String title) { } /** * 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", "resource", 1, 1280, 1024); } @Override public void editorClosed(final EditorClosedEvent event) { } @Override public boolean prepareForSave() { return true; } //~ Inner Classes ---------------------------------------------------------- /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class ProvenanceRelationshipFetcherWorker extends SwingWorker<CidsBean, Void> { //~ Methods ------------------------------------------------------------ @Override protected CidsBean doInBackground() throws Exception { final MetaObjectProvenanceRelationshipSearchStatement relationshipSearchStatement = new MetaObjectProvenanceRelationshipSearchStatement(SessionManager.getSession().getUser(), cidsBean.getPrimaryKeyValue()); final Collection searchResults = SessionManager.getConnection() .customServerSearch(SessionManager.getSession().getUser(), relationshipSearchStatement); if ((searchResults != null) && !searchResults.isEmpty()) { final Object firstRowObject = searchResults.toArray(new Object[1])[0]; if (firstRowObject instanceof MetaObject) { return ((MetaObject)firstRowObject).getBean(); } else if (firstRowObject instanceof ArrayList) { final ArrayList firstColumnObject = (ArrayList)searchResults.toArray(new Object[1])[0]; final Object firstRow = firstColumnObject.get(0); return ((MetaObject)firstRow).getBean(); } else { return null; } } return null; } @Override protected void done() { CidsBean provenanceRelationship = null; try { provenanceRelationship = get(); } catch (InterruptedException ex) { LOG.warn(ex, ex); } catch (ExecutionException ex) { LOG.warn(ex, ex); } ResourceEditor.this.provenanceRelationship = provenanceRelationship; if (provenanceRelationship != null) { txtProvenanceRelationship.setText(provenanceRelationship.toString()); } else { txtProvenanceRelationship.setText(""); } } } /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ class UsageRelationshipsFetcherWorker extends SwingWorker<Collection, Void> { //~ Methods ------------------------------------------------------------ @Override protected Collection doInBackground() throws Exception { final MetaObjectUsageRelationshipsSearchStatement relationshipSearchStatement = new MetaObjectUsageRelationshipsSearchStatement(SessionManager.getSession().getUser(), cidsBean.getPrimaryKeyValue()); final Collection searchResults = SessionManager.getConnection() .customServerSearch(SessionManager.getSession().getUser(), relationshipSearchStatement); return searchResults; } @Override protected void done() { Collection usageRelationships = null; try { usageRelationships = get(); } catch (InterruptedException ex) { LOG.warn(ex, ex); } catch (ExecutionException ex) { LOG.warn(ex, ex); } final DefaultListModel model = ((DefaultListModel)lstRelationships.getModel()); model.clear(); if (usageRelationships != null) { for (final Object mo : usageRelationships) { model.addElement(((MetaObject)mo).getBean()); } } } } }