/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon.objectrenderer; import Sirius.navigator.connection.SessionManager; import Sirius.server.middleware.types.MetaObject; import java.awt.CardLayout; import java.util.Collection; import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; import de.cismet.cids.custom.switchon.search.server.MetaObjectProvenanceRelationshipSearchStatement; import de.cismet.cids.dynamics.CidsBean; /** * DOCUMENT ME! * * @author Gilles Baatz * @version $Revision$, $Date$ */ public class LoadRelationshipPanel extends javax.swing.JPanel { //~ Static fields/initializers --------------------------------------------- private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(LoadRelationshipPanel.class); //~ Instance fields -------------------------------------------------------- private Integer resourceId; // Variables declaration - do not modify//GEN-BEGIN:variables private org.jdesktop.swingx.JXBusyLabel blblBusy; private javax.swing.JPanel pnlBusy; private javax.swing.JPanel pnlRelationship; private de.cismet.cids.custom.switchon.objectrenderer.RelationshipRenderer relationshipRenderer; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form LoadRelationshipPanel. */ public LoadRelationshipPanel() { 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() { final java.awt.GridBagConstraints gridBagConstraints; pnlBusy = new javax.swing.JPanel(); blblBusy = new org.jdesktop.swingx.JXBusyLabel(); pnlRelationship = new javax.swing.JPanel(); relationshipRenderer = new de.cismet.cids.custom.switchon.objectrenderer.RelationshipRenderer(); setLayout(new java.awt.CardLayout()); pnlBusy.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText( blblBusy, org.openide.util.NbBundle.getMessage(LoadRelationshipPanel.class, "LoadRelationshipPanel.blblBusy.text")); // NOI18N pnlBusy.add(blblBusy, new java.awt.GridBagConstraints()); add(pnlBusy, "BUSY"); pnlRelationship.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(5, 5, 5, 5); pnlRelationship.add(relationshipRenderer, gridBagConstraints); add(pnlRelationship, "RELATIONSHIP"); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param resourceId DOCUMENT ME! */ public void setResourceId(final int resourceId) { if ((this.resourceId == null) || !this.resourceId.equals(resourceId)) { this.resourceId = resourceId; new RelationshipLoader(resourceId).execute(); } } //~ Inner Classes ---------------------------------------------------------- /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ private class RelationshipLoader extends SwingWorker<CidsBean, Void> { //~ Instance fields ---------------------------------------------------- private final int resourceId; //~ Constructors ------------------------------------------------------- /** * Creates a new RelationshipLoader object. * * @param resourceId DOCUMENT ME! */ public RelationshipLoader(final int resourceId) { this.resourceId = resourceId; blblBusy.setBusy(true); ((CardLayout)LoadRelationshipPanel.this.getLayout()).show(LoadRelationshipPanel.this, "BUSY"); // NOI18N } //~ Methods ------------------------------------------------------------ /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws Exception DOCUMENT ME! */ @Override protected CidsBean doInBackground() throws Exception { final MetaObjectProvenanceRelationshipSearchStatement searchStatement = new MetaObjectProvenanceRelationshipSearchStatement(SessionManager.getSession().getUser(), resourceId); final Collection searchResult = SessionManager.getConnection() .customServerSearch(SessionManager.getSession().getUser(), searchStatement); if ((searchResult == null) || searchResult.isEmpty()) { return null; } else { final MetaObject mo = (MetaObject)searchResult.iterator().next(); return mo.getBean(); } } /** * DOCUMENT ME! */ @Override protected void done() { try { final CidsBean relationship = get(); if (relationship != null) { relationshipRenderer.setCidsBean(relationship); ((CardLayout)LoadRelationshipPanel.this.getLayout()).show( LoadRelationshipPanel.this, "RELATIONSHIP"); // NOI18N } else { blblBusy.setText(org.openide.util.NbBundle.getMessage( LoadRelationshipPanel.class, "RelationshipLoader.done.noRelationship")); } } catch (InterruptedException ex) { LOG.error(ex, ex); blblBusy.setText(org.openide.util.NbBundle.getMessage( LoadRelationshipPanel.class, "RelationshipLoader.done.noRelationship.error")); } catch (ExecutionException ex) { LOG.error(ex, ex); blblBusy.setText(org.openide.util.NbBundle.getMessage( LoadRelationshipPanel.class, "RelationshipLoader.done.noRelationship.error")); } finally { blblBusy.setBusy(false); } } } }