X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=4a217811f55fdab4c723d8cdfa13daeaa2f8a3b1;hb=3b20f512421e707431c326189dbf7d8755968baa;hp=4d79b655448287c3a4b1f5e8ee3c6353a37cd3aa;hpb=f07bd6beab15adeb8c314adaf4ae9ef63dafd5d4;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 4d79b65..4a21781 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -27,10 +27,10 @@ import jalview.schemes.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; - import java.io.*; - import javax.swing.*; +import java.beans.*; + /** @@ -81,197 +81,54 @@ public class AlignmentPanel extends GAlignmentPanel annotationPanel = new AnnotationPanel(this); alabels = new AnnotationLabels(this); - annotationScroller.setViewportView(annotationPanel); annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER); fontChanged(); scalePanelHolder.add(scalePanel, BorderLayout.CENTER); - seqPanelHolder.add(seqPanel, BorderLayout.CENTER); + seqPanelHolder.add(seqPanel, BorderLayout.CENTER); setScrollValues(0, 0); - adjustAnnotationHeight(); - setAnnotationVisible(av.getShowAnnotation()); hscroll.addAdjustmentListener(this); vscroll.addAdjustmentListener(this); - af.addKeyListener(new KeyAdapter() + final AlignmentPanel ap = this; + av.addPropertyChangeListener(new PropertyChangeListener() { - public void keyPressed(KeyEvent evt) + public void propertyChange(PropertyChangeEvent evt) { - if(av.cursorMode - && evt.getKeyCode()>=KeyEvent.VK_0 - && evt.getKeyCode()<=KeyEvent.VK_9) + if (evt.getPropertyName().equals("alignment")) { - seqPanel.numberPressed(evt.getKeyChar()); + PaintRefresher.Refresh(ap, + av.getSequenceSetId(), + true, + true); + alignmentChanged(); } + } + }); - switch (evt.getKeyCode()) - { - case 27: // escape key - alignFrame.deselectAllSequenceMenuItem_actionPerformed(null); - - break; - - case KeyEvent.VK_DOWN: - if(av.cursorMode) - { - seqPanel.moveCursor(0,1); - } - else - alignFrame.moveSelectedSequences(false); - break; - - case KeyEvent.VK_UP: - if (av.cursorMode) - { - seqPanel.moveCursor(0,-1); - } - else - alignFrame.moveSelectedSequences(true); - break; - - case KeyEvent.VK_LEFT: - if(av.cursorMode) - { - seqPanel.moveCursor(-1,0); - } - break; - - case KeyEvent.VK_RIGHT: - if (av.cursorMode) - { - seqPanel.moveCursor(1,0); - } - break; - - case KeyEvent.VK_SPACE: - if(av.cursorMode) - { - seqPanel.insertGapAtCursor(evt.isControlDown() || evt.isShiftDown()); - } - break; + adjustAnnotationHeight(); - case KeyEvent.VK_DELETE: - case KeyEvent.VK_BACK_SPACE: - if(!av.cursorMode) - { - alignFrame.cut_actionPerformed(null); - } - else - seqPanel.deleteGapAtCursor(evt.isControlDown() || evt.isShiftDown()); + } - break; + public void alignmentChanged() + { + av.alignmentChanged(this); - case KeyEvent.VK_S: - if(av.cursorMode) - { - seqPanel.setCursorRow(); - } - break; - case KeyEvent.VK_C: - if(av.cursorMode && !evt.isControlDown()) - { - seqPanel.setCursorColumn(); - } - break; - case KeyEvent.VK_P: - if(av.cursorMode) - { - seqPanel.setCursorPosition(); - } - break; + if (overviewPanel != null) + overviewPanel.updateOverviewImage(); - case KeyEvent.VK_ENTER: - case KeyEvent.VK_COMMA: - if(av.cursorMode) - { - seqPanel.setCursorRowAndColumn(); - } - break; + alignFrame.updateEditMenuBar(); - case KeyEvent.VK_Q: - if(av.cursorMode) - { - seqPanel.setSelectionAreaAtCursor(true); - } - break; - case KeyEvent.VK_M: - if(av.cursorMode) - { - seqPanel.setSelectionAreaAtCursor(false); - } - break; - - case KeyEvent.VK_F2: - av.cursorMode = ! av.cursorMode; - alignFrame.statusBar.setText("Keyboard editing mode is "+ - (av.cursorMode ? "on" : "off")); - if(av.cursorMode) - { - seqPanel.seqCanvas.cursorX = av.startRes; - seqPanel.seqCanvas.cursorY = av.startSeq; - } - seqPanel.seqCanvas.repaint(); - break; - - case KeyEvent.VK_F1: - try - { - ClassLoader cl = jalview.gui.Desktop.class.getClassLoader(); - java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help"); - javax.help.HelpSet hs = new javax.help.HelpSet(cl, url); + repaint(); + } - javax.help.HelpBroker hb = hs.createHelpBroker(); - hb.setCurrentID("home"); - hb.setDisplayed(true); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - break; - case KeyEvent.VK_H: - { - boolean toggleSeqs = !evt.isControlDown(); - boolean toggleCols = !evt.isShiftDown(); - - boolean hide = false; - - SequenceGroup sg = av.getSelectionGroup(); - if(toggleSeqs) - { - if(sg != null && sg.getSize(false) != av.alignment.getHeight()) - { - alignFrame.hideSelSequences_actionPerformed(null); - hide = true; - } - else if (!(toggleCols && av.colSel.getSelected().size() > 0)) - alignFrame.showAllSeqs_actionPerformed(null); - } - - if (toggleCols) - { - if(av.colSel.getSelected().size() > 0) - { - alignFrame.hideSelColumns_actionPerformed(null); - if(!toggleSeqs) - av.selectionGroup = sg; - } - else if(!hide) - alignFrame.showAllColumns_actionPerformed(null); - } - break; - } - } - } - }); - } /** * DOCUMENT ME! @@ -296,19 +153,6 @@ public class AlignmentPanel extends GAlignmentPanel idPanel.idCanvas.setPreferredSize(d); hscrollFillerPanel.setPreferredSize(d); - if (av.getWrapAlignment()) - { - int max = av.alignment.getWidth() / - seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); - vscroll.setMaximum(max); - vscroll.setUnitIncrement(1); - vscroll.setVisibleAmount(1); - } - else - { - setScrollValues(av.getStartRes(), av.getStartSeq()); - } - if (overviewPanel != null) overviewPanel.setBoxPosition(); @@ -341,9 +185,7 @@ public class AlignmentPanel extends GAlignmentPanel if (fm.stringWidth(id) > idWidth) { - idWidth = fm.stringWidth(id); - System.out.println(id+" "+idWidth); } i++; @@ -368,7 +210,7 @@ public class AlignmentPanel extends GAlignmentPanel i++; } } - System.out.println(idWidth); + return new Dimension(idWidth, 12); } @@ -451,34 +293,27 @@ public class AlignmentPanel extends GAlignmentPanel public void adjustAnnotationHeight() { - javax.swing.SwingUtilities.invokeLater(new Runnable() + if (alignFrame.getHeight() == 0) { - public void run() - { - while(alignFrame.getHeight()==0) - { - Thread.yield(); - } + System.out.println("NEEDS FIXING"); + } - int height = annotationPanel.adjustPanelHeight(); + int height = annotationPanel.adjustPanelHeight(); - if (height > alignFrame.getHeight() / 2) - { - height = alignFrame.getHeight() / 2; - } + if (height > alignFrame.getHeight() / 2) + { + height = alignFrame.getHeight() / 2; + } - annotationScroller.setPreferredSize( - new Dimension(annotationScroller.getWidth(), - height)); + annotationScroller.setPreferredSize( + new Dimension(annotationScroller.getWidth(), + height)); - annotationSpaceFillerHolder.setPreferredSize(new Dimension( - annotationSpaceFillerHolder.getWidth(), - height)); + annotationSpaceFillerHolder.setPreferredSize(new Dimension( + annotationSpaceFillerHolder.getWidth(), + height)); - annotationPanel.repaint(); - repaint(); - } - }); + repaint(); } /** @@ -738,14 +573,17 @@ public class AlignmentPanel extends GAlignmentPanel if (av.hasHiddenColumns) maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1; - int max = maxwidth / - seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) + - 1; - - - vscroll.setMaximum(max); - vscroll.setUnitIncrement(1); - vscroll.setVisibleAmount(1); + int canvasWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + if(canvasWidth>0) + { + int max = maxwidth / + seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas. + getWidth()) + + 1; + vscroll.setMaximum(max); + vscroll.setUnitIncrement(1); + vscroll.setVisibleAmount(1); + } } else { @@ -755,7 +593,6 @@ public class AlignmentPanel extends GAlignmentPanel if( this.getVisibleRect().getBounds() == g.getClipBounds() && overviewPanel != null) overviewPanel.updateOverviewImage(); - } /** @@ -874,21 +711,21 @@ public class AlignmentPanel extends GAlignmentPanel Color currentColor = null; Color currentTextColor = null; - pg.setFont(new Font(av.getFont().getName(), - Font.ITALIC, - av.getFont().getSize())); + pg.setFont(idPanel.idCanvas.idfont); + + SequenceI seq; for (int i = startSeq; i < endSeq; i++) { + seq = av.getAlignment().getSequenceAt(i); if ( (av.getSelectionGroup() != null) && - av.getSelectionGroup().getSequences(false).contains( - av.getAlignment().getSequenceAt(i))) + av.getSelectionGroup().getSequences(null).contains(seq)) { currentColor = Color.gray; currentTextColor = Color.black; } else { - currentColor = av.getAlignment().getSequenceAt(i).getColor(); + currentColor = av.getSequenceColour(seq); currentTextColor = Color.black; } @@ -898,10 +735,17 @@ public class AlignmentPanel extends GAlignmentPanel pg.setColor(currentTextColor); - String string = av.getAlignment().getSequenceAt(i).getDisplayId - ( av.getShowJVSuffix()); + int xPos = 0; + if (av.rightAlignIds) + { + fm = pg.getFontMetrics(); + xPos = idWidth - fm.stringWidth( + seq.getDisplayId(av.getShowJVSuffix()) + ) - 4; + } - pg.drawString(string, 0, + pg.drawString(seq.getDisplayId( av.getShowJVSuffix()), + xPos, ( ( (i - startSeq) * av.charHeight) + av.getCharHeight()) - (av.getCharHeight() / 5)); } @@ -982,18 +826,23 @@ public class AlignmentPanel extends GAlignmentPanel pg.setClip(0, pi * pheight, pwidth, pheight); int ypos = hgap; - Font italic = new Font(av.getFont().getName(), Font.ITALIC, - av.getFont().getSize()); - pg.setFont(italic); + + do { for (int i = 0; i < av.alignment.getHeight(); i++) { + pg.setFont(idPanel.idCanvas.idfont); SequenceI s = av.alignment.getSequenceAt(i); String string = s.getDisplayId( av.getShowJVSuffix()); - - pg.drawString(string, 0, + int xPos = 0; + if (av.rightAlignIds) + { + FontMetrics fm = getFontMetrics(idPanel.idCanvas.idfont); + xPos = idWidth - fm.stringWidth( string ) - 4; + } + pg.drawString(string, xPos, ( (i * av.charHeight) + ypos + av.charHeight) - (av.charHeight / 5)); } @@ -1005,7 +854,6 @@ public class AlignmentPanel extends GAlignmentPanel pg.setFont(av.getFont()); labels.drawComponent(pg, idWidth); - pg.setFont(italic); pg.translate(+3, -ypos - (av.getAlignment().getHeight() * av.charHeight)); @@ -1063,6 +911,9 @@ public class AlignmentPanel extends GAlignmentPanel height += annotationPanel.adjustPanelHeight() + 3; } + try + { + jalview.util.ImageMaker im; if(type==jalview.util.ImageMaker.PNG) im = new jalview.util.ImageMaker(this, @@ -1075,8 +926,6 @@ public class AlignmentPanel extends GAlignmentPanel "Create EPS file from alignment", width, height, file, alignFrame.getTitle() ); - try - { if (av.getWrapAlignment()) { if(im.getGraphics()!=null)