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