X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=unused%2Fappletgui%2FAnnotationLabels.java;fp=unused%2Fappletgui%2FAnnotationLabels.java;h=ad798ab01f229fac7c46aec3c3c0b38ff067816f;hb=6319110ce33faa76ee6cf9832e78faa224510fed;hp=1d61ce4c4e7b835a80d9aae060c16615dadae910;hpb=7301a2415adab88038b291fc54caeeb3a5a47a44;p=jalviewjs.git
diff --git a/unused/appletgui/AnnotationLabels.java b/unused/appletgui/AnnotationLabels.java
index 1d61ce4..ad798ab 100644
--- a/unused/appletgui/AnnotationLabels.java
+++ b/unused/appletgui/AnnotationLabels.java
@@ -1,862 +1,862 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see .
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.appletgui;
-
-import jalview.analysis.AlignmentUtils;
-import jalview.bin.JalviewLite;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.util.MessageManager;
-import jalview.util.ParseHtmlBodyAndLinks;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.InputEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Vector;
-
-import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JFrame;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-
-public class AnnotationLabels extends JPanel implements ActionListener,
- MouseListener, MouseMotionListener
-{
- Image image;
-
- boolean active = false;
-
- AlignmentPanel ap;
-
- AlignViewport av;
-
- boolean resizing = false;
-
- int oldY, mouseX;
-
- static String ADDNEW = "Add New Row";
-
- static String EDITNAME = "Edit Label/Description";
-
- static String HIDE = "Hide This Row";
-
- static String SHOWALL = "Show All Hidden Rows";
-
- static String OUTPUT_TEXT = "Show Values In Textbox";
-
- static String COPYCONS_SEQ = "Copy Consensus Sequence";
-
- int scrollOffset = 0;
-
- int selectedRow = -1;
-
- Tooltip tooltip;
-
- private boolean hasHiddenRows;
-
- public AnnotationLabels(AlignmentPanel ap)
- {
- this.ap = ap;
- this.av = ap.av;
- setLayout(null);
-
- /**
- * this retrieves the adjustable height glyph from resources. we don't use
- * it at the moment. java.net.URL url =
- * getClass().getResource("/images/idwidth.gif"); Image temp = null;
- *
- * if (url != null) { temp =
- * java.awt.Toolkit.getDefaultToolkit().createImage(url); }
- *
- * try { MediaTracker mt = new MediaTracker(this); mt.addImage(temp, 0);
- * mt.waitForID(0); } catch (Exception ex) { }
- *
- * BufferedImage bi = new BufferedImage(temp.getHeight(this),
- * temp.getWidth(this), BufferedImage.TYPE_INT_RGB); Graphics2D g =
- * (Graphics2D) bi.getGraphics(); g.rotate(Math.toRadians(90));
- * g.drawImage(temp, 0, -bi.getWidth(this), this); image = (Image) bi;
- */
- addMouseListener(this);
- addMouseMotionListener(this);
- }
-
- public AnnotationLabels(AlignViewport av)
- {
- this.av = av;
- }
-
- public void setScrollOffset(int y, boolean repaint)
- {
- scrollOffset = y;
- if (repaint)
- {
- repaint();
- }
- }
-
- /**
- *
- * @param y
- * @return -2 if no rows are visible at all, -1 if no visible rows were
- * selected
- */
- int getSelectedRow(int y)
- {
- int row = -2;
- AlignmentAnnotation[] aa = ap.av.getAlignment()
- .getAlignmentAnnotation();
-
- if (aa == null)
- {
- return row;
- }
- int height = 0;
- for (int i = 0; i < aa.length; i++)
- {
- row = -1;
- if (!aa[i].visible)
- {
- continue;
- }
- height += aa[i].height;
- if (y < height)
- {
- row = i;
- break;
- }
- }
-
- return row;
- }
-
- public void actionPerformed(ActionEvent evt)
- {
- AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
-
- if (evt.getActionCommand().equals(ADDNEW))
- {
- AlignmentAnnotation newAnnotation = new AlignmentAnnotation("", null,
- new Annotation[ap.av.getAlignment().getWidth()]);
-
- if (!editLabelDescription(newAnnotation))
- {
- return;
- }
-
- ap.av.getAlignment().addAnnotation(newAnnotation);
- ap.av.getAlignment().setAnnotationIndex(newAnnotation, 0);
- }
- else if (evt.getActionCommand().equals(EDITNAME))
- {
- editLabelDescription(aa[selectedRow]);
- }
- else if (evt.getActionCommand().equals(HIDE))
- {
- aa[selectedRow].visible = false;
- }
- else if (evt.getActionCommand().equals(SHOWALL))
- {
- for (int i = 0; i < aa.length; i++)
- {
- aa[i].visible = (aa[i].annotations == null) ? false : true;
- }
- }
- else if (evt.getActionCommand().equals(OUTPUT_TEXT))
- {
- CutAndPasteTransfer cap = new CutAndPasteTransfer(false,
- ap.alignFrame);
- JFrame frame = new JFrame();
- frame.add(cap);
- JalviewLite.addFrame(frame, ap.alignFrame.getTitle()
- + " - " + aa[selectedRow].label, 500, 100);
- cap.setText(aa[selectedRow].toString());
- }
- else if (evt.getActionCommand().equals(COPYCONS_SEQ))
- {
- SequenceI cons = av.getConsensusSeq();
- if (cons != null)
- {
- copy_annotseqtoclipboard(cons);
- }
-
- }
- refresh();
- }
-
- /**
- * Adjust size and repaint
- */
- protected void refresh()
- {
- ap.annotationPanel.adjustPanelHeight();
- setSize(getSize().width, ap.annotationPanel.getSize().height);
- ap.validate();
- ap.paintAlignment(true);
- }
-
- boolean editLabelDescription(AlignmentAnnotation annotation)
- {
- JCheckBox padGaps = new JCheckBox("Fill Empty Gaps With \""
- + ap.av.getGapCharacter() + "\"", annotation.padGaps);
-
- EditNameDialog dialog = new EditNameDialog(annotation.label,
- annotation.description, " Annotation Label",
- "Annotation Description", ap.alignFrame,
- "Edit Annotation Name / Description", 500, 180, false);
-
- JPanel empty = new JPanel(new FlowLayout());
- empty.add(padGaps);
- dialog.add(empty);
- dialog.pack();
-
- dialog.setVisible(true);
-
- if (dialog.accept)
- {
- annotation.label = dialog.getName();
- annotation.description = dialog.getDescription();
- annotation.setPadGaps(padGaps.isSelected(), av.getGapCharacter());
- repaint();
- return true;
- }
- else
- {
- return false;
- }
-
- }
-
- boolean resizePanel = false;
-
- public void mouseMoved(MouseEvent evt)
- {
- resizePanel = evt.getY() < 10 && evt.getX() < 14;
- int row = getSelectedRow(evt.getY() + scrollOffset);
-
- if (row > -1)
- {
- ParseHtmlBodyAndLinks phb = new ParseHtmlBodyAndLinks(
- av.getAlignment().getAlignmentAnnotation()[row]
- .getDescription(true),
- true, "\n");
- if (tooltip == null)
- {
- tooltip = new Tooltip(phb.getNonHtmlContent(), this);
- }
- else
- {
- tooltip.setTip(phb.getNonHtmlContent());
- }
- }
- else if (tooltip != null)
- {
- tooltip.setTip("");
- }
- }
-
- /**
- * curent drag position
- */
- MouseEvent dragEvent = null;
-
- /**
- * flag to indicate drag events should be ignored
- */
- private boolean dragCancelled = false;
-
- /**
- * clear any drag events in progress
- */
- public void cancelDrag()
- {
- dragEvent = null;
- dragCancelled = true;
- }
-
- public void mouseDragged(MouseEvent evt)
- {
- if (dragCancelled)
- {
- return;
- }
- ;
- dragEvent = evt;
-
- if (resizePanel)
- {
- Dimension d = ap.annotationPanelHolder.getSize(), e = ap.annotationSpaceFillerHolder
- .getSize(), f = ap.seqPanelHolder.getSize();
- int dif = evt.getY() - oldY;
-
- dif /= ap.av.getCharHeight();
- dif *= ap.av.getCharHeight();
-
- if ((d.height - dif) > 20 && (f.height + dif) > 20)
- {
- ap.annotationPanel.setSize(d.width, d.height - dif);
- setSize(new Dimension(e.width, d.height - dif));
- ap.annotationSpaceFillerHolder.setSize(new Dimension(e.width,
- d.height - dif));
- ap.annotationPanelHolder.setSize(new Dimension(d.width, d.height
- - dif));
- ap.apvscroll.setValues(ap.apvscroll.getValue(), d.height - dif, 0,
- av.calcPanelHeight());
- f.height += dif;
- ap.seqPanelHolder.setPreferredSize(f);
- ap.setScrollValues(av.getStartRes(), av.getStartSeq());
- ap.validate();
- // ap.paintAlignment(true);
- ap.addNotify();
- }
-
- }
- else
- {
- int diff;
- if ((diff = 6 - evt.getY()) > 0)
- {
- // nudge scroll up
- ap.apvscroll.setValue(ap.apvscroll.getValue() - diff);
- ap.adjustmentValueChanged(null);
-
- }
- else if ((0 < (diff = 6
- - ap.annotationSpaceFillerHolder.getSize().height
- + evt.getY())))
- {
- // nudge scroll down
- ap.apvscroll.setValue(ap.apvscroll.getValue() + diff);
- ap.adjustmentValueChanged(null);
- }
- repaint();
- }
- }
-
- public void mouseClicked(MouseEvent evt)
- {
- }
-
- public void mouseReleased(MouseEvent evt)
- {
- if (!resizePanel && !dragCancelled)
- {
- int start = selectedRow;
-
- int end = getSelectedRow(evt.getY() + scrollOffset);
-
- if (start > -1 && start != end)
- {
- // Swap these annotations
- AlignmentAnnotation startAA = ap.av.getAlignment()
- .getAlignmentAnnotation()[start];
- if (end == -1)
- {
- end = ap.av.getAlignment().getAlignmentAnnotation().length - 1;
- }
- AlignmentAnnotation endAA = ap.av.getAlignment()
- .getAlignmentAnnotation()[end];
-
- ap.av.getAlignment().getAlignmentAnnotation()[end] = startAA;
- ap.av.getAlignment().getAlignmentAnnotation()[start] = endAA;
- }
- }
- resizePanel = false;
- dragEvent = null;
- dragCancelled = false;
- repaint();
- ap.annotationPanel.repaint();
- }
-
- public void mouseEntered(MouseEvent evt)
- {
- if (evt.getY() < 10 && evt.getX() < 14)
- {
- resizePanel = true;
- repaint();
- }
- }
-
- public void mouseExited(MouseEvent evt)
- {
- dragCancelled = false;
-
- if (dragEvent == null)
- {
- resizePanel = false;
- }
- else
- {
- if (!resizePanel)
- {
- dragEvent = null;
- }
- }
- repaint();
- }
-
- public void mousePressed(MouseEvent evt)
- {
- oldY = evt.getY();
- if (resizePanel)
- {
- return;
- }
- dragCancelled = false;
- // todo: move below to mouseClicked ?
- selectedRow = getSelectedRow(evt.getY() + scrollOffset);
-
- AlignmentAnnotation[] aa = ap.av.getAlignment()
- .getAlignmentAnnotation();
-
- // DETECT RIGHT MOUSE BUTTON IN AWT
- if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
- {
-
- JPopupMenu popup = new JPopupMenu(
- MessageManager.getString("label.annotations"));
-
- JMenuItem item = new JMenuItem(ADDNEW);
- item.addActionListener(this);
- popup.add(item);
- if (selectedRow < 0)
- {
- // this never happens at moment: - see comment on JAL-563
- if (hasHiddenRows)
- {
- item = new JMenuItem(SHOWALL);
- item.addActionListener(this);
- popup.add(item);
- }
- this.add(popup);
- popup.show(this, evt.getX(), evt.getY());
- return;
- }
- // add the rest if there are actually rows to show
- item = new JMenuItem(EDITNAME);
- item.addActionListener(this);
- popup.add(item);
- item = new JMenuItem(HIDE);
- item.addActionListener(this);
- popup.add(item);
-
- /*
- * Hide all