+ alignPanels.add(alignPanel);\r
+\r
+ String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", "No sort");\r
+\r
+ if(sortby.equals("Id"))\r
+ sortIDMenuItem_actionPerformed(null);\r
+ else if(sortby.equals("Pairwise Identity"))\r
+ sortPairwiseMenuItem_actionPerformed(null);\r
+\r
+ // remove(tabbedPane);\r
+ getContentPane().add(alignPanel, BorderLayout.CENTER);\r
+\r
+\r
+\r
+ // tabbedPane.add(al.isNucleotide() ? "DNA":"Protein", alignPanel);\r
+\r
+ ///Dataset tab\r
+ /////////////////////////\r
+ if(al.getDataset()==null)\r
+ {\r
+ al.setDataset(null);\r
+ }\r
+ // AlignViewport ds = new AlignViewport(al.getDataset(), true);\r
+ // AlignmentPanel dap = new AlignmentPanel(this, ds);\r
+ // tabbedPane.add("Dataset", dap);\r
+ // viewports.add(ds);\r
+ // alignPanels.add(dap);\r
+ /////////////////////////\r
+\r
+\r
+ viewport.addPropertyChangeListener(new PropertyChangeListener()\r
+ {\r
+ public void propertyChange(PropertyChangeEvent evt)\r
+ {\r
+ if (evt.getPropertyName().equals("alignment"))\r
+ {\r
+ alignmentChanged();\r
+ }\r
+ }\r
+ });\r
+\r
+\r
+ if (Desktop.desktop != null)\r
+ {\r
+ addServiceListeners();\r
+ setGUINucleotide(al.isNucleotide());\r
+ }\r
+ }\r
+\r
+ /* Set up intrinsic listeners for dynamically generated GUI bits. */\r
+ private void addServiceListeners()\r
+ {\r
+ final java.beans.PropertyChangeListener thisListener;\r
+ // Do this once to get current state\r
+ BuildWebServiceMenu();\r
+ Desktop.discoverer.addPropertyChangeListener(\r
+ thisListener = new java.beans.PropertyChangeListener()\r
+ {\r
+ public void propertyChange(PropertyChangeEvent evt)\r
+ {\r
+ // System.out.println("Discoverer property change.");\r
+ if (evt.getPropertyName().equals("services"))\r
+ {\r
+ // System.out.println("Rebuilding web service menu");\r
+ BuildWebServiceMenu();\r
+ }\r
+ }\r
+ });\r
+ addInternalFrameListener(new javax.swing.event.\r
+ InternalFrameAdapter()\r
+ {\r
+ public void internalFrameClosed(\r
+ javax.swing.event.InternalFrameEvent evt)\r
+ {\r
+ // System.out.println("deregistering discoverer listener");\r
+ Desktop.discoverer.removePropertyChangeListener(thisListener);\r
+ closeMenuItem_actionPerformed(null);\r
+ }\r
+ ;\r
+ });\r
+\r
+ }\r
+\r
+ public void setGUINucleotide(boolean nucleotide)\r
+ {\r
+ showTranslation.setVisible( nucleotide );\r
+ sequenceFeatures.setVisible(!nucleotide );\r
+ featureSettings.setVisible( !nucleotide );\r
+ conservationMenuItem.setVisible( !nucleotide );\r
+ modifyConservation.setVisible( !nucleotide );\r
+\r
+ //Deal with separators\r
+ //Remember AlignFrame always starts as protein\r
+ if(nucleotide)\r
+ {\r
+ viewMenu.remove(viewMenu.getItemCount()-2);\r
+ }\r
+ else\r
+ {\r
+ calculateMenu.remove(calculateMenu.getItemCount()-2);\r
+ }\r
+ }\r
+\r
+\r
+ /*\r
+ Added so Castor Mapping file can obtain Jalview Version\r
+ */\r
+ public String getVersion()\r
+ {\r
+ return jalview.bin.Cache.getProperty("VERSION");\r
+ }\r
+\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param String DOCUMENT ME!\r
+ */\r
+\r
+ public void parseGroupsFile(String file)\r
+ {\r
+ try\r
+ {\r
+ BufferedReader in = new BufferedReader(new FileReader(file));\r
+ SequenceI seq = null;\r
+ String line, type, desc, token;\r
+\r
+ int index, start, end;\r
+ StringTokenizer st;\r
+ SequenceFeature sf;\r
+ FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer();\r
+ int lineNo = 0;\r
+ while ( (line = in.readLine()) != null)\r
+ {\r
+ lineNo++;\r
+ st = new StringTokenizer(line, "\t");\r
+ if (st.countTokens() == 2)\r
+ {\r
+ type = st.nextToken();\r
+ UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
+ fr.setColour(type, ucs.findColour("A"));\r
+ continue;\r
+ }\r
+\r
+ while (st.hasMoreElements())\r
+ {\r
+ desc = st.nextToken();\r
+ token = st.nextToken();\r
+ if (!token.equals("ID_NOT_SPECIFIED"))\r
+ {\r
+ index = viewport.alignment.findIndex(viewport.alignment.findName(\r
+ token));\r
+ st.nextToken();\r
+ }\r
+ else\r
+ {\r
+ index = Integer.parseInt(st.nextToken());\r
+ }\r
+\r
+ start = Integer.parseInt(st.nextToken());\r
+ end = Integer.parseInt(st.nextToken());\r
+\r
+ seq = viewport.alignment.getSequenceAt(index);\r
+ start = seq.findIndex(start) - 1;\r
+ end = seq.findIndex(end) - 1;\r
+\r
+ type = st.nextToken();\r
+\r
+ if (fr.getColour(type) == null)\r
+ {\r
+ // Probably the old style groups file\r
+ UserColourScheme ucs = new UserColourScheme(type);\r
+ fr.setColour(type, ucs.findColour("A"));\r
+ }\r
+\r
+\r
+ sf = new SequenceFeature(type, desc, "", start, end);\r
+\r
+ seq.getDatasetSequence().addSequenceFeature(sf);\r
+\r
+\r
+ // sg = new SequenceGroup(text, ucs, true, true, false, start, end);\r
+ // sg.addSequence(seq, false);\r
+\r
+ // viewport.alignment.addGroup(sg);\r
+\r
+ }\r
+ }\r
+\r
+ viewport.showSequenceFeatures = true;\r
+\r
+ alignPanel.repaint();\r
+\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ System.out.println("Error parsing groups file: " + ex);\r
+ }\r