+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(new StringSelection(output), Desktop.instance);
+
+ ArrayList<int[]> hiddenColumns = null;
+ if (av.hasHiddenColumns())
+ {
+ hiddenColumns = new ArrayList<>();
+ for (int[] region : av.getAlignment().getHiddenColumns()
+ .getHiddenRegions())
+ {
+ hiddenColumns.add(new int[] { region[0], region[1] });
+ }
+ }
+
+ Desktop.jalviewClipboard = new Object[] { seqs, ds, // what is the dataset
+ // of a consensus
+ // sequence ? need to
+ // flag
+ // sequence as special.
+ hiddenColumns };
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param g1
+ * DOCUMENT ME!
+ */
+ @Override
+ public void paintComponent(Graphics g)
+ {
+
+ int width = getWidth();
+ if (width == 0)
+ {
+ width = ap.calculateIdWidth().width + 4;
+ }
+
+ Graphics2D g2 = (Graphics2D) g;
+ if (av.antiAlias)
+ {
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ }
+
+ drawComponent(g2, true, width);
+
+ }
+
+ /**
+ * Draw the full set of annotation Labels for the alignment at the given
+ * cursor
+ *
+ * @param g
+ * Graphics2D instance (needed for font scaling)
+ * @param width
+ * Width for scaling labels
+ *
+ */
+ public void drawComponent(Graphics g, int width)
+ {
+ drawComponent(g, false, width);
+ }
+
+ private final boolean debugRedraw = false;
+
+ /**
+ * Draw the full set of annotation Labels for the alignment at the given
+ * cursor
+ *
+ * @param g
+ * Graphics2D instance (needed for font scaling)
+ * @param clip
+ * - true indicates that only current visible area needs to be
+ * rendered
+ * @param width
+ * Width for scaling labels
+ */
+ public void drawComponent(Graphics g, boolean clip, int width)
+ {
+ if (av.getFont().getSize() < 10)
+ {
+ g.setFont(font);
+ }
+ else
+ {
+ g.setFont(av.getFont());
+ }
+
+ FontMetrics fm = g.getFontMetrics(g.getFont());
+ g.setColor(Color.white);
+ g.fillRect(0, 0, getWidth(), getHeight());
+
+ g.translate(0, getScrollOffset());
+ g.setColor(Color.black);
+
+ AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
+ int fontHeight = g.getFont().getSize();
+ int y = 0;
+ int x = 0;
+ int graphExtras = 0;
+ int offset = 0;
+ Font baseFont = g.getFont();
+ FontMetrics baseMetrics = fm;
+ int ofontH = fontHeight;
+ int sOffset = 0;
+ int visHeight = 0;
+ int[] visr = (ap != null && ap.getAnnotationPanel() != null) ? ap
+ .getAnnotationPanel().getVisibleVRange() : null;
+ if (clip && visr != null)
+ {
+ sOffset = visr[0];
+ visHeight = visr[1];
+ }
+ boolean visible = true, before = false, after = false;
+ if (aa != null)
+ {
+ hasHiddenRows = false;
+ int olY = 0;
+ for (int i = 0; i < aa.length; i++)
+ {
+ visible = true;
+ if (!aa[i].visible)