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