+ this.av = ap.av;\r
+ this.ap = ap;\r
+ setLayout(null);\r
+\r
+ sr = new SequenceRenderer(av);\r
+ sr.renderGaps = false;\r
+ sr.forOverview = true;\r
+ fr = new FeatureRenderer(av);\r
+\r
+ // scale the initial size of overviewpanel to shape of alignment\r
+ float initialScale = (float) av.alignment.getWidth() / (float) av.alignment.getHeight();\r
+\r
+ if(av.conservation==null)\r
+ graphHeight = 0;\r
+\r
+\r
+ if (av.alignment.getWidth() > av.alignment.getHeight())\r
+ {\r
+ // wider\r
+ width = 400;\r
+ sequencesHeight = (int) (400f / initialScale);\r
+ if(sequencesHeight<40)\r
+ sequencesHeight = 40;\r
+ }\r
+ else\r
+ {\r
+ // taller\r
+ width = (int) (400f * initialScale);\r
+ sequencesHeight = 300;\r
+\r
+ if (width < 120)\r
+ {\r
+ width = 120;\r
+ }\r
+ }\r
+\r
+ addComponentListener(new ComponentAdapter()\r
+ {\r
+ public void componentResized(ComponentEvent evt)\r
+ {\r
+ if ((getWidth() != width) ||\r
+ (getHeight() != (sequencesHeight + graphHeight)))\r
+ {\r
+ updateOverviewImage();\r
+ }\r
+ }\r
+ });\r
+\r
+ addMouseMotionListener(new MouseMotionAdapter()\r
+ {\r
+ public void mouseDragged(MouseEvent evt)\r
+ {\r
+ if (!av.wrapAlignment)\r
+ {\r
+ boxX = evt.getX();\r
+ boxY = evt.getY();\r
+ checkValid();\r
+ }\r
+ }\r
+ });\r
+\r
+ addMouseListener(new MouseAdapter()\r
+ {\r
+ public void mousePressed(MouseEvent evt)\r
+ {\r
+ if(!av.wrapAlignment)\r
+ {\r
+ boxX = evt.getX();\r
+ boxY = evt.getY();\r
+ checkValid();\r
+ }\r
+ }\r
+ });\r
+\r
+ updateOverviewImage();\r