/* * 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.gui; import jalview.api.AlignViewportI; import java.awt.Color; import java.awt.Cursor; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JPanel; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ @SuppressWarnings("serial") public class IdwidthAdjuster extends JPanel { int oldX = 0; /** * Creates a new IdwidthAdjuster object above the id panel that can be dragged * to change the panel's width * * @param ap * The associated AlignmentPanel * */ public IdwidthAdjuster(AlignmentPanel ap) { // BH 2019.07.01 no need for overridden paintComponent, especially as it was // overriding paint(g) so // allowing strange component painting in its place. setBackground(Color.white); setOpaque(true); setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR)); // BH 2019.07.01 MouseAdapter is cleaner - no need for fields active or ap MouseAdapter ma = (new MouseAdapter() { @Override public void mousePressed(MouseEvent evt) { oldX = evt.getX(); } @Override public void mouseDragged(MouseEvent evt) { AlignViewportI viewport = ap.getAlignViewport(); int curwidth = viewport.getIdWidth(); int dif = evt.getX() - oldX; int newWidth = curwidth + dif; if ((newWidth > 20) || (dif > 0)) { viewport.setIdWidth(newWidth); ap.paintAlignment(true, false); } oldX = evt.getX(); } @Override public void mouseReleased(MouseEvent evt) { // If in a SplitFrame with co-scaled alignments, set the other's id // width to match AlignViewportI viewport = ap.getAlignViewport(); if (viewport.getCodingComplement() != null && viewport.isScaleProteinAsCdna()) { viewport.getCodingComplement().setIdWidth(viewport.getIdWidth()); SplitFrame sf = (SplitFrame) ap.alignFrame .getSplitViewContainer(); sf.repaint(); } } }); addMouseListener(ma); addMouseMotionListener(ma); } }