+ if (forIdPanel)
+ {
+ addDisplayColumnsMenu();
+ }
+
+ addLinksAndFeatures(seq, column);
+ }
+
+ void addDisplayColumnsMenu()
+ {
+ JMenu dis_cols = new JMenu(
+ MessageManager.getString("action.displayed_columns"));
+ final IdColumns id_cols = ap.av.getIdColumns();
+ id_cols.updateTypeList();
+ for (final IdColumn col : id_cols.getIdColumns())
+ {
+ JMenuItem col_entry = new JCheckBoxMenuItem(col.getLabel(),
+ col.isVisible());
+ col_entry.addActionListener(new ActionListener()
+ {
+
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ id_cols.toggleVisible(col.getLabel());
+ }
+ });
+ dis_cols.add(col_entry);
+ }
+ add(dis_cols);
+ }
+
+ /**
+ * Adds
+ * <ul>
+ * <li>configured sequence database links (ID panel popup menu)</li>
+ * <li>non-positional feature links (ID panel popup menu)</li>
+ * <li>positional feature links (alignment panel popup menu)</li>
+ * <li>feature details links (alignment panel popup menu)</li>
+ * </ul>
+ * If this panel is also showed complementary (CDS/protein) features, then
+ * links to their feature details are also added.
+ *
+ * @param seq
+ * @param column
+ */
+ void addLinksAndFeatures(final SequenceI seq, final int column)
+ {
+ List<SequenceFeature> features = null;
+ if (forIdPanel)
+ {
+ features = sequence.getFeatures().getNonPositionalFeatures();
+ }
+ else
+ {
+ features = ap.getFeatureRenderer().findFeaturesAtColumn(sequence,
+ column + 1);
+ }
+