X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=e49eb17b822f8543028d097c8a543cf0d6564346;hb=5929445a0af66d200677bf23b26f4bdbab2e4c0c;hp=d550651baac0b7d3f41a8e7732fb247eda499f03;hpb=c65705aaa543f77ae4340ddb9d3691041c210f14;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index d550651..e49eb17 100755 --- a/src/jalview/gui/ScalePanel.java +++ b/src/jalview/gui/ScalePanel.java @@ -8,9 +8,7 @@ import javax.swing.*; public class ScalePanel extends JPanel { - protected ScaleCanvas scaleCanvas; - - protected int offy; + protected int offy = 4; public int width; protected AlignViewport av; @@ -23,9 +21,6 @@ public class ScalePanel extends JPanel this.av = av; this.ap = ap; - scaleCanvas = new ScaleCanvas(av); - setLayout(new BorderLayout()); - add(scaleCanvas, BorderLayout.CENTER); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent evt) @@ -48,13 +43,6 @@ public class ScalePanel extends JPanel } - public Dimension getMinimumSize() { - return scaleCanvas.getMinimumSize(); - } - - public Dimension getPreferredSize() { - return scaleCanvas.getPreferredSize(); - } public void doMousePressed(MouseEvent evt) { int x = evt.getX(); @@ -73,9 +61,11 @@ public class ScalePanel extends JPanel sg.setStartRes(res); sg.setEndRes(res); + + ap.annotationPanel.addEditableColumn(res); } - av.setRubberbandGroup(sg); - ap.RefreshPanels(); + av.setSelectionGroup(sg); + ap.repaint(); } public void doMouseReleased(MouseEvent evt) @@ -89,7 +79,7 @@ public class ScalePanel extends JPanel if (! av.getColumnSelection().contains(res)) av.getColumnSelection().addElement(res); - SequenceGroup sg = av.getRubberbandGroup(); + SequenceGroup sg = av.getSelectionGroup(); if(res>sg.getStartRes()) sg.setEndRes(res); @@ -97,7 +87,7 @@ public class ScalePanel extends JPanel sg.setStartRes(res); stretchingGroup = false; - ap.RefreshPanels(); + ap.repaint(); } public void doMouseDragged(MouseEvent evt) @@ -105,7 +95,7 @@ public class ScalePanel extends JPanel int x = evt.getX(); int res = x/av.getCharWidth() + av.getStartRes(); - SequenceGroup sg = av.getRubberbandGroup(); + SequenceGroup sg = av.getSelectionGroup(); if(sg!=null) { stretchingGroup = true; @@ -114,8 +104,92 @@ public class ScalePanel extends JPanel else if (res < sg.getStartRes()) sg.setStartRes(res); - ap.RefreshPanels(); + ap.annotationPanel.addEditableColumn(res); + ap.repaint(); + } + } + + public void paintComponent(Graphics g) + { + drawScale(g, av.getStartRes(), av.getEndRes(), getWidth()); + } + +// scalewidth will normally be screenwidth, + public void drawScale(Graphics g, int startx, int endx, int scaleWidth) + { + Graphics2D gg = (Graphics2D)g; + gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); + int charWidth = av.getCharWidth(); + + gg.setFont(av.getFont()); + + //Fill in the background + + gg.setColor(Color.white); + gg.fillRect(0,0,scaleWidth, getHeight()); + + int resWidth = endx - startx + 1; + + // We want roughly one tick every 50 pixels + + double rough = scaleWidth/50.0; + + double roughtick = resWidth/rough; + + int digits = (int)(Math.log(roughtick)/Math.log(10)); + int num = (int)(roughtick/Math.pow(10,digits)); + + if (roughtick>5) + num = 10; + else + num = 5; + + // else + // num = 2; + + // System.out.println("Dig " + digits + " " + rough + " " + roughtick + " " + getWidth() + " " + num); + + int space = (int)(num * Math.pow(10,digits)); + + //Set the text font + + gg.setColor(Color.black); + + + int scalestartx = 0; + if(space>0) + scalestartx = startx - startx%space + space; + + + //Fill the selected columns + ColumnSelection cs = av.getColumnSelection(); + int width = charWidth; + if (width == 0) + width = 1; + + gg.setColor(new Color(220,0,0)); + for (int i=0; i