- BufferedImage miniMe;\r
- AlignViewport av;\r
- AlignmentPanel ap;\r
- float scalew = 1f;\r
- float scaleh = 1f;\r
-\r
- int width, sequencesHeight;\r
- int graphHeight=30;\r
- int boxX=-1, boxY=-1, boxWidth=-1, boxHeight=-1;\r
-\r
- boolean resizing = false;\r
-\r
- public OverviewPanel(AlignmentPanel ap)\r
- {\r
- this.av = ap.av;\r
- this.ap = ap;\r
- setLayout(null);\r
-\r
- // scale the initial size of overviewpanel to shape of alignment\r
- float initialScale = (float)av.alignment.getWidth()/(float)av.alignment.getHeight();\r
- if(av.alignment.getWidth() > av.alignment.getHeight())\r
+ BufferedImage miniMe;\r
+ AlignViewport av;\r
+ AlignmentPanel ap;\r
+ float scalew = 1f;\r
+ float scaleh = 1f;\r
+ int width;\r
+ int sequencesHeight;\r
+ int graphHeight = 20;\r
+ int boxX = -1;\r
+ int boxY = -1;\r
+ int boxWidth = -1;\r
+ int boxHeight = -1;\r
+ boolean resizing = false;\r
+\r
+ // Can set different properties in this seqCanvas than\r
+ // main visible SeqCanvas\r
+ SequenceRenderer sr;\r
+ FeatureRenderer fr;\r
+\r
+ /**\r
+ * Creates a new OverviewPanel object.\r
+ *\r
+ * @param ap DOCUMENT ME!\r
+ */\r
+ public OverviewPanel(AlignmentPanel ap)\r
+ {\r
+ 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
+ }\r
+\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ */\r
+ void checkValid()\r