import java.awt.BorderLayout;
import java.awt.CardLayout;
+import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
+import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
+import javax.swing.ListCellRenderer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
@SuppressWarnings("serial")
/**
- * GUI layout for structure chooser
+ * GUI layout for structure chooser
+ *
* @author tcnofoegbu
*
*/
-public abstract class GStructureChooser extends JPanel implements
- ItemListener
+public abstract class GStructureChooser extends JPanel
+ implements ItemListener
{
protected JPanel statusPanel = new JPanel();
protected JCheckBox chk_invertFilter = new JCheckBox(
MessageManager.getString("label.invert"));
- protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
- "/images/loading.gif"));
+ protected ImageIcon loadingImage = new ImageIcon(
+ getClass().getResource("/images/loading.gif"));
- protected ImageIcon goodImage = new ImageIcon(getClass().getResource(
- "/images/good.png"));
+ protected ImageIcon goodImage = new ImageIcon(
+ getClass().getResource("/images/good.png"));
- protected ImageIcon errorImage = new ImageIcon(getClass().getResource(
- "/images/error.png"));
+ protected ImageIcon errorImage = new ImageIcon(
+ getClass().getResource("/images/error.png"));
- protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
- "/images/warning.gif"));
+ protected ImageIcon warningImage = new ImageIcon(
+ getClass().getResource("/images/warning.gif"));
protected JLabel lbl_warning = new JLabel(warningImage);
// e.printStackTrace();
}
toolTipText = (toolTipText == null ? null
- : (toolTipText.length() > 500 ? JvSwingUtils.wrapTooltip(
- true, "\"" + toolTipText.subSequence(0, 500)
- + "...\"") : JvSwingUtils.wrapTooltip(true,
- toolTipText)));
+ : (toolTipText.length() > 500
+ ? JvSwingUtils.wrapTooltip(true,
+ "\"" + toolTipText.subSequence(0, 500)
+ + "...\"")
+ : JvSwingUtils.wrapTooltip(true, toolTipText)));
return toolTipText;
}
};
*/
private void jbInit() throws Exception
{
- Integer width = tempUserPrefs.get("structureChooser.width") == null ? 800
+ Integer width = tempUserPrefs.get("structureChooser.width") == null
+ ? 800
: tempUserPrefs.get("structureChooser.width");
- Integer height = tempUserPrefs.get("structureChooser.height") == null ? 400
+ Integer height = tempUserPrefs.get("structureChooser.height") == null
+ ? 400
: tempUserPrefs.get("structureChooser.height");
tbl_summary.setAutoCreateRowSorter(true);
tbl_summary.getTableHeader().setReorderingAllowed(false);
scrl_foundStructures.setPreferredSize(new Dimension(width, height));
scrl_localPDB.setPreferredSize(new Dimension(width, height));
- scrl_localPDB
- .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ scrl_localPDB.setHorizontalScrollBarPolicy(
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
cmb_filterOption.setFont(new java.awt.Font("Verdana", 0, 12));
chk_invertFilter.setFont(new java.awt.Font("Verdana", 0, 12));
chk_rememberSettings.setVisible(false);
txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
MessageManager.getString("label.enter_pdb_id")));
- cmb_filterOption.setToolTipText(MessageManager
- .getString("info.select_filter_option"));
+ cmb_filterOption.setToolTipText(
+ MessageManager.getString("info.select_filter_option"));
txt_search.getDocument().addDocumentListener(new DocumentListener()
{
@Override
});
cmb_filterOption.addItemListener(this);
+
+ // add CustomComboSeparatorsRenderer to filter option combo-box
+ cmb_filterOption.setRenderer(new CustomComboSeparatorsRenderer(
+ (ListCellRenderer<Object>) cmb_filterOption.getRenderer())
+ {
+ @Override
+ protected boolean addSeparatorAfter(JList list, FilterOption value,
+ int index)
+ {
+ return value.isAddSeparatorAfter();
+ }
+ });
+
chk_invertFilter.addItemListener(this);
pnl_actions.add(chk_rememberSettings);
btn_view.setVisible(false);
btn_cancel.setVisible(false);
previousWantedFields = pdbDocFieldPrefs
- .getStructureSummaryFields().toArray(
- new FTSDataColumnI[0]);
+ .getStructureSummaryFields()
+ .toArray(new FTSDataColumnI[0]);
}
if (sourceTabbedPane.getTitleAt(index)
.equals(foundStructureSummary))
statusPanel.add(statusBar, null);
this.add(pnl_actionsAndStatus, java.awt.BorderLayout.SOUTH);
- mainFrame
- .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
+ mainFrame.addInternalFrameListener(
+ new javax.swing.event.InternalFrameAdapter()
{
@Override
public void internalFrameClosing(InternalFrameEvent e)
private String view;
- public FilterOption(String name, String value, String view)
+ private boolean addSeparatorAfter;
+
+ /**
+ * Model for structure filter option
+ *
+ * @param name
+ * - the name of the Option
+ * @param value
+ * - the value of the option
+ * @param view
+ * - the category of the filter option
+ * @param addSeparatorAfter
+ * - if true, a horizontal separator is rendered immediately after
+ * this filter option, otherwise
+ */
+ public FilterOption(String name, String value, String view,
+ boolean addSeparatorAfter)
{
this.name = name;
this.value = value;
this.view = view;
+ this.addSeparatorAfter = addSeparatorAfter;
}
public String getName()
{
return this.name;
}
+
+ public boolean isAddSeparatorAfter()
+ {
+ return addSeparatorAfter;
+ }
+
+ public void setAddSeparatorAfter(boolean addSeparatorAfter)
+ {
+ this.addSeparatorAfter = addSeparatorAfter;
+ }
}
/**
public AssociateSeqOptions(SequenceI seq)
{
this.sequence = seq;
- this.name = (seq.getName().length() >= 23) ? seq.getName().substring(
- 0, 23) : seq.getName();
+ this.name = (seq.getName().length() >= 23)
+ ? seq.getName().substring(0, 23)
+ : seq.getName();
}
public AssociateSeqOptions(String name, SequenceI seq)
this.setLayout(new FlowLayout());
this.add(cmb_assSeq);
this.add(lbl_associateSeq);
- cmb_assSeq.setToolTipText(MessageManager
- .getString("info.associate_wit_sequence"));
+ cmb_assSeq.setToolTipText(
+ MessageManager.getString("info.associate_wit_sequence"));
cmb_assSeq.addItemListener(this);
}
return cmb_filterOption;
}
+ /**
+ * Custom ListCellRenderer for adding a separator between different categories
+ * of structure chooser filter option drop-down.
+ *
+ * @author tcnofoegbu
+ *
+ */
+ public abstract class CustomComboSeparatorsRenderer
+ implements ListCellRenderer<Object>
+ {
+ private ListCellRenderer<Object> regent;
+
+ private JPanel separatorPanel = new JPanel(new BorderLayout());
+
+ private JSeparator jSeparator = new JSeparator();
+
+ public CustomComboSeparatorsRenderer(
+ ListCellRenderer<Object> listCellRenderer)
+ {
+ this.regent = listCellRenderer;
+ }
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus)
+ {
+
+ Component comp = regent.getListCellRendererComponent(list, value,
+ index, isSelected, cellHasFocus);
+ if (index != -1
+ && addSeparatorAfter(list, (FilterOption) value, index))
+ {
+ separatorPanel.removeAll();
+ separatorPanel.add(comp, BorderLayout.CENTER);
+ separatorPanel.add(jSeparator, BorderLayout.SOUTH);
+ return separatorPanel;
+ }
+ else
+ {
+ return comp;
+ }
+ }
+
+ protected abstract boolean addSeparatorAfter(JList list,
+ FilterOption value, int index);
+ }
+
protected abstract void stateChanged(ItemEvent e);
protected abstract void ok_ActionPerformed();
protected abstract void txt_search_ActionPerformed();
public abstract void populateCmbAssociateSeqOptions(
- JComboBox<AssociateSeqOptions> cmb_assSeq, JLabel lbl_associateSeq);
+ JComboBox<AssociateSeqOptions> cmb_assSeq,
+ JLabel lbl_associateSeq);
public abstract void cmbAssSeqStateChanged();
public abstract void tabRefresh();
public abstract void validateSelections();
-}
+}
\ No newline at end of file