/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.search; import Sirius.navigator.types.treenode.ObjectTreeNode; import Sirius.navigator.ui.ComponentRegistry; import Sirius.server.middleware.types.MetaObjectNode; import org.openide.awt.Mnemonics; import org.openide.util.NbBundle; import java.awt.Dimension; import java.util.ArrayList; import java.util.List; import javax.swing.JLabel; import de.cismet.commons.gui.protocol.AbstractProtocolStepPanel; /** * DOCUMENT ME! * * @author jruiz * @version $Revision$, $Date$ */ public class CidsServerSearchProtocolStepPanel extends AbstractProtocolStepPanel<CidsServerSearchProtocolStep> { // private static final Map<String, ImageIcon> ICON_MAP = new HashMap<String, ImageIcon>(); // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane2; private org.jdesktop.swingx.JXHyperlink jXHyperlink1; private org.jdesktop.swingx.JXHyperlink jXHyperlink2; private org.jdesktop.swingx.JXHyperlink jXHyperlink3; private Sirius.navigator.search.CidsServerSearchProtocolStepResultsTree protocolResultsTree1; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * konstruktor ohne parameter wird für gui designer gebraucht, wenn dieses panel in ein anderes benutzt werden soll. */ public CidsServerSearchProtocolStepPanel() { this(new CidsServerSearchProtocolStepImpl(null, new ArrayList<MetaObjectNode>())); } /** * Creates new form CidsSearchProtocolStepPanel. * * @param cidsSearchProtocolStep DOCUMENT ME! */ public CidsServerSearchProtocolStepPanel(final CidsServerSearchProtocolStep cidsSearchProtocolStep) { super(cidsSearchProtocolStep); initComponents(); jXHyperlink2.setVisible(cidsSearchProtocolStep.isReExecuteSearchEnabled()); protocolResultsTree1.setResultNodes(cidsSearchProtocolStep.getSearchResultNodes().toArray( new MetaObjectNode[0])); if (!protocolResultsTree1.getResultNodes().isEmpty()) { final int maxSize = 10; final JLabel dummy = (JLabel)protocolResultsTree1.getCellRenderer() .getTreeCellRendererComponent( protocolResultsTree1, new ObjectTreeNode((MetaObjectNode)protocolResultsTree1.getResultNodes().get(0)), false, false, false, 0, false); final int height; if (protocolResultsTree1.getResultNodes().size() > maxSize) { height = 4 + (dummy.getPreferredSize().height * maxSize); } else { height = 4 + (dummy.getPreferredSize().height * protocolResultsTree1.getResultNodes().size()); } jScrollPane2.setPreferredSize(new Dimension((int)jScrollPane2.getPreferredSize().getWidth(), height)); } setSearchResultsPanelVisible(false); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ private List<MetaObjectNode> getSearchResultNodesList() { if (getProtocolStep() != null) { final List<MetaObjectNode> searchObjectNodes = ((CidsServerSearchProtocolStep)getProtocolStep()) .getSearchResultNodes(); if (searchObjectNodes != null) { return searchObjectNodes; } } return new ArrayList<MetaObjectNode>(); } /** * 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; jXHyperlink1 = new org.jdesktop.swingx.JXHyperlink(); jPanel1 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); try { protocolResultsTree1 = new Sirius.navigator.search.CidsServerSearchProtocolStepResultsTree(); } catch (java.lang.Exception e1) { e1.printStackTrace(); } jXHyperlink3 = new org.jdesktop.swingx.JXHyperlink(); jXHyperlink2 = new org.jdesktop.swingx.JXHyperlink(); setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText( jXHyperlink1, org.openide.util.NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_hide_multi")); // NOI18N jXHyperlink1.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { jXHyperlink1ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; add(jXHyperlink1, gridBagConstraints); jPanel1.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; add(jPanel1, gridBagConstraints); jPanel2.setLayout(new java.awt.GridBagLayout()); jScrollPane2.setViewportView(protocolResultsTree1); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; jPanel2.add(jScrollPane2, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jXHyperlink3, org.openide.util.NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink3.text")); // NOI18N jXHyperlink3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jXHyperlink3.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { jXHyperlink3ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0); jPanel2.add(jXHyperlink3, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0); add(jPanel2, gridBagConstraints); org.openide.awt.Mnemonics.setLocalizedText( jXHyperlink2, org.openide.util.NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink2.text")); // NOI18N jXHyperlink2.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(final java.awt.event.ActionEvent evt) { jXHyperlink2ActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END; add(jXHyperlink2, gridBagConstraints); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void jXHyperlink1ActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jXHyperlink1ActionPerformed toggleSearchResultsPanelVisibility(); } //GEN-LAST:event_jXHyperlink1ActionPerformed /** * DOCUMENT ME! */ private void toggleSearchResultsPanelVisibility() { setSearchResultsPanelVisible(!jPanel2.isVisible()); } /** * DOCUMENT ME! * * @param visible DOCUMENT ME! */ private void setSearchResultsPanelVisible(final boolean visible) { jPanel2.setVisible(visible); final int size; if (getProtocolStep() != null) { if ((getProtocolStep().getSearchResultNodes() == null) || getProtocolStep().getSearchResultNodes().isEmpty()) { size = 0; } else { size = getProtocolStep().getSearchResultNodes().size(); } jXHyperlink1.setEnabled(size > 0); if (size == 0) { Mnemonics.setLocalizedText( jXHyperlink1, NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_empty")); } else { if (visible) { if (size > 1) { Mnemonics.setLocalizedText( jXHyperlink1, NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_hide_multi", String.valueOf(size))); } else { Mnemonics.setLocalizedText( jXHyperlink1, NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_hide_single", String.valueOf(size))); } } else { if (size > 1) { Mnemonics.setLocalizedText( jXHyperlink1, NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_show_multi", String.valueOf(size))); } else { Mnemonics.setLocalizedText( jXHyperlink1, NbBundle.getMessage( CidsServerSearchProtocolStepPanel.class, "CidsServerSearchProtocolStepPanel.jXHyperlink1.text_show_single", String.valueOf(size))); } } } } revalidate(); } /** * DOCUMENT ME! */ private void loadSearchResultsIntoTree() { final List<MetaObjectNode> mons = getSearchResultNodesList(); ComponentRegistry.getRegistry().getSearchResultsTree().setResultNodes(mons.toArray(new MetaObjectNode[0])); } /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void jXHyperlink2ActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jXHyperlink2ActionPerformed ((CidsServerSearchProtocolStep)getProtocolStep()).reExecuteSearch(); } //GEN-LAST:event_jXHyperlink2ActionPerformed /** * DOCUMENT ME! * * @param evt DOCUMENT ME! */ private void jXHyperlink3ActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jXHyperlink3ActionPerformed loadSearchResultsIntoTree(); } //GEN-LAST:event_jXHyperlink3ActionPerformed }